|i<VUddlmZddlZddlZddlZddlZddlZddlmZm Z ddl m Z ddl m ZddlmZmZGdde jZd eDZejejejejejejejejejejejejiZd ed <ejee fZ!eje efZ"ej#d ej$d ej%dej&dej'dejdej(dejdej)di Z*ded<de*+DZ,ejdejdej#diZ-d+dZ.d,dZ/ej0d ej1e e2fe e2d!"Z3Gd#d$ej4e3Z5Gd%d&Z6Gd'd(Z7Gd)d*Z8dS)-) annotationsN)IterableIterator)utils)x509)NameOIDObjectIdentifierc>eZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd S) _ASN1Type N)__name__ __module__ __qualname__ BitString OctetString UTF8String NumericStringPrintableString T61String IA5StringUTCTimeGeneralizedTime VisibleStringUniversalString BMPStringDC:\PYTHON\_runtimes\venv\Lib\site-packages\cryptography/x509/name.pyr r sJIKJMOIIGOMOIIIr(r ci|] }|j| Sr')value).0is r) r."s444Qagq444r(z!dict[ObjectIdentifier, _ASN1Type]_NAMEOID_DEFAULT_TYPECNLSTOOUCSTREETDCUID _OidNameMap_NAMEOID_TO_NAMEci|]\}}|| Sr'r')r,kvs r)r.r.=s>>>TQAq>>>r()r>)@val str | bytesreturnstrc~|sdSt|tr*dtj|dzS|dd}|dd}|dd }|d d }|d d }|dd}|dd}|dd}|ddks|ddkrt |dkrd|z}|ddkr |dddz}|S)z>Escape special characters in RFC4514 Distinguished Name value.#utf8\z\\"z\"+z\+,z\,;z\;z\>z\00r r?Nz\ ) isinstancebytesbinasciihexlifydecodereplacelen)rAs r)_escape_dn_valuerZFs7 r#u:X%c**11&9999 ++dF # #C ++c5 ! !C ++c5 ! !C ++c5 ! !C ++c5 ! !C ++c5 ! !C ++c5 ! !C ++dF # #C 1v}}Q33s88a<<Sj 2w#~~#2#h Jr(cP|sdSd}tj||S)NrFc|d}t|dkr |ddStj|ddS)Nrr>r?rIrF)grouprYrU unhexlifyrXrW)mrAs r)subz_unescape_dn_value..subksZggajj s88q==qrr7N!#++dB"7"788??AAAr()_RFC4514NameParser_PAIR_MULTI_REr`)rAr`s r)_unescape_dn_valuerccs< r BBB  , 0 0c : ::r(NameAttributeValueTypeT) covariantceZdZ dddddZeddZeddZed dZ dd!dZd"dZ d#dZ d dZ dS)$ NameAttributeNT) _validateoidr r+rd_type_ASN1Type | NonerhboolrCNonec2t|tstd|tjkrD|t jkrtdt|tstdn$t|tstdt |}|~|\}}t|tsJt| d}||ks||kr4d|d|d|} |d urt| tj| d |%t |tj}t|tstd ||_||_||_dS) Nz2oid argument must be an ObjectIdentifier instance.z6oid must be X500_UNIQUE_IDENTIFIER for BitString type.z!value must be bytes for BitStringzvalue argument must be a strrHzAttribute's length must be >= z and <= z , but it was Tr>) stacklevelz%_type must be from the _ASN1Type enum)rSr TypeErrorr rrX500_UNIQUE_IDENTIFIERrTrD_NAMEOID_LENGTH_LIMITgetrYencode ValueErrorwarningswarnr/r_oid_valuerj) selfrir+rjrh length_limits min_length max_lengthc_lenmsgs r)__init__zNameAttribute.__init__s#/00 D  I' ' 'g444LeU++ E CDDD EE3'' <:;; ;-11#66  $%2 "J eS)) ) )) V,,--Ez!!UZ%7%7;Z;;$;;38;;$$$S//)M#!4444 =)--c93GHHE%++ ECDD D .3 % r(c|jSN)rxrzs r)rizNameAttribute.oids yr(c|jSr)ryrs r)r+zNameAttribute.values {r(rDcVt|j|jjS)zt The short attribute name (for example "CN") if available, otherwise the OID dotted string. )r:rsri dotted_stringrs r)rfc4514_attribute_namez$NameAttribute.rfc4514_attribute_names!  ##DHdh.DEEEr(attr_name_overrides_OidNameMap | Nonec|r||jnd}||j}|dt|jS)z Format as RFC4514 Distinguished Name string. Use short attribute name if available, otherwise fall back to OID dotted string. N=)rsrirrZr+)rzr attr_names r)rfc4514_stringzNameAttribute.rfc4514_stringsW2E N  # #DH - - -$   3I<<.tz::<<)rir+rs r)__repr__zNameAttribute.__repr__sGTXGGtzGGGGr(r) rir r+rdrjrkrhrlrCrm)rCr )rCrdrCrDrrrCrDrrrCrlrCr) rrrrpropertyrir+rrrrrr'r(r)rgrgs  #' 3&  3&3&3&3&3&3&jXXFFFXF9======"CCCC ,,,,HHHHHHr(rgcReZdZddZddZ ddd ZddZddZddZddZ ddZ d S) RelativeDistinguishedName attributes$Iterable[NameAttribute[str | bytes]]c4t|}|stdtd|Dstd||_t ||_t|jt|krtddS)Nz-a relative distinguished name cannot be emptyc3@K|]}t|tVdSrrSrgr,xs r) z5RelativeDistinguishedName.__init__..s,DDA:a//DDDDDDr(z/attributes must be an iterable of NameAttributez$duplicate attributes are not allowed)listruallrp _attributes frozenset_attribute_setrYrzrs r)rz"RelativeDistinguishedName.__init__s*%%  NLMM MDDDDDDD OMNN N&' 33 t" # #s: 6 6CDD D 7 6r(rir rC list[NameAttribute[str | bytes]]c fd|DS)Nc*g|]}|jk |Sr'rir,r-ris r) zDRelativeDistinguishedName.get_attributes_for_oid.. 000a15C<<<<.F      3 4 4      r()joinrrzrs `r)rz(RelativeDistinguishedName.rfc4514_stringsDxx    (      r(rrrlcZt|tstS|j|jkSr)rSrrrrs r)rz RelativeDistinguishedName.__eq__s,%!:;; "! !"e&:::r(rc*t|jSr)rrrs r)rz"RelativeDistinguishedName.__hash__ sD'(((r($Iterator[NameAttribute[str | bytes]]c*t|jSr)iterrrs r)__iter__z"RelativeDistinguishedName.__iter__sD$%%%r(c*t|jSr)rYrrs r)__len__z!RelativeDistinguishedName.__len__s4#$$$r(c2d|dS)Nz.,s,@@z!]++@@@@@@r(c^g|]*}ttjt|g+Sr')rtypingcastrgrs r)rz!Name.__init__..-s?   *6;}a+H+H*IJJ   r(c3@K|]}t|tVdSr)rSrrs r)rz Name.__init__..1s-NNaA899NNNNNNr(zNattributes must be a list of NameAttribute or a list RelativeDistinguishedName)rrrrrListrrprs r)rz Name.__init__%s *%% @@Z@@@ @ @   #   D   NN:NNN N N %{ 56   D   7 r(NdatarDr_NameOidMap | NonecJt||piSr)raparse)clsrrs r)from_rfc4514_stringzName.from_rfc4514_string;s& "$(;(ArBBHHJJJr(rcjdfdt|jDS)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. rLc3BK|]}|VdSrrrs r)rz&Name.rfc4514_string..Prr()rreversedrrs `r)rzName.rfc4514_stringCsLxx     !122      r(rir rc fd|DS)Nc*g|]}|jk |Sr'rrs r)rz/Name.get_attributes_for_oid..Yrr(r'rs `r)rzName.get_attributes_for_oidUrr(list[RelativeDistinguishedName]c|jSrrrs r)rdnsz Name.rdns[s r(backend typing.AnyrTc*tj|Sr) rust_x509encode_name_bytes)rzrs r) public_byteszName.public_bytes_s*4000r(rrrlcZt|tstS|j|jkSr)rSrrrrs r)rz Name.__eq__bs+%&& "! !5#444r(rcDtt|jSr)rtuplerrs r)rz Name.__hash__hsE$*++,,,r(rc#.K|jD] }|Ed{V dSrr)rzrdns r)rz Name.__iter__ms5#  CNNNNNNNN  r(c>td|jDS)Nc34K|]}t|VdSr)rY)r,rs r)rzName.__len__..rs(883s88888888r()sumrrs r)rz Name.__len__qs"88t'7888888r(c2d|dS)Nz]z [\da-zA-Z]{2}z\\(|)z(\\z)|((\\z)+)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})+rrDr _NameOidMaprCrmc0||_d|_||_dS)Nr)_data_idx_attr_name_overrides)rzrrs r)rz_RFC4514NameParser.__init__s  $7!!!r(rlc<|jt|jkSr)rrYrrs r) _has_dataz_RFC4514NameParser._has_datasy3tz??**r( str | NonecR|r|j|jSdSr)rrrrs r)_peekz_RFC4514NameParser._peeks( >>   ):di( (tr(chcd||krt|xjdz c_dS)Nr?)rrur)rzr s r) _read_charz_RFC4514NameParser._read_chars. ::<<2    Q r(c||j|j}|t|}|xjt |z c_|S)N)pos)matchrrrur]rY)rzpatrrAs r)_read_rez_RFC4514NameParser._read_resN $*$) 44 = kkmm SXX  r(rcr|stgS|g}|rP|d|||Ptt |S)a' 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. rL)rr _parse_rdnr appendr)rzrs r)rz_RFC4514NameParser.parses~~ 88O!!"nn + OOC KK)) * * *nn +HTNN###r(rc"|g}|dkrT|d|||dkTt |S)NrK) _parse_narr rr)rznass r)rz_RFC4514NameParser._parse_rdnsz~~ jjllc!! OOC JJt~~'' ( ( (jjllc!!)---r(NameAttribute[str]c ||j}t|}nf#t$rY||j}|j|t|}|tYnwxYw|d| dkrI||j }tj |dd }n)||j}t|}t!||S)NrrGr?)r_OID_REr ru _DESCR_RErrs_NAME_TO_NAMEOIDr r _HEXSTRING_RErUr^rW _STRING_RErcrg)rz oid_valuerinamer+ raw_values r)rz_RFC4514NameParser._parse_nas, . dl33I#9--CC ! ! !==00D+//&**400C{  {  !  ::<<3  MM$"455E&uQRRy1188::EE do66I&y11ES%(((s,A BBN)rrDrrrCrm)rCrl)rCr)r rDrCrmr)rCr)rCr)rCr) rrrrecompilerr_ESCAPE_SPECIAL _ESCAPE_HEX_PAIRrb_LUTF1_SUTF1_TUTF1chrsys maxunicode_UTFMB _LEADCHAR _STRINGCHAR _TRAILCHARVERBOSErrrrrr rrrrr'r(r)raraxsbj=>>G 233I(O"K 3? 3 3[ 3 3 3ERZ N N Nk N N NOON GF CF GF -ss3>** - - -F%%V%%I''v''K&&f&&J        !&      %       JBJ344M8888 ++++  $$$$*....))))))r(ra)rArBrCrD)rArDrCrD)9 __future__rrUr!r*rrvcollections.abcrr cryptographyr"cryptography.hazmat.bindings._rustrrcryptography.x509.oidrr Enumr _ASN1_TYPE_TO_ENUM COUNTRY_NAMErJURISDICTION_COUNTRY_NAME SERIAL_NUMBER DN_QUALIFIER EMAIL_ADDRESSr!DOMAIN_COMPONENTr/__annotations__MappingrDr9r COMMON_NAME LOCALITY_NAMESTATE_OR_PROVINCE_NAMEORGANIZATION_NAMEORGANIZATIONAL_UNIT_NAMESTREET_ADDRESSUSER_IDr:itemsrrrrZrcTypeVarUnionrTrdGenericrgrrrar'r(r)rKsK #"""""" ........@@@@@@;;;;;;;;        54)444 )3 %y'@ 94 )3 9. i1 <n-s23 nS"223   3 "D s $d # H d OU !    ?>%5%;%;%=%=>>> & %v :;;;;(( Le  aHaHaHaHaHFN#9:aHaHaHH3G3G3G3G3G3G3G3Gl[2[2[2[2[2[2[2[2|j)j)j)j)j)j)j)j)j)j)r(