U
    ʹh                     @  s   d dl mZ 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
 ejejejejejf 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 )    )annotationsN)	parseaddr)Name)ObjectIdentifierc                   @  s   e Zd ZdS )UnsupportedGeneralNameTypeN)__name__
__module____qualname__ r
   r
   D./venv/lib/python3.8/site-packages/cryptography/x509/general_name.pyr      s   r   c                   @  s$   e Zd ZeejddddZdS )GeneralNamez
typing.Anyreturnc                 C  s   dS )z0
        Return the value of the object
        Nr
   selfr
   r
   r   value   s    zGeneralName.valueN)r   r   r	   propertyabcabstractmethodr   r
   r
   r
   r   r      s   r   )	metaclassc                   @  sn   e Zd ZdddddZeddddZedd dd	d
ZddddZdddddZ	ddddZ
dS )
RFC822NamestrNoner   r   c                 C  sf   t |tr8z|d W q@ tk
r4   tdY q@X ntdt|\}}|sT|s\td|| _d S )NasciizRFC822Name 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)
isinstancer   encodeUnicodeEncodeError
ValueError	TypeErrorr   _value)r   r   nameZaddressr
   r
   r   __init__%   s    
zRFC822Name.__init__r   c                 C  s   | j S Nr!   r   r
   r
   r   r   :   s    zRFC822Name.valuec                 C  s   |  | }||_|S r$   __new__r!   clsr   instancer
   r
   r   _init_without_validation>   s    
z#RFC822Name._init_without_validationc                 C  s   d| j dS )Nz<RFC822Name(value=)>r   r   r
   r
   r   __repr__D   s    zRFC822Name.__repr__objectboolotherr   c                 C  s   t |tstS | j|jkS r$   )r   r   NotImplementedr   r   r2   r
   r
   r   __eq__G   s    
zRFC822Name.__eq__intc                 C  s
   t | jS r$   hashr   r   r
   r
   r   __hash__M   s    zRFC822Name.__hash__Nr   r   r	   r#   r   r   classmethodr+   r.   r5   r9   r
   r
   r
   r   r   $   s   r   c                   @  sn   e Zd ZdddddZeddddZedd dd	d
ZddddZdddddZ	ddddZ
dS )DNSNamer   r   r   c                 C  sJ   t |tr8z|d W q@ tk
r4   tdY q@X n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   r   r   r   r   r   r    r!   r   r   r
   r
   r   r#   R   s    
zDNSName.__init__r   c                 C  s   | j S r$   r%   r   r
   r
   r   r   a   s    zDNSName.valuec                 C  s   |  | }||_|S r$   r&   r(   r
   r
   r   r+   e   s    
z DNSName._init_without_validationc                 C  s   d| j dS )Nz<DNSName(value=r,   r-   r   r
   r
   r   r.   k   s    zDNSName.__repr__r/   r0   r1   c                 C  s   t |tstS | j|jkS r$   )r   r<   r3   r   r4   r
   r
   r   r5   n   s    
zDNSName.__eq__r6   c                 C  s
   t | jS r$   r7   r   r
   r
   r   r9   t   s    zDNSName.__hash__Nr:   r
   r
   r
   r   r<   Q   s   r<   c                   @  sn   e Zd ZdddddZeddddZedd dd	d
ZddddZdddddZ	ddddZ
dS )UniformResourceIdentifierr   r   r   c                 C  sJ   t |tr8z|d W q@ tk
r4   tdY q@X ntd|| _d S )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#   y   s    
z"UniformResourceIdentifier.__init__r   c                 C  s   | j S r$   r%   r   r
   r
   r   r      s    zUniformResourceIdentifier.valuec                 C  s   |  | }||_|S r$   r&   r(   r
   r
   r   r+      s    
z2UniformResourceIdentifier._init_without_validationc                 C  s   d| j dS )Nz!<UniformResourceIdentifier(value=r,   r-   r   r
   r
   r   r.      s    z"UniformResourceIdentifier.__repr__r/   r0   r1   c                 C  s   t |tstS | j|jkS r$   )r   r?   r3   r   r4   r
   r
   r   r5      s    
z UniformResourceIdentifier.__eq__r6   c                 C  s
   t | jS r$   r7   r   r
   r
   r   r9      s    z"UniformResourceIdentifier.__hash__Nr:   r
   r
   r
   r   r?   x   s   r?   c                   @  sZ   e Zd ZdddddZeddddZd	dd
dZdddddZddddZdS )DirectoryNamer   r   r   c                 C  s   t |tstd|| _d S )Nzvalue must be a Name)r   r   r    r!   r>   r
   r
   r   r#      s    
zDirectoryName.__init__r   c                 C  s   | j S r$   r%   r   r
   r
   r   r      s    zDirectoryName.valuer   c                 C  s   d| j  dS )Nz<DirectoryName(value=r,   r-   r   r
   r
   r   r.      s    zDirectoryName.__repr__r/   r0   r1   c                 C  s   t |tstS | j|jkS r$   )r   r@   r3   r   r4   r
   r
   r   r5      s    
zDirectoryName.__eq__r6   c                 C  s
   t | jS r$   r7   r   r
   r
   r   r9      s    zDirectoryName.__hash__N	r   r   r	   r#   r   r   r.   r5   r9   r
   r
   r
   r   r@      s   r@   c                   @  sZ   e Zd ZdddddZeddddZd	dd
dZdddddZddddZdS )RegisteredIDr   r   r   c                 C  s   t |tstd|| _d S )Nz!value must be an ObjectIdentifier)r   r   r    r!   r>   r
   r
   r   r#      s    
zRegisteredID.__init__r   c                 C  s   | j S r$   r%   r   r
   r
   r   r      s    zRegisteredID.valuer   c                 C  s   d| j  dS )Nz<RegisteredID(value=r,   r-   r   r
   r
   r   r.      s    zRegisteredID.__repr__r/   r0   r1   c                 C  s   t |tstS | j|jkS r$   )r   rB   r3   r   r4   r
   r
   r   r5      s    
zRegisteredID.__eq__r6   c                 C  s
   t | jS r$   r7   r   r
   r
   r   r9      s    zRegisteredID.__hash__NrA   r
   r
   r
   r   rB      s   rB   c                   @  sh   e Zd ZdddddZeddddZd	dd
dZddddZdddddZddddZ	dS )	IPAddress_IPAddressTypesr   r   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)r   	ipaddressIPv4AddressIPv6AddressIPv4NetworkIPv6Networkr    r!   r>   r
   r
   r   r#      s    	zIPAddress.__init__r   c                 C  s   | j S r$   r%   r   r
   r
   r   r      s    zIPAddress.valuebytesc                 C  s4   t | jtjtjfr| jjS | jjj| jjj S d S r$   )r   r   rE   rF   rG   ZpackedZnetwork_addressZnetmaskr   r
   r
   r   _packed   s     
zIPAddress._packedr   c                 C  s   d| j  dS )Nz<IPAddress(value=r,   r-   r   r
   r
   r   r.      s    zIPAddress.__repr__r/   r0   r1   c                 C  s   t |tstS | j|jkS r$   )r   rC   r3   r   r4   r
   r
   r   r5      s    
zIPAddress.__eq__r6   c                 C  s
   t | jS r$   r7   r   r
   r
   r   r9      s    zIPAddress.__hash__N)
r   r   r	   r#   r   r   rK   r.   r5   r9   r
   r
   r
   r   rC      s   
rC   c                   @  sn   e Zd ZddddddZedddd	Zeddd
dZddddZdddddZddddZ	dS )	OtherNamer   rJ   r   )type_idr   r   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)r   r   r    rJ   _type_idr!   )r   rM   r   r
   r
   r   r#      s    

zOtherName.__init__r   c                 C  s   | j S r$   )rN   r   r
   r
   r   rM     s    zOtherName.type_idc                 C  s   | j S r$   r%   r   r
   r
   r   r     s    zOtherName.valuer   c                 C  s   d| j  d| jdS )Nz<OtherName(type_id=z, value=r,   )rM   r   r   r
   r
   r   r.     s    zOtherName.__repr__r/   r0   r1   c                 C  s&   t |tstS | j|jko$| j|jkS r$   )r   rL   r3   rM   r   r4   r
   r
   r   r5     s    
zOtherName.__eq__r6   c                 C  s   t | j| jfS r$   )r8   rM   r   r   r
   r
   r   r9     s    zOtherName.__hash__N)
r   r   r	   r#   r   rM   r   r.   r5   r9   r
   r
   r
   r   rL      s   	rL   )Z
__future__r   r   rE   typingZemail.utilsr   Zcryptography.x509.namer   Zcryptography.x509.oidr   ZUnionrF   rG   rH   rI   rD   	Exceptionr   ABCMetar   r   r<   r?   r@   rB   rC   rL   r
   r
   r
   r   <module>   s,   	-''.