o
    ™¨Êhö  ã                   @   sÔ   d dl mZmZmZ d dlmZ d dlZd dlmZ d dl	m
Z
mZ G dd„ deƒZedd	„ eD ƒƒZeƒ Ze
jeje
jeje
jeje
jeje
jeje
jejiZG d
d„ deƒZG dd„ deƒZG dd„ deƒZdS )é    )Úabsolute_importÚdivisionÚprint_function)ÚEnumN)Úutils)ÚNameOIDÚObjectIdentifierc                   @   s4   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdS )Ú	_ASN1Typeé   é   é   é   é   é   é   é   é   é   N)Ú__name__Ú
__module__Ú__qualname__Ú
UTF8StringÚNumericStringÚPrintableStringÚ	T61StringÚ	IA5StringÚUTCTimeÚGeneralizedTimeÚVisibleStringÚUniversalStringÚ	BMPString© r!   r!   úH/var/www/html/env/lib/python3.10/site-packages/cryptography/x509/name.pyr	      s    r	   c                 c   s   � | ]}|j |fV  qd S ©N)Úvalue©Ú.0Úir!   r!   r"   Ú	<genexpr>   ó   € r(   c                   @   sL   e Zd Zefdd„Ze d¡Ze d¡Zdd„ Z	dd„ Z
d	d
„ Zdd„ ZdS )ÚNameAttributec                 C   s¦   t |tƒs	tdƒ‚t |tjƒstdƒ‚|tjks|tjkr*t| 	d¡ƒdkr*t
dƒ‚t|ƒdkr4t
dƒ‚|tkr?t |tj¡}t |tƒsHtdƒ‚|| _|| _|| _d S )	Nz2oid argument must be an ObjectIdentifier instance.z#value argument must be a text type.Úutf8é   z/Country name must be a 2 character country coder   zValue cannot be an empty stringz%_type must be from the _ASN1Type enum)Ú
isinstancer   Ú	TypeErrorÚsixÚ	text_typer   ÚCOUNTRY_NAMEÚJURISDICTION_COUNTRY_NAMEÚlenÚencodeÚ
ValueErrorÚ	_SENTINELÚ_NAMEOID_DEFAULT_TYPEÚgetr	   r   Ú_oidÚ_valueÚ_type)ÚselfÚoidr$   r;   r!   r!   r"   Ú__init__)   s.   
ÿÿ

ÿ

zNameAttribute.__init__r9   r:   c                 C   s&   t |tƒstS | j|jko| j|jkS r#   )r-   r*   ÚNotImplementedr=   r$   ©r<   Úotherr!   r!   r"   Ú__eq__S   s
   

þzNameAttribute.__eq__c                 C   ó
   | |k S r#   r!   r@   r!   r!   r"   Ú__ne__\   ó   
zNameAttribute.__ne__c                 C   s   t | j| jfƒS r#   )Úhashr=   r$   ©r<   r!   r!   r"   Ú__hash___   s   zNameAttribute.__hash__c                 C   s
   d  | ¡S )Nz/<NameAttribute(oid={0.oid}, value={0.value!r})>)ÚformatrG   r!   r!   r"   Ú__repr__b   rE   zNameAttribute.__repr__N)r   r   r   r6   r>   r   Úread_only_propertyr=   r$   rB   rD   rH   rJ   r!   r!   r!   r"   r*   (   s    
'
	r*   c                   @   sL   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dS )ÚRelativeDistinguishedNamec                 C   s\   t |ƒ}|s
tdƒ‚tdd„ |D ƒƒstdƒ‚|| _t|ƒ| _t| jƒt|ƒkr,tdƒ‚d S )Nz-a relative distinguished name cannot be emptyc                 s   ó   � | ]}t |tƒV  qd S r#   ©r-   r*   ©r&   Úxr!   r!   r"   r(   k   r)   z5RelativeDistinguishedName.__init__.<locals>.<genexpr>z/attributes must be an iterable of NameAttributez$duplicate attributes are not allowed)Úlistr5   Úallr.   Ú_attributesÚ	frozensetÚ_attribute_setr3   ©r<   Ú
attributesr!   r!   r"   r>   g   s   
ÿz"RelativeDistinguishedName.__init__c                    ó   ‡ fdd„| D ƒS )Nc                    ó   g | ]	}|j ˆ kr|‘qS r!   ©r=   r%   rZ   r!   r"   Ú
<listcomp>v   ó    zDRelativeDistinguishedName.get_attributes_for_oid.<locals>.<listcomp>r!   ©r<   r=   r!   rZ   r"   Úget_attributes_for_oidu   ó   z0RelativeDistinguishedName.get_attributes_for_oidc                 C   ó   t |tƒstS | j|jkS r#   )r-   rL   r?   rU   r@   r!   r!   r"   rB   x   ó   
z RelativeDistinguishedName.__eq__c                 C   rC   r#   r!   r@   r!   r!   r"   rD   ~   rE   z RelativeDistinguishedName.__ne__c                 C   ó
   t | jƒS r#   )rF   rU   rG   r!   r!   r"   rH   �   rE   z"RelativeDistinguishedName.__hash__c                 C   rb   r#   )ÚiterrS   rG   r!   r!   r"   Ú__iter__„   rE   z"RelativeDistinguishedName.__iter__c                 C   rb   r#   )r3   rS   rG   r!   r!   r"   Ú__len__‡   rE   z!RelativeDistinguishedName.__len__c                 C   ó   d  t| ƒ¡S )Nz"<RelativeDistinguishedName({0!r})>©rI   rQ   rG   r!   r!   r"   rJ   Š   ó   z"RelativeDistinguishedName.__repr__N)r   r   r   r>   r^   rB   rD   rH   rd   re   rJ   r!   r!   r!   r"   rL   f   s    rL   c                   @   s`   e Zd Zdd„ Zdd„ Zedd„ ƒZdd„ Zd	d
„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ ZdS )ÚNamec                 C   sR   t |ƒ}tdd„ |D ƒƒrdd„ |D ƒ| _d S tdd„ |D ƒƒr%|| _d S tdƒ‚)Nc                 s   rM   r#   rN   rO   r!   r!   r"   r(   ‘   r)   z Name.__init__.<locals>.<genexpr>c                 S   s   g | ]}t |gƒ‘qS r!   )rL   rO   r!   r!   r"   r[   ’   s    
ÿz!Name.__init__.<locals>.<listcomp>c                 s   rM   r#   )r-   rL   rO   r!   r!   r"   r(   •   r)   zNattributes must be a list of NameAttribute or a list RelativeDistinguishedName)rQ   rR   rS   r.   rV   r!   r!   r"   r>   �   s   ÿ
ÿzName.__init__c                    rX   )Nc                    rY   r!   rZ   r%   rZ   r!   r"   r[   ž   r\   z/Name.get_attributes_for_oid.<locals>.<listcomp>r!   r]   r!   rZ   r"   r^   �   r_   zName.get_attributes_for_oidc                 C   s   | j S r#   ©rS   rG   r!   r!   r"   Úrdns    s   z	Name.rdnsc                 C   s
   |  | ¡S r#   )Úx509_name_bytes)r<   Úbackendr!   r!   r"   Úpublic_bytes¤   rE   zName.public_bytesc                 C   r`   r#   )r-   ri   r?   rS   r@   r!   r!   r"   rB   §   ra   zName.__eq__c                 C   rC   r#   r!   r@   r!   r!   r"   rD   ­   rE   zName.__ne__c                 C   s   t t| jƒƒS r#   )rF   ÚtuplerS   rG   r!   r!   r"   rH   °   s   zName.__hash__c                 c   s"   � | j D ]
}|D ]}|V  qqd S r#   rj   )r<   ÚrdnÚavar!   r!   r"   rd   µ   s   €
ÿÿzName.__iter__c                 C   s   t dd„ | jD ƒƒS )Nc                 s   s   � | ]}t |ƒV  qd S r#   )r3   )r&   rp   r!   r!   r"   r(   »   s   € zName.__len__.<locals>.<genexpr>)ÚsumrS   rG   r!   r!   r"   re   º   s   zName.__len__c                 C   rf   )Nz<Name({0!r})>rg   rG   r!   r!   r"   rJ   ½   rh   zName.__repr__N)r   r   r   r>   r^   Úpropertyrk   rn   rB   rD   rH   rd   re   rJ   r!   r!   r!   r"   ri   Ž   s    
ri   )Ú
__future__r   r   r   Úenumr   r/   Úcryptographyr   Úcryptography.x509.oidr   r   r	   ÚdictÚ_ASN1_TYPE_TO_ENUMÚobjectr6   r1   r   r2   ÚSERIAL_NUMBERÚDN_QUALIFIERÚEMAIL_ADDRESSr   ÚDOMAIN_COMPONENTr7   r*   rL   ri   r!   r!   r!   r"   Ú<module>   s$   ú
>(