o
    �)%aá  ã                
   @   sø   d dl Z d dlZd dlZd dlmZ d dlmZ d dlmZ d dl	m
Z
 dddd	d
dddddœ	ZG dd„ deƒZG dd„ de jd�ZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd „ d eƒZG d!d"„ d"eƒZdS )#é    N)Ú	parseaddr)Úutils)ÚName)ÚObjectIdentifierÚ	otherNameÚ
rfc822NameÚdNSNameÚx400AddressÚdirectoryNameÚediPartyNameÚuniformResourceIdentifierÚ	iPAddressÚregisteredID)	r   é   é   é   é   é   é   é   é   c                       s   e Zd Z‡ fdd„Z‡  ZS )ÚUnsupportedGeneralNameTypec                    s   t t| ƒ |¡ || _d S ©N)Úsuperr   Ú__init__Útype)ÚselfÚmsgr   ©Ú	__class__© ú@/usr/lib/python3/dist-packages/cryptography/x509/general_name.pyr      s   
z#UnsupportedGeneralNameType.__init__)Ú__name__Ú
__module__Ú__qualname__r   Ú__classcell__r    r    r   r!   r      s    r   c                   @   s   e Zd Zejdd„ ƒZdS )ÚGeneralNamec                 C   s   dS )z0
        Return the value of the object
        Nr    ©r   r    r    r!   Úvalue$   s    zGeneralName.valueN)r"   r#   r$   ÚabcÚabstractpropertyr(   r    r    r    r!   r&   #   s    r&   )Ú	metaclassc                   @   óp   e Zd Zdefdd„Ze d¡Zedd„ ƒZ	defdd	„Z
d
edefdd„Zd
edefdd„Zdefdd„ZdS )Ú
RFC822Namer(   c                 C   s^   t |tƒrz| d¡ W n ty   tdƒ‚w tdƒ‚t|ƒ\}}|s&|s*tdƒ‚|| _d S )NÚasciiz�RFC822Name values should be passed as an A-label string. This means unicode characters should be encoded via a library like idna.úvalue must be stringzInvalid rfc822name value)Ú
isinstanceÚstrÚencodeÚUnicodeEncodeErrorÚ
ValueErrorÚ	TypeErrorr   Ú_value)r   r(   ÚnameÚaddressr    r    r!   r   ,   s   
ÿÿ
zRFC822Name.__init__r6   c                 C   ó   |   | ¡}||_|S r   ©Ú__new__r6   ©Úclsr(   Úinstancer    r    r!   Ú_init_without_validationC   ó   
z#RFC822Name._init_without_validationÚreturnc                 C   ó   d  | j¡S )Nz<RFC822Name(value={0!r})>©Úformatr(   r'   r    r    r!   Ú__repr__I   ó   zRFC822Name.__repr__Úotherc                 C   ó   t |tƒstS | j|jkS r   )r0   r-   ÚNotImplementedr(   ©r   rG   r    r    r!   Ú__eq__L   ó   
zRFC822Name.__eq__c                 C   ó
   | |k S r   r    rJ   r    r    r!   Ú__ne__R   ó   
zRFC822Name.__ne__c                 C   ó
   t | jƒS r   ©Úhashr(   r'   r    r    r!   Ú__hash__U   rO   zRFC822Name.__hash__N©r"   r#   r$   r1   r   r   Úread_only_propertyr(   Úclassmethodr?   rE   ÚobjectÚboolrK   rN   ÚintrS   r    r    r    r!   r-   +   s    

r-   c                   @   sj   e Zd Zdefdd„Ze d¡Zedd„ ƒZ	dd„ Z
d	ed
efdd„Zd	ed
efdd„Zd
efdd„ZdS )ÚDNSNamer(   c                 C   óB   t |tƒrz| d¡ W n ty   tdƒ‚w tdƒ‚|| _d S )Nr.   z~DNSName values should be passed as an A-label string. This means unicode characters should be encoded via a library like idna.r/   ©r0   r1   r2   r3   r4   r5   r6   ©r   r(   r    r    r!   r   Z   ó   
ÿÿ
zDNSName.__init__r6   c                 C   r9   r   r:   r<   r    r    r!   r?   k   r@   z DNSName._init_without_validationc                 C   rB   )Nz<DNSName(value={0!r})>rC   r'   r    r    r!   rE   q   rF   zDNSName.__repr__rG   rA   c                 C   rH   r   )r0   rZ   rI   r(   rJ   r    r    r!   rK   t   rL   zDNSName.__eq__c                 C   rM   r   r    rJ   r    r    r!   rN   z   rO   zDNSName.__ne__c                 C   rP   r   rQ   r'   r    r    r!   rS   }   rO   zDNSName.__hash__NrT   r    r    r    r!   rZ   Y   s    

rZ   c                   @   r,   )ÚUniformResourceIdentifierr(   c                 C   r[   )Nr.   zzURI values should be passed as an A-label string. This means unicode characters should be encoded via a library like idna.r/   r\   r]   r    r    r!   r   ‚   r^   z"UniformResourceIdentifier.__init__r6   c                 C   r9   r   r:   r<   r    r    r!   r?   “   r@   z2UniformResourceIdentifier._init_without_validationrA   c                 C   rB   )Nz(<UniformResourceIdentifier(value={0!r})>rC   r'   r    r    r!   rE   ™   rF   z"UniformResourceIdentifier.__repr__rG   c                 C   rH   r   )r0   r_   rI   r(   rJ   r    r    r!   rK   œ   rL   z UniformResourceIdentifier.__eq__c                 C   rM   r   r    rJ   r    r    r!   rN   ¢   rO   z UniformResourceIdentifier.__ne__c                 C   rP   r   rQ   r'   r    r    r!   rS   ¥   rO   z"UniformResourceIdentifier.__hash__NrT   r    r    r    r!   r_   �   s    

r_   c                   @   ód   e Zd Zdefdd„Ze d¡Zdefdd„Z	de
defd	d
„Zde
defdd„Zdefdd„ZdS )ÚDirectoryNamer(   c                 C   ó   t |tƒs	tdƒ‚|| _d S )Nzvalue must be a Name)r0   r   r5   r6   r]   r    r    r!   r   ª   ó   

zDirectoryName.__init__r6   rA   c                 C   rB   )Nz<DirectoryName(value={})>rC   r'   r    r    r!   rE   ²   rF   zDirectoryName.__repr__rG   c                 C   rH   r   )r0   ra   rI   r(   rJ   r    r    r!   rK   µ   rL   zDirectoryName.__eq__c                 C   rM   r   r    rJ   r    r    r!   rN   »   rO   zDirectoryName.__ne__c                 C   rP   r   rQ   r'   r    r    r!   rS   ¾   rO   zDirectoryName.__hash__N)r"   r#   r$   r   r   r   rU   r(   r1   rE   rW   rX   rK   rN   rY   rS   r    r    r    r!   ra   ©   ó    
ra   c                   @   r`   )ÚRegisteredIDr(   c                 C   rb   )Nz!value must be an ObjectIdentifier)r0   r   r5   r6   r]   r    r    r!   r   Ã   rc   zRegisteredID.__init__r6   rA   c                 C   rB   )Nz<RegisteredID(value={})>rC   r'   r    r    r!   rE   Ë   rF   zRegisteredID.__repr__rG   c                 C   rH   r   )r0   re   rI   r(   rJ   r    r    r!   rK   Î   rL   zRegisteredID.__eq__c                 C   rM   r   r    rJ   r    r    r!   rN   Ô   rO   zRegisteredID.__ne__c                 C   rP   r   rQ   r'   r    r    r!   rS   ×   rO   zRegisteredID.__hash__N)r"   r#   r$   r   r   r   rU   r(   r1   rE   rW   rX   rK   rN   rY   rS   r    r    r    r!   re   Â   rd   re   c                   @   sz   e Zd Zdejejejejej	f fdd„Z
e d¡Zdefdd„Zdedefd	d
„Zdedefdd„Zdefdd„ZdS )Ú	IPAddressr(   c                 C   s,   t |tjtjtjtjfƒstdƒ‚|| _d S )Nzzvalue must be an instance of ipaddress.IPv4Address, ipaddress.IPv6Address, ipaddress.IPv4Network, or ipaddress.IPv6Network)r0   Ú	ipaddressÚIPv4AddressÚIPv6AddressÚIPv4NetworkÚIPv6Networkr5   r6   r]   r    r    r!   r   Ü   s   	üþ	ÿ
zIPAddress.__init__r6   rA   c                 C   rB   )Nz<IPAddress(value={})>rC   r'   r    r    r!   rE   ø   rF   zIPAddress.__repr__rG   c                 C   rH   r   )r0   rf   rI   r(   rJ   r    r    r!   rK   û   rL   zIPAddress.__eq__c                 C   rM   r   r    rJ   r    r    r!   rN     rO   zIPAddress.__ne__c                 C   rP   r   rQ   r'   r    r    r!   rS     rO   zIPAddress.__hash__N)r"   r#   r$   ÚtypingÚUnionrg   rh   ri   rj   rk   r   r   rU   r(   r1   rE   rW   rX   rK   rN   rY   rS   r    r    r    r!   rf   Û   s    ýÿ
þ
rf   c                   @   sr   e Zd Zdedefdd„Ze d¡Ze d¡Z	de
fdd	„Zd
edefdd„Zd
edefdd„Zdefdd„ZdS )Ú	OtherNameÚtype_idr(   c                 C   s4   t |tƒs	tdƒ‚t |tƒstdƒ‚|| _|| _d S )Nz#type_id must be an ObjectIdentifierzvalue must be a binary string)r0   r   r5   ÚbytesÚ_type_idr6   )r   ro   r(   r    r    r!   r   	  s   


zOtherName.__init__rq   r6   rA   c                 C   s   d  | j| j¡S )Nz#<OtherName(type_id={}, value={!r})>)rD   ro   r(   r'   r    r    r!   rE     s   ÿzOtherName.__repr__rG   c                 C   s&   t |tƒstS | j|jko| j|jkS r   )r0   rn   rI   ro   r(   rJ   r    r    r!   rK     s   
zOtherName.__eq__c                 C   rM   r   r    rJ   r    r    r!   rN      rO   zOtherName.__ne__c                 C   s   t | j| jfƒS r   )rR   ro   r(   r'   r    r    r!   rS   #  s   zOtherName.__hash__N)r"   r#   r$   r   rp   r   r   rU   ro   r(   r1   rE   rW   rX   rK   rN   rY   rS   r    r    r    r!   rn     s    
	
rn   )r)   rg   rl   Úemail.utilsr   Úcryptographyr   Úcryptography.x509.namer   Úcryptography.x509.oidr   Ú_GENERAL_NAMESÚ	Exceptionr   ÚABCMetar&   r-   rZ   r_   ra   re   rf   rn   r    r    r    r!   Ú<module>   s4   ÷.((-