U
    [e                  
   @   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)ObjectIdentifierZ	otherNameZ
rfc822NameZdNSNameZx400AddressZdirectoryNameZediPartyNameZuniformResourceIdentifierZ	iPAddressZ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__ `/var/www/html/services/stratfitenv/lib/python3.8/site-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                   @   sl   e Zd ZedddZedZedd Z	eddd	Z
eed
ddZeed
ddZedddZdS )
RFC822Name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)
isinstancestrencodeUnicodeEncodeError
ValueError	TypeErrorr   _value)r   r   nameaddressr   r   r   r   ,   s    
zRFC822Name.__init__r-   c                 C   s   |  | }||_|S r   __new__r-   clsr   instancer   r   r   _init_without_validationC   s    
z#RFC822Name._init_without_validationreturnc                 C   s   d | jS )Nz<RFC822Name(value={0!r})>formatr   r   r   r   r   __repr__I   s    zRFC822Name.__repr__otherr7   c                 C   s   t |tstS | j|jkS r   )r'   r#   NotImplementedr   r   r<   r   r   r   __eq__L   s    
zRFC822Name.__eq__c                 C   s
   | |k S r   r   r>   r   r   r   __ne__R   s    zRFC822Name.__ne__c                 C   s
   t | jS r   hashr   r   r   r   r   __hash__U   s    zRFC822Name.__hash__Nr   r   r   r(   r   r   read_only_propertyr   classmethodr5   r:   objectboolr?   r@   intrC   r   r   r   r   r#   +   s   

r#   c                   @   sf   e Zd ZedddZedZedd Z	dd Z
eed	d
dZeed	ddZedddZdS )DNSNamer$   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   Z   s    
zDNSName.__init__r-   c                 C   s   |  | }||_|S r   r0   r2   r   r   r   r5   k   s    
z DNSName._init_without_validationc                 C   s   d | jS )Nz<DNSName(value={0!r})>r8   r   r   r   r   r:   q   s    zDNSName.__repr__r;   c                 C   s   t |tstS | j|jkS r   )r'   rJ   r=   r   r>   r   r   r   r?   t   s    
zDNSName.__eq__c                 C   s
   | |k S r   r   r>   r   r   r   r@   z   s    zDNSName.__ne__r6   c                 C   s
   t | jS r   rA   r   r   r   r   rC   }   s    zDNSName.__hash__NrD   r   r   r   r   rJ   Y   s   

rJ   c                   @   sl   e Zd ZedddZedZedd Z	eddd	Z
eed
ddZeed
ddZedddZdS )UniformResourceIdentifierr$   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&   rK   rL   r   r   r   r      s    
z"UniformResourceIdentifier.__init__r-   c                 C   s   |  | }||_|S r   r0   r2   r   r   r   r5      s    
z2UniformResourceIdentifier._init_without_validationr6   c                 C   s   d | jS )Nz(<UniformResourceIdentifier(value={0!r})>r8   r   r   r   r   r:      s    z"UniformResourceIdentifier.__repr__r;   c                 C   s   t |tstS | j|jkS r   )r'   rM   r=   r   r>   r   r   r   r?      s    
z UniformResourceIdentifier.__eq__c                 C   s
   | |k S r   r   r>   r   r   r   r@      s    z UniformResourceIdentifier.__ne__c                 C   s
   t | jS r   rA   r   r   r   r   rC      s    z"UniformResourceIdentifier.__hash__NrD   r   r   r   r   rM      s   

rM   c                   @   s`   e Zd ZedddZedZedddZ	e
edd	d
Ze
edddZedddZdS )DirectoryNamer$   c                 C   s   t |tstd|| _d S )Nzvalue must be a Name)r'   r   r,   r-   rL   r   r   r   r      s    
zDirectoryName.__init__r-   r6   c                 C   s   d | jS )Nz<DirectoryName(value={})>r8   r   r   r   r   r:      s    zDirectoryName.__repr__r;   c                 C   s   t |tstS | j|jkS r   )r'   rN   r=   r   r>   r   r   r   r?      s    
zDirectoryName.__eq__c                 C   s
   | |k S r   r   r>   r   r   r   r@      s    zDirectoryName.__ne__c                 C   s
   t | jS r   rA   r   r   r   r   rC      s    zDirectoryName.__hash__N)r   r   r   r   r   r   rE   r   r(   r:   rG   rH   r?   r@   rI   rC   r   r   r   r   rN      s   
rN   c                   @   s`   e Zd ZedddZedZedddZ	e
edd	d
Ze
edddZedddZdS )RegisteredIDr$   c                 C   s   t |tstd|| _d S )Nz!value must be an ObjectIdentifier)r'   r   r,   r-   rL   r   r   r   r      s    
zRegisteredID.__init__r-   r6   c                 C   s   d | jS )Nz<RegisteredID(value={})>r8   r   r   r   r   r:      s    zRegisteredID.__repr__r;   c                 C   s   t |tstS | j|jkS r   )r'   rO   r=   r   r>   r   r   r   r?      s    
zRegisteredID.__eq__c                 C   s
   | |k S r   r   r>   r   r   r   r@      s    zRegisteredID.__ne__c                 C   s
   t | jS r   rA   r   r   r   r   rC      s    zRegisteredID.__hash__N)r   r   r   r   r   r   rE   r   r(   r:   rG   rH   r?   r@   rI   rC   r   r   r   r   rO      s   
rO   c                   @   sv   e Zd Zejejejejej	f dddZ
edZedddZeedd	d
ZeedddZed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)r'   	ipaddressIPv4AddressIPv6AddressIPv4NetworkIPv6Networkr,   r-   rL   r   r   r   r      s    		zIPAddress.__init__r-   r6   c                 C   s   d | jS )Nz<IPAddress(value={})>r8   r   r   r   r   r:      s    zIPAddress.__repr__r;   c                 C   s   t |tstS | j|jkS r   )r'   rP   r=   r   r>   r   r   r   r?      s    
zIPAddress.__eq__c                 C   s
   | |k S r   r   r>   r   r   r   r@     s    zIPAddress.__ne__c                 C   s
   t | jS r   rA   r   r   r   r   rC     s    zIPAddress.__hash__N)r   r   r   typingUnionrQ   rR   rS   rT   rU   r   r   rE   r   r(   r:   rG   rH   r?   r@   rI   rC   r   r   r   r   rP      s   
rP   c                   @   sl   e Zd ZeedddZedZedZ	e
dddZeed	d
dZeed	ddZed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)r'   r   r,   bytes_type_idr-   )r   rY   r   r   r   r   r   	  s    

zOtherName.__init__r[   r-   r6   c                 C   s   d | j| jS )Nz#<OtherName(type_id={}, value={!r})>)r9   rY   r   r   r   r   r   r:     s     zOtherName.__repr__r;   c                 C   s&   t |tstS | j|jko$| j|jkS r   )r'   rX   r=   rY   r   r>   r   r   r   r?     s    
zOtherName.__eq__c                 C   s
   | |k S r   r   r>   r   r   r   r@      s    zOtherName.__ne__c                 C   s   t | j| jfS r   )rB   rY   r   r   r   r   r   rC   #  s    zOtherName.__hash__N)r   r   r   r   rZ   r   r   rE   rY   r   r(   r:   rG   rH   r?   r@   rI   rC   r   r   r   r   rX     s   	

rX   )r    rQ   rV   email.utilsr   Zcryptographyr   Zcryptography.x509.namer   Zcryptography.x509.oidr   Z_GENERAL_NAMES	Exceptionr   ABCMetar   r#   rJ   rM   rN   rO   rP   rX   r   r   r   r   <module>   s2   .((-