3 L]( @s~ddlmZmZmZddlZddlZddlZddlmZddl Z ddl m Z ddl m Z ddlmZddlmZdd d d d d dddd ZddZGdddeZe jejGdddeZe jeGdddeZddZe jeGdddeZe jeGdddeZe jeGd d!d!eZe jeGd"d#d#eZ e jeGd$d%d%eZ!e jeGd&d'd'eZ"dS)()absolute_importdivisionprint_functionN) parseaddr) urllib_parse)utils)Name)ObjectIdentifierZ otherNameZ rfc822NameZdNSNameZ x400AddressZ directoryNameZ ediPartyNameZuniformResourceIdentifierZ iPAddressZ registeredID) rc Cs.y ddl}|Stk r(tdYnXdS)Nrzidna is not installed, but a deprecated feature that requires it was used. See: https://cryptography.io/en/latest/faq/#importerror-idna-is-not-installed)idna ImportError)rrH/tmp/pip-install-wfra5znf/cryptography/cryptography/x509/general_name.py_lazy_import_idna!s rcseZdZfddZZS)UnsupportedGeneralNameTypecstt|j|||_dS)N)superr__init__type)selfmsgr) __class__rrr0sz#UnsupportedGeneralNameType.__init__)__name__ __module__ __qualname__r __classcell__rr)rrr/src@seZdZejddZdS) GeneralNamecCsdS)z0 Return the value of the object Nr)rrrrvalue7szGeneralName.valueN)rrr abcabstractpropertyr#rrrrr"5sr"c@sReZdZddZejdZeddZddZ dd Z d d Z d d Z ddZ dS) RFC822Namec Cs~t|tjrNy|jdWqVtk rJ|j|}tjdtj ddYqVXnt dt |\}}|sl| rtt d||_ dS)NasciizRFC822Name values should be passed as an A-label string. This means unicode characters should be encoded via idna. Support for passing unicode strings (aka U-label) will be removed in a future version.r ) stacklevelzvalue must be stringzInvalid rfc822name value) isinstancesix text_typeencodeUnicodeEncodeError _idna_encodewarningswarnrPersistentlyDeprecated2017 TypeErrorr ValueError_value)rr#nameaddressrrrr@s    zRFC822Name.__init__r4cCs|j|}||_|S)N)__new__r4)clsr#instancerrr_init_without_validation[s z#RFC822Name._init_without_validationcCs<t}t|\}}|jd}|dd|j|djdS)N@rr r')rrsplitr,decode)rr#r_r6partsrrrr.as  zRFC822Name._idna_encodecCs dj|jS)Nz)formatr#)rrrr__repr__gszRFC822Name.__repr__cCst|tstS|j|jkS)N)r)r&NotImplementedr#)rotherrrr__eq__js zRFC822Name.__eq__cCs ||k S)Nr)rrCrrr__ne__pszRFC822Name.__ne__cCs t|jS)N)hashr#)rrrr__hash__sszRFC822Name.__hash__N)rrr rrread_only_propertyr# classmethodr:r.rArDrErGrrrrr&>s  r&cCsRt}x:dD]2}|j|r |t|d}||j|jdSq W|j|jdS)N*..r')rJrK)r startswithlenr,r=)r#rprefixrrrr.ws   r.c@sJeZdZddZejdZeddZddZ dd Z d d Z d d Z dS)DNSNamec Cs^t|tjrLy|jdWqTtk rHt|}tjdtj ddYqTXnt d||_ dS)Nr'zDNSName values should be passed as an A-label string. This means unicode characters should be encoded via idna. Support for passing unicode strings (aka U-label) will be removed in a future version.r )r(zvalue must be string) r)r*r+r,r-r.r/r0rr1r2r4)rr#rrrrs zDNSName.__init__r4cCs|j|}||_|S)N)r7r4)r8r#r9rrrr:s z DNSName._init_without_validationcCs dj|jS)Nz)r@r#)rrrrrAszDNSName.__repr__cCst|tstS|j|jkS)N)r)rOrBr#)rrCrrrrDs zDNSName.__eq__cCs ||k S)Nr)rrCrrrrEszDNSName.__ne__cCs t|jS)N)rFr#)rrrrrGszDNSName.__hash__N) rrr rrrHr#rIr:rArDrErGrrrrrOs  rOc@sReZdZddZejdZeddZddZ dd Z d d Z d d Z ddZ dS)UniformResourceIdentifierc Cs`t|tjrNy|jdWqVtk rJ|j|}tjdtj ddYqVXnt d||_ dS)Nr'zURI values should be passed as an A-label string. This means unicode characters should be encoded via idna. Support for passing unicode strings (aka U-label) will be removed in a future version.r )r(zvalue must be string) r)r*r+r,r-r.r/r0rr1r2r4)rr#rrrrs  z"UniformResourceIdentifier.__init__r4cCs|j|}||_|S)N)r7r4)r8r#r9rrrr:s z2UniformResourceIdentifier._init_without_validationcCsnt}tj|}|jr<|j|jdj|jjdjd}n|j|jjd}tj|j ||j |j |j |j fS)Nz:{}r')rrurlparseportr,hostnamer@r= urlunparseschemepathparamsqueryfragment)rr#rparsednetlocrrrr.s  z&UniformResourceIdentifier._idna_encodecCs dj|jS)Nz()r@r#)rrrrrAsz"UniformResourceIdentifier.__repr__cCst|tstS|j|jkS)N)r)rPrBr#)rrCrrrrDs z UniformResourceIdentifier.__eq__cCs ||k S)Nr)rrCrrrrEsz UniformResourceIdentifier.__ne__cCs t|jS)N)rFr#)rrrrrGsz"UniformResourceIdentifier.__hash__N)rrr rrrHr#rIr:r.rArDrErGrrrrrPs  rPc@s>eZdZddZejdZddZddZdd Z d d Z d S) DirectoryNamecCst|tstd||_dS)Nzvalue must be a Name)r)rr2r4)rr#rrrrs zDirectoryName.__init__r4cCs dj|jS)Nz)r@r#)rrrrrAszDirectoryName.__repr__cCst|tstS|j|jkS)N)r)r\rBr#)rrCrrrrDs zDirectoryName.__eq__cCs ||k S)Nr)rrCrrrrEszDirectoryName.__ne__cCs t|jS)N)rFr#)rrrrrGszDirectoryName.__hash__N) rrr rrrHr#rArDrErGrrrrr\s  r\c@s>eZdZddZejdZddZddZdd Z d d Z d S) RegisteredIDcCst|tstd||_dS)Nz!value must be an ObjectIdentifier)r)r r2r4)rr#rrrrs zRegisteredID.__init__r4cCs dj|jS)Nz)r@r#)rrrrrAszRegisteredID.__repr__cCst|tstS|j|jkS)N)r)r]rBr#)rrCrrrrDs zRegisteredID.__eq__cCs ||k S)Nr)rrCrrrrEszRegisteredID.__ne__cCs t|jS)N)rFr#)rrrrrG"szRegisteredID.__hash__N) rrr rrrHr#rArDrErGrrrrr] s  r]c@s>eZdZddZejdZddZddZdd Z d d Z d S) IPAddresscCs,t|tjtjtjtjfs"td||_dS)Nzzvalue must be an instance of ipaddress.IPv4Address, ipaddress.IPv6Address, ipaddress.IPv4Network, or ipaddress.IPv6Network)r) ipaddress IPv4Address IPv6Address IPv4Network IPv6Networkr2r4)rr#rrrr(s zIPAddress.__init__r4cCs dj|jS)Nz)r@r#)rrrrrA<szIPAddress.__repr__cCst|tstS|j|jkS)N)r)r^rBr#)rrCrrrrD?s zIPAddress.__eq__cCs ||k S)Nr)rrCrrrrEEszIPAddress.__ne__cCs t|jS)N)rFr#)rrrrrGHszIPAddress.__hash__N) rrr rrrHr#rArDrErGrrrrr^&s  r^c@sHeZdZddZejdZejdZddZddZ d d Z d d Z d S) OtherNamecCs4t|tstdt|ts$td||_||_dS)Nz#type_id must be an ObjectIdentifierzvalue must be a binary string)r)r r2bytes_type_idr4)rtype_idr#rrrrNs   zOtherName.__init__rfr4cCsdj|j|jS)Nz#)r@rgr#)rrrrrAZszOtherName.__repr__cCs&t|tstS|j|jko$|j|jkS)N)r)rdrBrgr#)rrCrrrrD^s zOtherName.__eq__cCs ||k S)Nr)rrCrrrrEdszOtherName.__ne__cCst|j|jfS)N)rFrgr#)rrrrrGgszOtherName.__hash__N) rrr rrrHrgr#rArDrErGrrrrrdLs  rd)# __future__rrrr$r_r/ email.utilsrr*Z six.movesrZ cryptographyrZcryptography.x509.namerZcryptography.x509.oidr Z_GENERAL_NAMESr Exceptionr add_metaclassABCMetaobjectr"Zregister_interfacer&r.rOrPr\r]r^rdrrrrsJ     8 ,C%