o
    9f                     @  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
   >lib/python3.10/site-packages/cryptography/x509/general_name.pyr      s    r   c                   @  s    e Zd ZeejdddZdS )GeneralNamereturn
typing.Anyc                 C  s   dS )z0
        Return the value of the object
        Nr
   selfr
   r
   r   value   s    zGeneralName.valueN)r   r   )r   r   r	   propertyabcabstractmethodr   r
   r
   r
   r   r      s    r   )	metaclassc                   @  P   e Zd ZdddZedddZedd	d
ZdddZdddZ	dddZ
dS )
RFC822Namer   strr   Nonec                 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)
isinstancer   encodeUnicodeEncodeError
ValueError	TypeErrorr   _value)r   r   nameZaddressr
   r
   r   __init__%   s   

zRFC822Name.__init__c                 C     | j S Nr!   r   r
   r
   r   r   :      zRFC822Name.valuec                 C     |  | }||_|S r%   __new__r!   clsr   instancer
   r
   r   _init_without_validation>      
z#RFC822Name._init_without_validationc                 C     d| j dS )Nz<RFC822Name(value=)>r   r   r
   r
   r   __repr__D      zRFC822Name.__repr__otherobjectboolc                 C     t |tstS | j|jkS r%   )r   r   NotImplementedr   r   r5   r
   r
   r   __eq__G      
zRFC822Name.__eq__intc                 C  
   t | jS r%   hashr   r   r
   r
   r   __hash__M      
zRFC822Name.__hash__Nr   r   r   r   r   r   )r   r   r   r   r5   r6   r   r7   r   r=   r   r   r	   r#   r   r   classmethodr.   r3   r;   rA   r
   r
   r
   r   r   $   s    


r   c                   @  r   )DNSNamer   r   r   r   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   r   r   r   r   r   r    r!   r   r   r
   r
   r   r#   R      

zDNSName.__init__c                 C  r$   r%   r&   r   r
   r
   r   r   a   r'   zDNSName.valuec                 C  r(   r%   r)   r+   r
   r
   r   r.   e   r/   z DNSName._init_without_validationc                 C  r0   )Nz<DNSName(value=r1   r2   r   r
   r
   r   r3   k   r4   zDNSName.__repr__r5   r6   r7   c                 C  r8   r%   )r   rI   r9   r   r:   r
   r
   r   r;   n   r<   zDNSName.__eq__r=   c                 C  r>   r%   r?   r   r
   r
   r   rA   t   rB   zDNSName.__hash__NrC   rD   )r   r   r   rI   rE   rF   rG   r
   r
   r
   r   rI   Q       


rI   c                   @  r   )UniformResourceIdentifierr   r   r   r   c                 C  rJ   )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#   y   rM   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.      r/   z2UniformResourceIdentifier._init_without_validationc                 C  r0   )Nz!<UniformResourceIdentifier(value=r1   r2   r   r
   r
   r   r3      r4   z"UniformResourceIdentifier.__repr__r5   r6   r7   c                 C  r8   r%   )r   rO   r9   r   r:   r
   r
   r   r;      r<   z UniformResourceIdentifier.__eq__r=   c                 C  r>   r%   r?   r   r
   r
   r   rA      rB   z"UniformResourceIdentifier.__hash__NrC   rD   )r   r   r   rO   rE   rF   rG   r
   r
   r
   r   rO   x   rN   rO   c                   @  B   e Zd ZdddZedddZdd
dZdddZdddZdS )DirectoryNamer   r   r   r   c                 C     t |ts	td|| _d S )Nzvalue must be a Name)r   r   r    r!   rL   r
   r
   r   r#         

zDirectoryName.__init__c                 C  r$   r%   r&   r   r
   r
   r   r      r'   zDirectoryName.valuer   c                 C     d| j  dS )Nz<DirectoryName(value=r1   r2   r   r
   r
   r   r3      r4   zDirectoryName.__repr__r5   r6   r7   c                 C  r8   r%   )r   rQ   r9   r   r:   r
   r
   r   r;      r<   zDirectoryName.__eq__r=   c                 C  r>   r%   r?   r   r
   r
   r   rA      rB   zDirectoryName.__hash__N)r   r   r   r   )r   r   rD   rE   rF   	r   r   r	   r#   r   r   r3   r;   rA   r
   r
   r
   r   rQ          


rQ   c                   @  rP   )RegisteredIDr   r   r   r   c                 C  rR   )Nz!value must be an ObjectIdentifier)r   r   r    r!   rL   r
   r
   r   r#      rS   zRegisteredID.__init__c                 C  r$   r%   r&   r   r
   r
   r   r      r'   zRegisteredID.valuer   c                 C  rT   )Nz<RegisteredID(value=r1   r2   r   r
   r
   r   r3      r4   zRegisteredID.__repr__r5   r6   r7   c                 C  r8   r%   )r   rW   r9   r   r:   r
   r
   r   r;      r<   zRegisteredID.__eq__r=   c                 C  r>   r%   r?   r   r
   r
   r   rA      rB   zRegisteredID.__hash__N)r   r   r   r   r   r   rD   rE   rF   rU   r
   r
   r
   r   rW      rV   rW   c                   @  sL   e Zd ZdddZedddZdd
dZdddZdddZdddZ	dS )	IPAddressr   _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!   rL   r
   r
   r   r#      s   	
zIPAddress.__init__c                 C  r$   r%   r&   r   r
   r
   r   r      r'   zIPAddress.valuebytesc                 C  s0   t | jtjtjfr| jjS | jjj| jjj S r%   )r   r   r[   r\   r]   ZpackedZnetwork_addressZnetmaskr   r
   r
   r   _packed   s   zIPAddress._packedr   c                 C  rT   )Nz<IPAddress(value=r1   r2   r   r
   r
   r   r3      r4   zIPAddress.__repr__r5   r6   r7   c                 C  r8   r%   )r   rY   r9   r   r:   r
   r
   r   r;      r<   zIPAddress.__eq__r=   c                 C  r>   r%   r?   r   r
   r
   r   rA      rB   zIPAddress.__hash__N)r   rZ   r   r   )r   rZ   r   r`   rD   rE   rF   )
r   r   r	   r#   r   r   ra   r3   r;   rA   r
   r
   r
   r   rY      s    




rY   c                   @  sP   e Zd ZdddZedd	d
ZedddZdddZdddZdddZ	dS )	OtherNametype_idr   r   r`   r   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    r`   _type_idr!   )r   rd   r   r
   r
   r   r#      s   


zOtherName.__init__c                 C  r$   r%   )re   r   r
   r
   r   rd     r'   zOtherName.type_idc                 C  r$   r%   r&   r   r
   r
   r   r     r'   zOtherName.valuer   c                 C  s   d| j  d| jdS )Nz<OtherName(type_id=z, value=r1   )rd   r   r   r
   r
   r   r3     s   zOtherName.__repr__r5   r6   r7   c                 C  s&   t |tstS | j|jko| j|jkS r%   )r   rc   r9   rd   r   r:   r
   r
   r   r;     s   
zOtherName.__eq__r=   c                 C  s   t | j| jfS r%   )r@   rd   r   r   r
   r
   r   rA     s   zOtherName.__hash__N)rd   r   r   r`   r   r   rX   rb   rD   rE   rF   )
r   r   r	   r#   r   rd   r   r3   r;   rA   r
   r
   r
   r   rc      s    
	

rc   )Z
__future__r   r   r[   typingZemail.utilsr   Zcryptography.x509.namer   Zcryptography.x509.oidr   ZUnionr\   r]   r^   r_   rZ   	Exceptionr   ABCMetar   r   rI   rO   rQ   rW   rY   rc   r
   r
   r
   r   <module>   s.   	-''.