File: //usr/lib/python3/dist-packages/cryptography/x509/__pycache__/name.cpython-38.pyc
U
�>bA! � @ s d dl Z d dlmZ d dlmZ d dlmZmZ G dd� dej�Z dd� e D �Z
e� Zej
e jeje jeje jeje jeje jeje jiZejd ejd
ejdejdejd
ej
dejdejdejdi Zdd� ZG dd� de�ZG dd� de�Z G dd� de�Z!dS )� N)�utils)�_get_backend)�NameOID�ObjectIdentifierc @ s4 e Zd ZdZdZdZdZdZdZdZ dZ
d Zd
ZdS )� _ASN1Type� � � � � � � � � � N)
�__name__�
__module__�__qualname__�
UTF8StringZ
NumericString�PrintableStringZ T61String� IA5StringZUTCTimeZGeneralizedTimeZ
VisibleStringZUniversalStringZ BMPString� r r �8/usr/lib/python3/dist-packages/cryptography/x509/name.pyr s r c C s i | ]}|j |�qS r )�value��.0�ir r r �
<dictcomp> s r ZCN�LZST�OZOU�CZSTREETZDCZUIDc C s� | sdS | � dd�} | � dd�} | � dd�} | � dd �} | � d
d�} | � dd
�} | � dd�} | � dd�} | d dkr|d| } | d dkr�| dd� d } | S )z>Escape special characters in RFC4514 Distinguished Name value.� �\z\\�"z\"�+z\+�,z\,�;z\;�<z\<�>z\>� z\00r )�#� ���r+ Nz\ )�replace)�valr r r �_escape_dn_value3 s r/ c @ s~ e Zd Zefeed�dd�Ze�d�Z e�d�Z
ed�dd�Zee
d �d
d�Zee
d �dd
�Zed�dd�Zed�dd�ZdS )�
NameAttribute)�oidr c C s� t |t�std��t |t�s$td��|tjks8|tjkrRt|�d��dkrRt d��|t
krht�|t
j�}t |t
�sztd��|| _|| _|| _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 codez%_type must be from the _ASN1Type enum)�
isinstancer � TypeError�strr �COUNTRY_NAME�JURISDICTION_COUNTRY_NAME�len�encode�
ValueError� _SENTINEL�_NAMEOID_DEFAULT_TYPE�getr r �_oid�_value�_type)�selfr1 r rA r r r �__init__L s*
�
���
zNameAttribute.__init__r? r@ ��returnc C s$ t �| j| jj�}d|t| j�f S )z�
Format as RFC4514 Distinguished Name string.
Use short attribute name if available, otherwise fall back to OID
dotted string.
z%s=%s)�_NAMEOID_TO_NAMEr>