Xj<UddlmZddlZddlZddlZddlZddlZddlmZm Z ddl m Z ddl m ZddlmZmZGdde j$ZeDcic]}|j(|c}Zej,ej.ej0ej.ej2ej.ej4ej.ej6ej8ej:ej8iZd ed <ej@ee!fZ"ej@e!efZ#ejHd ejJd ejLd ejNdejPdej,dejRdej:dejTdi Z+ded<e+jYDcic]\}}|| c}}Z-ej,dej0dejHdiZ.d%dZ/d&dZ0ejbdejde!e3fe!e3dZ4Gddejje4Z6Gdd Z7Gd!d"Z8Gd#d$Z9ycc}wcc}}w)') annotationsN)IterableIterator)utils)x509)NameOIDObjectIdentifierc<eZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zy ) _ASN1Type N)__name__ __module__ __qualname__ BitString OctetString UTF8String NumericStringPrintableString T61String IA5StringUTCTimeGeneralizedTime VisibleStringUniversalString BMPStringj/mnt/ssd/data/Dropbox/adrian/vault-secondbrain/venv/lib/python3.12/site-packages/cryptography/x509/name.pyr r s>IKJMOIIGOMOIr(r z!dict[ObjectIdentifier, _ASN1Type]_NAMEOID_DEFAULT_TYPECNLSTOOUCSTREETDCUID _OidNameMap_NAMEOID_TO_NAME)r6)@c|syt|tr'dtj|j dzS|j dd}|j dd}|j dd }|j d d }|j d d }|j dd}|j dd}|j dd}|ddk(s|ddk(rt |dkDrd|z}|ddk(r|dddz}|S)z>Escape special characters in RFC4514 Distinguished Name value.#utf8\z\\"z\"+z\+,z\,;z\;z\>z\00r r7Nz\ ) isinstancebytesbinasciihexlifydecodereplacelen)vals r)_escape_dn_valuerOFs #uX%%c*11&999 ++dF #C ++c5 !C ++c5 !C ++c5 !C ++c5 !C ++c5 !C ++c5 !C ++dF #C 1v}Q33s8a<Sj 2w#~#2h Jr(cN|syd}tjj||S)Nr:c|jd}t|dk(r|ddStj|j ddj S)Nrr6r7r=r:)grouprMrI unhexlifyrLrK)mrNs r)subz_unescape_dn_value..subksLggaj s8q=qr7N!!#++dB"78??AAr()_RFC4514NameParser_PAIR_MULTI_RErU)rNrUs r)_unescape_dn_valuerXcs)  B  , , 0 0c ::r(NameAttributeValueTypeT) covariantceZdZ d dd d dZeddZeddZeddZ d ddZdd Z dd Z dd Z y) NameAttributeNT) _validatect|ts td|tjk(r9|t j k7r tdt|ts&tdt|ts tdtj|}|l|\}}t|tsJt|jd}||ks||kDr1d|d|d|} |d ur t| tj| d |$t j|tj"}t|ts td ||_||_||_y) 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<zAttribute's length must be >= z and <= z , but it was Tr6) stacklevelz%_type must be from the _ASN1Type enum)rGr TypeErrorr rrX500_UNIQUE_IDENTIFIERrHstr_NAMEOID_LENGTH_LIMITgetrMencode ValueErrorwarningswarnr*r_oid_value_type) selfoidvaluerkr] length_limits min_length max_lengthc_lenmsgs r)__init__zNameAttribute.__init__s[#/0D  I'' 'g444LeU+ CDDE3':; ;-11#6  $%2 "J eS) )) V,-Ez!UZ%74ZLA$]5';$$S/)MM#!4 =)--c93G3GHE%+CD D .3 % r(c|jSN)rirls r)rmzNameAttribute.oids yyr(c|jSrv)rjrws r)rnzNameAttribute.values {{r(cjtj|j|jjS)zt The short attribute name (for example "CN") if available, otherwise the OID dotted string. )r5rdrm dotted_stringrws r)rfc4514_attribute_namez$NameAttribute.rfc4514_attribute_names%  ##DHHdhh.D.DEEr(c|r|j|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=)rdrmr{rOrn)rlattr_name_overrides attr_names r)rfc4514_stringzNameAttribute.rfc4514_stringsP2E  # #DHH -$   33IA.tzz:;<)rmrnrws r)__repr__zNameAttribute.__repr__s$TXXJhtzznBGGr(rv) rmr rnrYrkz_ASN1Type | Noner]boolreturnNone)rr )rrYrrbr~z_OidNameMap | Nonerrbrobjectrrrint) rrrrtpropertyrmrnr{rrrrr'r(r)r\r\s #' 3&  3& 3&&3& 3&  3& 3&jFF9==#5= ="C ,Hr(r\c^eZdZd dZ d dZ d d dZddZddZddZddZ dd Z y)RelativeDistinguishedNamect|}|s tdtd|Ds td||_t ||_t|j t|k7r tdy)Nz-a relative distinguished name cannot be emptyc3<K|]}t|tywrvrGr\.0xs r) z5RelativeDistinguishedName.__init__..sDA:a/Dz/attributes must be an iterable of NameAttributez$duplicate attributes are not allowed)listrfallr` _attributes frozenset_attribute_setrMrl attributess r)rtz"RelativeDistinguishedName.__init__st*% LM MDDDMN N&' 3 t"" #s: 6CD D 7r(cL|Dcgc]}|j|k(s|c}Scc}wrvrmrlrmis r)get_attributes_for_oidz0RelativeDistinguishedName.get_attributes_for_oid" 0a155C<000!!NcLdjfd|jDS)z Format as RFC4514 Distinguished Name string. Within each RDN, attributes are joined by '+', although that is rarely used in certificates. r?c3@K|]}|jywrvrrattrr~s r)rz;RelativeDistinguishedName.rfc4514_string..%     3 4 )joinrrlr~s `r)rz(RelativeDistinguishedName.rfc4514_strings)xx ((   r(c`t|tstS|j|jk(Srv)rGrrrrs r)rz RelativeDistinguishedName.__eq__s*%!:;! !""e&:&:::r(c,t|jSrv)rrrws r)rz"RelativeDistinguishedName.__hash__ sD''((r(c,t|jSrv)iterrrws r)__iter__z"RelativeDistinguishedName.__iter__sD$$%%r(c,t|jSrv)rMrrws r)__len__z!RelativeDistinguishedName.__len__s4##$$r(c*d|jdS)Nzt|}td|Dr8|Dcgc]&}ttjt |g(c}|_ytd|Dr'tjtt||_ytdcc}w)Nc3<K|]}t|tywrvrrs r)rz Name.__init__..,s@z!]+@rc3<K|]}t|tywrv)rGrrs r)rz Name.__init__..1sNaA89NrzNattributes must be a list of NameAttribute or a list RelativeDistinguishedName)rrrtypingcastr\rr`)rlrrs r)rtz Name.__init__%s *% @Z@ @$ *6;;}a+H*IJ D N:N N%{{./ D 7  s+BNc>t||xsijSrv)rVparse)clsdatar~s r)from_rfc4514_stringzName.from_rfc4514_string;s "$(;(ArBHHJJr(c,tj|S)zS Parse a DER encoded X.509 name (the inverse of ``public_bytes``). ) rust_x509parse_name_bytes)rrs r) from_byteszName.from_bytesCs ))$//r(c^djfdt|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. r@c3@K|]}|jywrvrrs r)rz&Name.rfc4514_string..Wrr)rreversedrrs `r)rzName.rfc4514_stringJs.xx  !1!12   r(cL|Dcgc]}|j|k(s|c}Scc}wrvrrs r)rzName.get_attributes_for_oid\rrc|jSrvrrws r)rdnsz Name.rdnsbsr(c,tj|Srv)rencode_name_bytes)rlbackends r) public_byteszName.public_bytesfs**400r(c`t|tstS|j|jk(Srv)rGrrrrs r)rz Name.__eq__is)%&! !5#4#444r(c>tt|jSrv)rtuplerrws r)rz Name.__hash__osE$**+,,r(c#FK|jD] }|Ed{y7wrvr)rlrdns r)rz Name.__iter__ts%## CNN  s !!c:td|jDS)Nc32K|]}t|ywrv)rM)rrs r)rzName.__len__..ys83s88s)sumrrws r)rz Name.__len__xs8t'7'7888r(c*d|jdS)Nz  __=    ,37KK0K  KK009= #5  $1 1 *1   15 - 92r(rceZdZejdZejdZdZdZdededZ ejded ed Z d Z d Z d Z deej dZe deZe deZe deZejdede dede dede d ej*ZejdZddZddZd dZd!dZd"dZd#dZd$dZd%dZy)&rVz!(0|([1-9]\d*))(\.(0|([1-9]\d*)))+z[a-zA-Z][a-zA-Z\d-]*z[\\ #=\"\+,;<>]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})+c.||_d|_||_y)Nr)_data_idx_attr_name_overrides)rlrr~s r)rtz_RFC4514NameParser.__init__s  $7!r(cF|jt|jkSrv)rrMrrws r) _has_dataz_RFC4514NameParser._has_datasyy3tzz?**r(cV|jr|j|jSyrv)rrrrws r)_peekz_RFC4514NameParser._peeks" >> ::dii( (r(c`|j|k7rt|xjdz c_y)Nr7)rrfr)rlchs r) _read_charz_RFC4514NameParser._read_chars# ::<2   Q r(c|j|j|j}|t|j }|xjt |z c_|S)N)pos)matchrrrfrRrM)rlpatrrNs r)_read_rez_RFC4514NameParser._read_resI $**$)) 4 = kkm SX  r(c$|js tgS|jg}|jrA|jd|j |j|jrAtt |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. r@)rr _parse_rdnrappendr)rlrs r)rz_RFC4514NameParser.parsesl~~8O!"nn OOC KK) *nnHTN##r(c|jg}|jdk(rD|jd|j|j|jdk(rDt |S)Nr?) _parse_narrrr)rlnass r)rz_RFC4514NameParser._parse_rdns[~~ jjlc! OOC JJt~~' (jjlc!)--r(cB |j|j}t|}|jd|jdk(rB|j|j}tj|ddj}n&|j|j}t|}t!||S#t$rU|j|j}|j j |tj |}|tYwxYw)Nr}r;r7)r_OID_REr rf _DESCR_RErrd_NAME_TO_NAMEOIDrr _HEXSTRING_RErIrSrK _STRING_RErXr\)rl oid_valuermnamern raw_values r)rz_RFC4514NameParser._parse_nas . dll3I#9-C  ::<3 MM$"4"45E&&uQRy188:E doo6I&y1ES%((% !==0D++//&**40C{    !sCADDN)rrbr~ _NameOidMaprr)rr)rz str | None)rrbrrr)rr)rr)rzNameAttribute[str]) rrrrecompilerr_ESCAPE_SPECIAL _ESCAPE_HEX_PAIRrW_LUTF1_SUTF1_TUTF1chrsys maxunicode_UTFMB _LEADCHAR _STRINGCHAR _TRAILCHARVERBOSEr r rtrrrrrrrr'r(r)rVrVsHbjj=>G 23I(O"K?#1[M 3ERZZ3&7vk]# NON GF CF GFs3>>*+1 -F81VH%IXQvh'KHAfX&J[%!aw'Qug&    JBJJ34M8 +  $*.)r(rV)rNz str | bytesrrb)rNrbrrb): __future__rrIrrrrgcollections.abcrr cryptographyr"cryptography.hazmat.bindings._rustrrcryptography.x509.oidrr Enumr rn_ASN1_TYPE_TO_ENUM COUNTRY_NAMErJURISDICTION_COUNTRY_NAME SERIAL_NUMBER DN_QUALIFIER EMAIL_ADDRESSr!DOMAIN_COMPONENTr*__annotations__Mappingrbr4r COMMON_NAME LOCALITY_NAMESTATE_OR_PROVINCE_NAMEORGANIZATION_NAMEORGANIZATIONAL_UNIT_NAMESTREET_ADDRESSUSER_IDr5itemsrrcrOrXTypeVarUnionrHrYGenericr\rrrV)rkvs000r)r;s6 # .@;  +44Qaggqj4 )33 %%y'@'@ 944 )33 9.. i11 <8nn-s23 nnS"223   3 ""D s $$d # H d OOU !+ &6%;%;%=>TQAqD> & %%v :;(( LLe  aHFNN#9:aHH3G3Glb2b2Jj)j){ 56?s H7 H<