File: //snap/core20/2669/usr/lib/python3/dist-packages/cryptography/x509/__pycache__/name.cpython-38.pyc
U
�e�]� � @ s d dl mZmZmZ d dlmZ d dlZd dlmZ d dl m
Z
mZ G dd� de�Ze
dd � eD ��Ze� Ze
jeje
jeje
jeje
jeje
jeje
jejiZe
jd
e
jde
jde
jd
e
jde
jde
jde
jde
j di Z!dd� Z"G dd� de�Z#G dd� de�Z$G dd� de�Z%dS )� )�absolute_import�division�print_function)�EnumN)�utils)�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 | ]}|j |fV qd S �N)�value��.0�ir r r � <genexpr> s r! ZCN�LZST�OZOU�CZSTREETZDCZUIDc C s� | � dd�} | � dd�} | � dd�} | � dd�} | � d d
�} | � dd�} | � d
d�} | � dd�} | d dkrtd| } | 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_value6 s r2 c @ sT e Zd Zefdd�Ze�d�Ze�d�Zdd� Z dd� Z
d d
� Zdd� Zd
d� Z
dS )�
NameAttributec C s� t |t�std��t |tj�s&td��|tjks:|tjkrTt|� d��dkrTt
d��t|�dkrht
d��|tkr~t�
|tj�}t |t�s�td��|| _|| _|| _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 zValue cannot be an empty stringz%_type must be from the _ASN1Type enum)�
isinstancer � TypeError�sixZ text_typer �COUNTRY_NAME�JURISDICTION_COUNTRY_NAME�len�encode�
ValueError� _SENTINEL�_NAMEOID_DEFAULT_TYPE�getr r �_oid�_value�_type)�self�oidr rC r r r �__init__L s2
�����
zNameAttribute.__init__rA rB c 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@ rE Z
dotted_stringr2 r )rD �keyr r r �rfc4514_stringv s zNameAttribute.rfc4514_stringc C s&