o
    ™¨ÊhŸ&  ã                
   @   s~  d dl mZmZmZ d dlZd dlZd dlZd dlm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e
 ej¡G dd„ deƒƒZe e¡G dd„ deƒƒZdd„ Ze e¡G dd„ deƒƒZe e¡G dd„ deƒƒZe e¡G dd„ deƒƒZe e¡G d d!„ d!eƒƒZ e e¡G d"d#„ d#eƒƒZ!e e¡G d$d%„ d%eƒƒZ"dS )&é    )Úabsolute_importÚdivisionÚprint_functionN)Ú	parseaddr)Úurllib_parse)Ú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__© úP/var/www/html/env/lib/python3.10/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*   c                   @   óR   e Zd Zdd„ Ze d¡Zedd„ ƒZdd„ Z	dd	„ Z
d
d„ Zdd„ Zdd„ ZdS )Ú
RFC822Namec                 C   sx   t |tjƒr%z| d¡ W n ty$   |  |¡}tjdtj	dd� Y nw t
dƒ‚t|ƒ\}}|s3|s7tdƒ‚|| _d S )NÚasciizÉRFC822Name 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   ©Ú
stacklevelúvalue must be stringzInvalid rfc822name value)Ú
isinstanceÚsixÚ	text_typeÚencodeÚUnicodeEncodeErrorÚ_idna_encodeÚwarningsÚwarnr   ÚDeprecatedIn21Ú	TypeErrorr   Ú
ValueErrorÚ_value)r    r,   ÚnameÚaddressr$   r$   r%   r   4   s    

úþ
zRFC822Name.__init__r@   c                 C   ó   |   | ¡}||_|S r   ©Ú__new__r@   ©Úclsr,   Úinstancer$   r$   r%   Ú_init_without_validationO   ó   
z#RFC822Name._init_without_validationc                 C   s6   t |ƒ\}}| d¡}|d d t |d ¡ d¡ S )Nú@r   r   r1   )r   ÚsplitÚidnar8   Údecode)r    r,   Ú_rB   Úpartsr$   r$   r%   r:   U   s   
 zRFC822Name._idna_encodec                 C   ó   d  | j¡S )Nz<RFC822Name(value={0!r})>©Úformatr,   r+   r$   r$   r%   Ú__repr__Z   ó   zRFC822Name.__repr__c                 C   ó   t |tƒstS | j|jkS r   )r5   r0   ÚNotImplementedr,   ©r    Úotherr$   r$   r%   Ú__eq__]   ó   
zRFC822Name.__eq__c                 C   ó
   | |k S r   r$   rX   r$   r$   r%   Ú__ne__c   ó   
zRFC822Name.__ne__c                 C   ó
   t | jƒS r   ©Úhashr,   r+   r$   r$   r%   Ú__hash__f   r^   zRFC822Name.__hash__N©r&   r'   r(   r   r   Úread_only_propertyr,   ÚclassmethodrI   r:   rT   rZ   r]   rb   r$   r$   r$   r%   r0   2   s    

r0   c                 C   sL   dD ]}|   |¡r| t|ƒd … } |t | ¡ d¡   S qt | ¡ d¡S )N)z*.Ú.r1   )Ú
startswithÚlenrM   r8   rN   )r,   Úprefixr$   r$   r%   r:   j   s   
þr:   c                   @   sJ   e Zd Zdd„ Ze d¡Zedd„ ƒZdd„ Z	dd	„ Z
d
d„ Zdd„ ZdS )ÚDNSNamec                 C   sZ   t |tjƒr$z| d¡ W n ty#   t|ƒ}tjdtj	dd� Y nw t
dƒ‚|| _d S )Nr1   zÆDNSName 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   r2   r4   ©r5   r6   r7   r8   r9   r:   r;   r<   r   r=   r>   r@   ©r    r,   r$   r$   r%   r   u   s   
úþ
zDNSName.__init__r@   c                 C   rC   r   rD   rF   r$   r$   r%   rI   Š   rJ   z DNSName._init_without_validationc                 C   rQ   )Nz<DNSName(value={0!r})>rR   r+   r$   r$   r%   rT   �   rU   zDNSName.__repr__c                 C   rV   r   )r5   rj   rW   r,   rX   r$   r$   r%   rZ   “   r[   zDNSName.__eq__c                 C   r\   r   r$   rX   r$   r$   r%   r]   ™   r^   zDNSName.__ne__c                 C   r_   r   r`   r+   r$   r$   r%   rb   œ   r^   zDNSName.__hash__N)r&   r'   r(   r   r   rd   r,   re   rI   rT   rZ   r]   rb   r$   r$   r$   r%   rj   s   s    

rj   c                   @   r/   )ÚUniformResourceIdentifierc                 C   s\   t |tjƒr%z| d¡ W n ty$   |  |¡}tjdtj	dd� Y nw t
dƒ‚|| _d S )Nr1   zÃURI 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   r2   r4   rk   rl   r$   r$   r%   r   ¢   s   

úþ
z"UniformResourceIdentifier.__init__r@   c                 C   rC   r   rD   rF   r$   r$   r%   rI   ·   rJ   z2UniformResourceIdentifier._init_without_validationc                 C   sh   t  |¡}|jrt |j¡d |j¡ d¡  d¡}n	t |j¡ d¡}t  |j	||j
|j|j|jf¡S )Nz:{0}r1   )r   ÚurlparseÚportrM   r8   ÚhostnamerS   rN   Ú
urlunparseÚschemeÚpathÚparamsÚqueryÚfragment)r    r,   ÚparsedÚnetlocr$   r$   r%   r:   ½   s    

ÿýúz&UniformResourceIdentifier._idna_encodec                 C   rQ   )Nz(<UniformResourceIdentifier(value={0!r})>rR   r+   r$   r$   r%   rT   Ó   rU   z"UniformResourceIdentifier.__repr__c                 C   rV   r   )r5   rm   rW   r,   rX   r$   r$   r%   rZ   Ö   r[   z UniformResourceIdentifier.__eq__c                 C   r\   r   r$   rX   r$   r$   r%   r]   Ü   r^   z UniformResourceIdentifier.__ne__c                 C   r_   r   r`   r+   r$   r$   r%   rb   ß   r^   z"UniformResourceIdentifier.__hash__Nrc   r$   r$   r$   r%   rm       s    

rm   c                   @   ó>   e Zd Zdd„ Ze d¡Zdd„ Zdd„ Zdd	„ Z	d
d„ Z
dS )ÚDirectoryNamec                 C   ó   t |tƒs	tdƒ‚|| _d S )Nzvalue must be a Name)r5   r   r>   r@   rl   r$   r$   r%   r   å   ó   

zDirectoryName.__init__r@   c                 C   rQ   )Nz<DirectoryName(value={0})>rR   r+   r$   r$   r%   rT   í   rU   zDirectoryName.__repr__c                 C   rV   r   )r5   rz   rW   r,   rX   r$   r$   r%   rZ   ð   r[   zDirectoryName.__eq__c                 C   r\   r   r$   rX   r$   r$   r%   r]   ö   r^   zDirectoryName.__ne__c                 C   r_   r   r`   r+   r$   r$   r%   rb   ù   r^   zDirectoryName.__hash__N©r&   r'   r(   r   r   rd   r,   rT   rZ   r]   rb   r$   r$   r$   r%   rz   ã   ó    
rz   c                   @   ry   )ÚRegisteredIDc                 C   r{   )Nz!value must be an ObjectIdentifier)r5   r	   r>   r@   rl   r$   r$   r%   r   ÿ   r|   zRegisteredID.__init__r@   c                 C   rQ   )Nz<RegisteredID(value={0})>rR   r+   r$   r$   r%   rT     rU   zRegisteredID.__repr__c                 C   rV   r   )r5   r   rW   r,   rX   r$   r$   r%   rZ   
  r[   zRegisteredID.__eq__c                 C   r\   r   r$   rX   r$   r$   r%   r]     r^   zRegisteredID.__ne__c                 C   r_   r   r`   r+   r$   r$   r%   rb     r^   zRegisteredID.__hash__Nr}   r$   r$   r$   r%   r   ý   r~   r   c                   @   ry   )Ú	IPAddressc                 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)r5   Ú	ipaddressÚIPv4AddressÚIPv6AddressÚIPv4NetworkÚIPv6Networkr>   r@   rl   r$   r$   r%   r     s   üþ	ÿ
zIPAddress.__init__r@   c                 C   rQ   )Nz<IPAddress(value={0})>rR   r+   r$   r$   r%   rT   -  rU   zIPAddress.__repr__c                 C   rV   r   )r5   r€   rW   r,   rX   r$   r$   r%   rZ   0  r[   zIPAddress.__eq__c                 C   r\   r   r$   rX   r$   r$   r%   r]   6  r^   zIPAddress.__ne__c                 C   r_   r   r`   r+   r$   r$   r%   rb   9  r^   zIPAddress.__hash__Nr}   r$   r$   r$   r%   r€     s    
r€   c                   @   sH   e Zd Zdd„ Ze d¡Ze d¡Zdd„ Zdd„ Z	d	d
„ Z
dd„ ZdS )Ú	OtherNamec                 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)r5   r	   r>   ÚbytesÚ_type_idr@   )r    Útype_idr,   r$   r$   r%   r   ?  s   


zOtherName.__init__rˆ   r@   c                 C   s   d  | j| j¡S )Nz%<OtherName(type_id={0}, value={1!r})>)rS   r‰   r,   r+   r$   r$   r%   rT   K  s   ÿzOtherName.__repr__c                 C   s&   t |tƒstS | j|jko| j|jkS r   )r5   r†   rW   r‰   r,   rX   r$   r$   r%   rZ   O  s   
zOtherName.__eq__c                 C   r\   r   r$   rX   r$   r$   r%   r]   U  r^   zOtherName.__ne__c                 C   s   t | j| jfƒS r   )ra   r‰   r,   r+   r$   r$   r%   rb   X  s   zOtherName.__hash__N)r&   r'   r(   r   r   rd   r‰   r,   rT   rZ   r]   rb   r$   r$   r$   r%   r†   =  s    
	
r†   )#Ú
__future__r   r   r   r-   r�   r;   Úemail.utilsr   rM   r6   Ú	six.movesr   Úcryptographyr   Úcryptography.x509.namer   Úcryptography.x509.oidr	   Ú_GENERAL_NAMESÚ	Exceptionr   Úadd_metaclassÚABCMetaÚobjectr*   Úregister_interfacer0   r:   rj   rm   rz   r   r€   r†   r$   r$   r$   r%   Ú<module>   sN   ÷
7	,B%