
    #	h9                       % 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  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(                  \R*                  \R(                  \R,                  \R(                  \R.                  \R(                  \R0                  \R2                  \R4                  \R2                  0rS\S	'   \R:                  \\4   r\R:                  \\4   r \RB                  S
\RD                  S\RF                  S\RH                  S\RJ                  S\R&                  S\RL                  S\R4                  S\RN                  S0	r(S\S'   \(RS                  5        VVs0 s H  u  pX!_M	     snnr*\R&                  S\R*                  S\RB                  S0r+S!S jr,S"S jr- " S S5      r. " S S5      r/ " S S5      r0 " S S 5      r1gs  sn f s  snnf )#    )annotationsN)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       H/var/www/html/env/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)   r6   )   @   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;    rE   Nz\ )
isinstancebytesbinasciihexlifydecodereplace)vals    r)   _escape_dn_valuerN   E   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      $ )Nr7      )grouplenchrint)mrM   s     r)   sub_unescape_dn_value.<locals>.subj   s0    ggajs8q=J3sB<  r(   )_RFC4514NameParser_PAIR_RErW   )rM   rW   s     r)   _unescape_dn_valuer[   b   s&    ! &&**344r(   c                      \ 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)NameAttributeu   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 Tr6   )
stacklevelz%_type must be from the _ASN1Type enum)rG   r   	TypeErrorr	   r   r   X500_UNIQUE_IDENTIFIERrH   str_NAMEOID_LENGTH_LIMITgetrS   encode
ValueErrorwarningswarnr*   r   _oid_value_type)
selfoidvaluerm   r_   length_limits
min_length
max_lengthc_lenmsgs
             r)   __init__NameAttribute.__init__v   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	
r(   c                    U R                   $ N)rk   rn   s    r)   ro   NameAttribute.oid   s    yyr(   c                    U R                   $ ry   )rl   rz   s    r)   rp   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.
)r5   rf   ro   dotted_stringrz   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=)rf   ro   r   rN   rp   )rn   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  $ ry   )rG   r]   NotImplementedro   rp   rn   others     r)   __eq__NameAttribute.__eq__   s:    %//!!xx599$Bu{{)BBr(   c                D    [        U R                  U R                  45      $ ry   )hashro   rp   rz   s    r)   __hash__NameAttribute.__hash__   s    TXXtzz*++r(   c                >    SU R                    SU R                  < S3$ )Nz<NameAttribute(oid=z, value=)>)ro   rp   rz   s    r)   __repr__NameAttribute.__repr__   s    $TXXJhtzznBGGr(   )rk   rm   rl   ry   )
ro   r   rp   str | bytesrm   z_ASN1Type | Noner_   boolreturnNone)r   r   )r   r   r   rd   r   z_OidNameMap | Noner   rd   r   objectr   r   r   rU   )r   r   r   r   rv   propertyro   rp   r   r   r   r   r   r'   r   r(   r)   r]   r]   u   s    
 #'	4 44 4  	4 4 
4l     F F 9==#5=	="C,Hr(   r]   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ry   rG   r]   .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)listrh   allrb   _attributes	frozenset_attribute_setrS   rn   
attributess     r)   rv   "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 ry   ro   rn   ro   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.
r?   c              3  F   >#    U  H  nUR                  T5      v   M     g 7fry   r   r   attrr   s     r)   r   ;RelativeDistinguishedName.rfc4514_string.<locals>.<genexpr>   s'      
(  344(   !joinr   rn   r   s    `r)   r   (RelativeDistinguishedName.rfc4514_string   s)     xx 
((
 
 	
r(   c                j    [        U[        5      (       d  [        $ U R                  UR                  :H  $ ry   )rG   r   r   r   r   s     r)   r    RelativeDistinguishedName.__eq__   s-    %!:;;!!""e&:&:::r(   c                ,    [        U R                  5      $ ry   )r   r   rz   s    r)   r   "RelativeDistinguishedName.__hash__  s    D''((r(   c                ,    [        U R                  5      $ ry   )iterr   rz   s    r)   __iter__"RelativeDistinguishedName.__iter__  s    D$$%%r(   c                ,    [        U R                  5      $ ry   )rS   r   rz   s    r)   __len__!RelativeDistinguishedName.__len__  s    4##$$r(   c                *    SU R                  5        S3$ )Nz<RelativeDistinguishedName(r   r   rz   s    r)   r   "RelativeDistinguishedName.__repr__  s    ,T-@-@-B,C2FFr(   )r   r   )r   typing.Iterable[NameAttribute]ro   r   r   zlist[NameAttribute]ry   r   r   r   r   ztyping.Iterator[NameAttribute]r   )r   r   r   r   rv   r   r   r   r   r   r   r   r'   r   r(   r)   r   r      sQ    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 ry   r   r   s     r)   rv   Name.__init__  s    LOr(   c                    g ry   r   r   s     r)   rv   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ry   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ry   )rG   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castr]   r   Listrb   )rn   r   r   s      r)   rv   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       $ ry   )rY   parse)clsdatar   s      r)   from_rfc4514_stringName.from_rfc4514_string,  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.
r@   c              3  F   >#    U  H  nUR                  T5      v   M     g 7fry   r   r   s     r)   r   &Name.rfc4514_string.<locals>.<genexpr>A  s'      
2  3442r   )r   reversedr   r   s    `r)   r   Name.rfc4514_string4  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 ry   r   r   s      r)   r   Name.get_attributes_for_oidF  r   r   c                    U R                   $ ry   r   rz   s    r)   rdns	Name.rdnsK  s    r(   c                .    [         R                  " U 5      $ ry   )	rust_x509encode_name_bytes)rn   backends     r)   public_bytesName.public_bytesO  s    **400r(   c                j    [        U[        5      (       d  [        $ U R                  UR                  :H  $ ry   )rG   r   r   r   r   s     r)   r   Name.__eq__R  s,    %&&!!5#4#444r(   c                >    [        [        U R                  5      5      $ ry   )r   tupler   rz   s    r)   r   Name.__hash__X  s     E$**+,,r(   c              #  J   #    U R                    H  nU S h  vN   M     g  N	7fry   r   )rn   rdns     r)   r   Name.__iter__]  s     ##CNN $s   #!
#c                :    [        S U R                   5       5      $ )Nc              3  8   #    U  H  n[        U5      v   M     g 7fry   )rS   )r   r   s     r)   r   Name.__len__.<locals>.<genexpr>b  s     8'73s88'7s   )sumr   rz   s    r)   r   Name.__len__a  s    8t'7'7888r(   c                R    SR                  S U R                   5       5      nSU S3$ )Nr@   c              3  @   #    U  H  oR                  5       v   M     g 7fry   r   )r   r   s     r)   r    Name.__repr__.<locals>.<genexpr>e  s     K:J$++--:Js   z<Name(r   r   rn   r   s     r)   r   Name.__repr__d  s+    xxK$:J:JKKvR  r(   r   )r   r   r   r   )r   z*typing.Iterable[RelativeDistinguishedName]r   r   )r   z:typing.Iterable[NameAttribute | RelativeDistinguishedName]r   r   ry   )r   rd   r   z_NameOidMap | Noner   r   r   r   )r   zlist[RelativeDistinguishedName])r   z
typing.Anyr   rH   r   r   r   r   )r   r   r   r   r   overloadrv   classmethodr   r   r   r   r   r   r   r   r   r   r   r'   r   r(   r)   r   r     s    __O O__D	 N 
(  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)"rY   ii  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)rn   r   r   s      r)   rv   _RFC4514NameParser.__init__  s    
	$7!r(   c                F    U R                   [        U R                  5      :  $ ry   )r  rS   r  rz   s    r)   	_has_data_RFC4514NameParser._has_data  s    yy3tzz?**r(   c                `    U R                  5       (       a  U R                  U R                     $ g ry   )r  r  r  rz   s    r)   _peek_RFC4514NameParser._peek  s%    >>::dii((r(   c                b    U R                  5       U:w  a  [        eU =R                  S-  sl        g )Nr7   )r  rh   r  )rn   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  rh   rR   rS   )rn   patr"  rM   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.
r@   )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      $ )Nr?   )	_parse_nar  r  r(  r   )rn   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;   r7   )r$  _OID_REr   rh   	_DESCR_REr  rf   _NAME_TO_NAMEOIDr  r  _HEXSTRING_RErI   	unhexlifyrK   
_STRING_REr[   r]   )rn   	oid_valuero   namerp   	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   rd   r   _NameOidMapr   r   )r   r   )r   z
str | None)r  rd   r   r   r   )r   r   )r   r   )r   r]   ) r   r   r   r   recompiler/  r0  _PAIRrZ   _LUTF1_SUTF1_TUTF1rT   sys
maxunicode_UTFMB	_LEADCHAR_STRINGCHAR
_TRAILCHARVERBOSEr4  r2  rv   r  r  r  r$  r   r'  r+  r'   r   r(   r)   rY   rY   i  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(   rY   )rM   r   r   rd   )rM   rd   r   rd   )2
__future__r   rI   r:  r@  r   ri   cryptographyr   "cryptography.hazmat.bindings._rustr   r   cryptography.x509.oidr   r   Enumr	   rp   _ASN1_TYPE_TO_ENUMCOUNTRY_NAMEr   JURISDICTION_COUNTRY_NAMESERIAL_NUMBERDN_QUALIFIEREMAIL_ADDRESSr!   DOMAIN_COMPONENTr*   __annotations__Mappingrd   r4   r9  COMMON_NAMELOCALITY_NAMESTATE_OR_PROVINCE_NAMEORGANIZATION_NAMEORGANIZATIONAL_UNIT_NAMESTREET_ADDRESSUSER_IDr5   itemsr1  re   rN   r[   r]   r   r   rY   )r   kvs   000r)   <module>r_     s  
 #  	 
    @ ;

  +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&bH bHJ2G 2GjW! W!th) h)Q
 56 ?s   	H H