pg9UddlZddlZddlZddlZddlZddlmZddlmZ ddl m Z m Z Gddej ZdeDZe jeje jeje jeje jeje jeje jejiZeje efed<eje efZejee fZe jd e j d e j!d e j"d e j#d e jde j$de jde j%di Z&eed<de&'DZ(dej)ee*fdefdZ+dedefdZ,GddZ-GddZ.GddZ/GddZ0dS) N)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 BMPString8/usr/lib/python3/dist-packages/cryptography/x509/name.pyrrsJIKJMOIIGOMOIIIr%rci|] }|j| Sr$)value).0is r& r+!s444Qagq444r%_NAMEOID_DEFAULT_TYPECNLSTOOUCSTREETDCUID_NAMEOID_TO_NAMEci|]\}}|| Sr$r$)r)kvs r&r+r+<s>>>TQAq>>>r%valreturnc<|sdSt|tr*dtj|dzS|dd}|dd}|dd }|d d }|d d }|dd}|dd}|dd}|ddvrd|z}|ddkr |dddz}|S)z>Escape special characters in RFC4514 Distinguished Name value.#utf8\z\\"z\"+z\+,z\,;z\;z\>z\00r)r> rHNz\ ) isinstancebytesbinasciihexlifydecodereplace)r:s r&_escape_dn_valuerP?s r#u:X%c**11&9999 ++dF # #C ++c5 ! !C ++c5 ! !C ++c5 ! !C ++c5 ! !C ++c5 ! !C ++c5 ! !C ++dF # #C 1vSj 2w#~~#2#h Jr%cP|sdSd}tj||S)Nr=c|d}t|dkr|Stt|dS)N)grouplenchrint)mr:s r&subz_unescape_dn_value..subds;ggajj s88q==J3sB<<   r%)_RFC4514NameParser_PAIR_RErZ)r:rZs r&_unescape_dn_valuer]\s9 r !!!  & * *3 4 44r%c $eZdZ ddddedejeefdeje de ddf d Z e defd Z e dejeeffd Ze defd Z dd ejedefdZdede fdZdefdZdefdZdS) NameAttributeNT) _validateoidr(_typer`r;c@t|tstd|tjkrD|t jkrtdt|tstdn$t|tstd|t j ks|t j krt|tsJt| d}|dkr|durtd|dkr)tjd |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 strr?Tz/Country name must be a 2 character country codezUCountry names should be two characters, but the attribute is {} characters in length.) stacklevelz%_type must be from the _ASN1Type enum)rJr TypeErrorrrrX500_UNIQUE_IDENTIFIERrKstr COUNTRY_NAMEJURISDICTION_COUNTRY_NAMErVencode ValueErrorwarningswarnformatr,getr_oid_valuerb)selfrar(rbr`c_lens r&__init__zNameAttribute.__init__ps#/00 D  I' ' 'g444LeU++ E CDDD EeS)) @ >??? 7' ' 'g777eS)) ) ) ) V,,--Ezzi4// E! <)rorxs r&__repr__zNameAttribute.__repr__s@GGMMMr%rw)rrrrtypingUnionrhrKOptionalrboolrupropertyrar(r| _OidNameMaprobjectrrXrrr$r%r&r_r_os -1 6  666 6|CJ'6y) 6  6 6666p%Xv|CJ/XFFFFXFCG==#)?;#?= ===="CFCtCCCC ,#,,,,N#NNNNNNr%r_ceZdZdejefdZdedejefdZ ddej e de fdZ d edefd Zdefd Zdejefd Zdefd Zde fdZdS)RelativeDistinguishedName attributesc4t|}|stdtd|Dstd||_t ||_t|jt|krtddS)Nz-a relative distinguished name cannot be emptyc3@K|]}t|tVdSrwrJr_r)xs r& z5RelativeDistinguishedName.__init__..s,DDA:a//DDDDDDr%z/attributes must be an iterable of NameAttributez$duplicate attributes are not allowed)listrlallrf _attributes frozenset_attribute_setrVrsrs r&ruz"RelativeDistinguishedName.__init__s*%%  NLMM MDDDDDDD OMNN N&' 33 t" # #s: 6 6CDD D 7 6r%rar;c fd|DS)Nc*g|]}|jk |Sr$rar)r*ras r& zDRelativeDistinguishedName.get_attributes_for_oid.. 000a15C<<<<.F      3 4 4      r%)joinrrsr}s `r&rz(RelativeDistinguishedName.rfc4514_stringsDxx    (      r%rcZt|tstS|j|jkSrw)rJrrrrs r&rz RelativeDistinguishedName.__eq__s,%!:;; "! !"e&:::r%c*t|jSrw)rrrxs r&rz"RelativeDistinguishedName.__hash__sD'(((r%c*t|jSrw)iterrrxs r&__iter__z"RelativeDistinguishedName.__iter__sD$%%%r%c*t|jSrw)rVrrxs r&__len__z!RelativeDistinguishedName.__len__s4#$$$r%cPd|S)Nz)rorrxs r&rz"RelativeDistinguishedName.__repr__s"0778K8K8M8MNNNr%rw)rrrrIterabler_rurListrrrrhrrrrrXrIteratorrrrr$r%r&rrs9 E6?=#A E E E E1#1 ] #1111 CG   #)?;#?       ;F;t;;;; )#))))&&/-8&&&&%%%%%O#OOOOOOr%rceZdZejdejeddfdZejdejeddfdZdejej eefddfdZe dde dej e ddfd Z ddej ede fd Zd edejefd Zedejefd ZddejdefdZdedefdZdefdZdejefdZdefdZ de fdZ!dS)Namerr;NcdSrwr$rs r&ruz Name.__init__ s r%cdSrwr$rs r&ruz Name.__init__s  r%c*t|}td|Drd|D|_dStd|Dr1tjtjt ||_dStd)Nc3@K|]}t|tVdSrwrrs r&rz Name.__init__..s,@@z!]++@@@@@@r%c^g|]*}ttjt|g+Sr$)rrcastr_rs r&rz!Name.__init__..s?   *6;}a+H+H*IJJ   r%c3@K|]}t|tVdSrw)rJrrs r&rz Name.__init__.."s-NNaA899NNNNNNr%zNattributes must be a list of NameAttribute or a list RelativeDistinguishedName)rrrrrrrrfrs r&ruz Name.__init__s *%% @@Z@@@ @ @   #   D   NN:NNN N N %{ 56   D   7 r%datar}cJt||piSrw)r[parse)clsrr}s r&from_rfc4514_stringzName.from_rfc4514_string,s& "$(;(ArBBHHJJJr%cjdfdt|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. rCc3BK|]}|VdSrwrrs r&rz&Name.rfc4514_string..Arr%)rreversedrrs `r&rzName.rfc4514_string4sLxx     !122      r%rac fd|DS)Nc*g|]}|jk |Sr$rrs r&rz/Name.get_attributes_for_oid..Irr%r$rs `r&rzName.get_attributes_for_oidFrr%c|jSrwrrxs r&rdnsz Name.rdnsKs r%backendc*tj|Srw) rust_x509encode_name_bytes)rsrs r& public_byteszName.public_bytesOs*4000r%rcZt|tstS|j|jkSrw)rJrrrrs r&rz Name.__eq__Rs+%&& "! !5#444r%cDtt|jSrw)rtuplerrxs r&rz Name.__hash__XsE$*++,,,r%c#0K|jD] }|D]}|V dSrwr)rsrdnavas r&rz Name.__iter__]sA#  C      r%c>td|jDS)Nc34K|]}t|VdSrw)rV)r)rs r&rzName.__len__..cs(883s88888888r%)sumrrxs r&rz Name.__len__bs"88t'7888888r%ctdd|jD}d|S)NrCc3>K|]}|VdSrwr)r)rs r&rz Name.__repr__..fs.KK$++--KKKKKKr%z )rrrorsrs r&rz Name.__repr__es9xxKK$:JKKKKK""4(((r%rw)"rrrroverloadrr_rurr classmethodrhr _NameOidMaprrrrrrrrAnyrKrrrrrXrrrrrr$r%r&rr se _ 6?=#A d   _  _  /*CD    _ O L(AA B   ,=AKKK$_[9K  KKK[KCG  #)?;#?     $1#1 ] #1111  fk";<   X 11FJ1%11115F5t5555 -#---- &/-8 99999)#))))))r%rceZdZejdZejdZdZejeZdZ dZ dZ de e jdZe d eZe d eZe d eZejd ed ed ed ed ed ed ejZejdZdededdfdZdefdZdejefdZdeddfdZdefdZde fdZ!de"fdZ#de$fdZ%dS)r[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})+rr}r;Nc0||_d|_||_dS)Nr)_data_idx_attr_name_overrides)rsrr}s r&ruz_RFC4514NameParser.__init__s  $7!!!r%c<|jt|jkSrw)rrVrrxs r& _has_dataz_RFC4514NameParser._has_datasy3tz??**r%cR|r|j|jSdSrw)rrrrxs r&_peekz_RFC4514NameParser._peeks( >>   ):di( (tr%chcd||krt|xjdz c_dS)NrS)rrlr)rsrs r& _read_charz_RFC4514NameParser._read_chars. ::<<2    Q r%c||j|j}|t|}|xjt |z c_|S)N)pos)matchrrrlrUrV)rspatrr:s r&_read_rez_RFC4514NameParser._read_resN $*$) 44 = kkmm SXX  r%c,|g}|rP|d|||Pt t |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. rC) _parse_rdnrrappendrrrs r&rz_RFC4514NameParser.parses!!"nn + OOC KK)) * * *nn +HTNN###r%c"|g}|dkrT|d|||dkTt |S)NrB) _parse_narrrr)rsnass r&rz_RFC4514NameParser._parse_rdnsz~~ jjllc!! OOC JJt~~'' ( ( (jjllc!!)---r%c ||j}t|}nf#t$rY||j}|j|t|}|tYnwxYw|d| dkrI||j }tj |dd }n)||j}t|}t!||S)Nrr>rS)r_OID_RErrl _DESCR_RErrp_NAME_TO_NAMEOIDrr _HEXSTRING_RErL unhexlifyrN _STRING_REr]r_)rs oid_valueranamer( raw_values r&rz_RFC4514NameParser._parse_nas, . dl33I#9--CC ! ! !==00D+//&**400C{  {  !  ::<<3  MM$"455E&uQRRy1188::EE do66I&y11ES%(((s,A BB)&rrrrecompilerr_PAIRr\_LUTF1_SUTF1_TUTF1rWsys maxunicode_UTFMB _LEADCHAR _STRINGCHAR _TRAILCHARVERBOSErrrhrrurrrrrrrrrrrr_rr$r%r&r[r[js5bj=>>G 233I 0Erz%  H GF CF GF -ss3>** - - -F%%V%%I''v''K&&f&&J        !&      %       JBJ344M8S8{8t8888 +4++++vs+ ST s$t$$$$".5....)=))))))r%r[)1rLr rrrm cryptographyr"cryptography.hazmat.bindings._rustrrcryptography.x509.oidrrEnumr_ASN1_TYPE_TO_ENUMrirrj SERIAL_NUMBER DN_QUALIFIER EMAIL_ADDRESSrDOMAIN_COMPONENTr,Dict__annotations__Mappingrhrr COMMON_NAME LOCALITY_NAMESTATE_OR_PROVINCE_NAMEORGANIZATION_NAMEORGANIZATIONAL_UNIT_NAMESTREET_ADDRESSUSER_IDr6itemsrrrKrPr]r_rrr[r$r%r&r-s  <;;;;;;;        54)444 )3 %y'@ 94 )3 9. i1 Cv{#3Y#>?n-s23 nS"223   3 "D s $d # H d OU !+   ?>%5%;%;%=%=>>>&,sEz2s:5C5C5555&dNdNdNdNdNdNdNdNN2O2O2O2O2O2O2O2Oj\)\)\)\)\)\)\)\)~d)d)d)d)d)d)d)d)d)d)r%