o
    c                     @   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 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 )    N)	parseaddr)Name)ObjectIdentifierc                   @   s   e Zd ZdS )UnsupportedGeneralNameTypeN)__name__
__module____qualname__ r	   r	   K/opt/certbot/lib/python3.10/site-packages/cryptography/x509/general_name.pyr      s    r   c                   @   s&   e Zd ZeejdejfddZdS )GeneralName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abstractmethodtypingAnyr   r	   r	   r	   r
   r      s    r   )	metaclassc                   @   t   e Zd ZdeddfddZedefddZededd fdd	Zdefd
dZ	de
defddZdefddZdS )
RFC822Namer   r   Nc                 C   s^   t |trz|d W n ty   tdw tdt|\}}|s&|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
   __init__$   s   

zRFC822Name.__init__c                 C      | j S Nr    r   r	   r	   r
   r   9      zRFC822Name.valuec                 C      |  | }||_|S r%   __new__r    clsr   instancer	   r	   r
   _init_without_validation=      
z#RFC822Name._init_without_validationc                 C      d | jS )Nz<RFC822Name(value={0!r})>formatr   r   r	   r	   r
   __repr__C      zRFC822Name.__repr__otherc                 C      t |tstS | j|jkS r%   )r   r   NotImplementedr   r   r5   r	   r	   r
   __eq__F      
zRFC822Name.__eq__c                 C   
   t | jS r%   hashr   r   r	   r	   r
   __hash__L      
zRFC822Name.__hash__r   r   r   r   r#   r   r   classmethodr.   r3   objectboolr9   intr>   r	   r	   r	   r
   r   #   s    r   c                   @   r   )DNSNamer   r   Nc                 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   r   r   r   r   r   r   r    r   r   r	   r	   r
   r#   Q      

zDNSName.__init__c                 C   r$   r%   r&   r   r	   r	   r
   r   `   r'   zDNSName.valuec                 C   r(   r%   r)   r+   r	   r	   r
   r.   d   r/   z DNSName._init_without_validationc                 C   r0   )Nz<DNSName(value={0!r})>r1   r   r	   r	   r
   r3   j   r4   zDNSName.__repr__r5   c                 C   r6   r%   )r   rE   r7   r   r8   r	   r	   r
   r9   m   r:   zDNSName.__eq__c                 C   r;   r%   r<   r   r	   r	   r
   r>   s   r?   zDNSName.__hash__r@   r	   r	   r	   r
   rE   P   s    rE   c                   @   r   )UniformResourceIdentifierr   r   Nc                 C   rF   )Nr   zzURI values should be passed as an A-label string. This means unicode characters should be encoded via a library like idna.r   rG   rH   r	   r	   r
   r#   x   rI   z"UniformResourceIdentifier.__init__c                 C   r$   r%   r&   r   r	   r	   r
   r      r'   zUniformResourceIdentifier.valuec                 C   r(   r%   r)   r+   r	   r	   r
   r.      s   
z2UniformResourceIdentifier._init_without_validationc                 C   r0   )Nz(<UniformResourceIdentifier(value={0!r})>r1   r   r	   r	   r
   r3      r4   z"UniformResourceIdentifier.__repr__r5   c                 C   r6   r%   )r   rJ   r7   r   r8   r	   r	   r
   r9      r:   z UniformResourceIdentifier.__eq__c                 C   r;   r%   r<   r   r	   r	   r
   r>      r?   z"UniformResourceIdentifier.__hash__r@   r	   r	   r	   r
   rJ   w   s    rJ   c                   @   ^   e Zd ZdeddfddZedefddZdefdd	Zd
e	de
fddZdefddZdS )DirectoryNamer   r   Nc                 C      t |ts	td|| _d S )Nzvalue must be a Name)r   r   r   r    rH   r	   r	   r
   r#         

zDirectoryName.__init__c                 C   r$   r%   r&   r   r	   r	   r
   r      r'   zDirectoryName.valuec                 C   r0   )Nz<DirectoryName(value={})>r1   r   r	   r	   r
   r3      r4   zDirectoryName.__repr__r5   c                 C   r6   r%   )r   rL   r7   r   r8   r	   r	   r
   r9      r:   zDirectoryName.__eq__c                 C   r;   r%   r<   r   r	   r	   r
   r>      r?   zDirectoryName.__hash__)r   r   r   r   r#   r   r   r   r3   rB   rC   r9   rD   r>   r	   r	   r	   r
   rL          rL   c                   @   rK   )RegisteredIDr   r   Nc                 C   rM   )Nz!value must be an ObjectIdentifier)r   r   r   r    rH   r	   r	   r
   r#      rN   zRegisteredID.__init__c                 C   r$   r%   r&   r   r	   r	   r
   r      r'   zRegisteredID.valuec                 C   r0   )Nz<RegisteredID(value={})>r1   r   r	   r	   r
   r3      r4   zRegisteredID.__repr__r5   c                 C   r6   r%   )r   rP   r7   r   r8   r	   r	   r
   r9      r:   zRegisteredID.__eq__c                 C   r;   r%   r<   r   r	   r	   r
   r>      r?   zRegisteredID.__hash__)r   r   r   r   r#   r   r   r   r3   rB   rC   r9   rD   r>   r	   r	   r	   r
   rP      rO   rP   c                   @   sl   e Zd ZdeddfddZedefddZdefdd	Zde	fd
dZ
dedefddZdefddZdS )	IPAddressr   r   Nc                 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    rH   r	   r	   r
   r#      s   	
zIPAddress.__init__c                 C   r$   r%   r&   r   r	   r	   r
   r      r'   zIPAddress.valuec                 C   s0   t | jtjtjfr| jjS | jjj| jjj S r%   )r   r   rR   rS   rT   packednetwork_addressnetmaskr   r	   r	   r
   _packed   s   zIPAddress._packedc                 C   r0   )Nz<IPAddress(value={})>r1   r   r	   r	   r
   r3      r4   zIPAddress.__repr__r5   c                 C   r6   r%   )r   rQ   r7   r   r8   r	   r	   r
   r9      r:   zIPAddress.__eq__c                 C   r;   r%   r<   r   r	   r	   r
   r>      r?   zIPAddress.__hash__)r   r   r   _IPADDRESS_TYPESr#   r   r   bytesrZ   r   r3   rB   rC   r9   rD   r>   r	   r	   r	   r
   rQ      s    
rQ   c                   @   st   e Zd ZdededdfddZedefddZedefd	d
Z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   r   Nc                 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   r\   _type_idr    )r   r^   r   r	   r	   r
   r#      s   


zOtherName.__init__c                 C   r$   r%   )r_   r   r	   r	   r
   r^     r'   zOtherName.type_idc                 C   r$   r%   r&   r   r	   r	   r
   r     r'   zOtherName.valuec                 C   s   d | j| jS )Nz#<OtherName(type_id={}, value={!r})>)r2   r^   r   r   r	   r	   r
   r3     s   zOtherName.__repr__r5   c                 C   s&   t |tstS | j|jko| j|jkS r%   )r   r]   r7   r^   r   r8   r	   r	   r
   r9     s   
zOtherName.__eq__c                 C   s   t | j| jfS r%   )r=   r^   r   r   r	   r	   r
   r>     s   zOtherName.__hash__)r   r   r   r   r\   r#   r   r^   r   r   r3   rB   rC   r9   rD   r>   r	   r	   r	   r
   r]      s    	r]   )r   rR   r   email.utilsr   cryptography.x509.namer   cryptography.x509.oidr   UnionrS   rT   rU   rV   r[   	Exceptionr   ABCMetar   r   rE   rJ   rL   rP   rQ   r]   r	   r	   r	   r
   <module>   s,   	-').