3
lá˜_c ã @ s d dl mZmZmZ d dlmZ d dlZd dlmZ d dl m
Z
d dlmZm
Z
G dd„ deƒZd d
„ eD ƒZeƒ ZejejejejejejejejejejejejiZejdejdejd
ejdejdejdej dejdej!di Z"dd„ Z#G dd„ deƒZ$G dd„ deƒZ%G dd„ deƒZ&dS )é )Úabsolute_importÚdivisionÚprint_function)ÚEnumN)Ú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 ú/usr/lib64/python3.6/name.pyr
s r
c C s i | ]}||j “qS r )Úvalue)Ú.0Úir r r ú
s r ZCNÚLZSTÚOZOUÚCZSTREETZDCZUIDc C sœ | sdS | j ddƒ} | j ddƒ} | j ddƒ} | j dd ƒ} | j d
dƒ} | j dd
ƒ} | j ddƒ} | j 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\00r ú#ú é Nz\ )r- r. éÿÿÿÿr0 )Úreplace)Úvalr r r Ú_escape_dn_value7 s r3 c @ sT e Zd Zefdd„ZejdƒZejdƒZdd„ Z dd„ Z
d d
„ Zdd„ Zd
d„ Z
dS )Ú
NameAttributec C s’ t |tƒstdƒ‚t |tjƒs&tdƒ‚|tjks:|tjkrTt|j dƒƒdkrTt
dƒ‚|tkrjtj
|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 codez%_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 rD r r r Ú__init__P s"
zNameAttribute.__init__rB rC c C s$ t j| 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_NAMErA rF Z
dotted_stringr3 r )rE Úkeyr r r Úrfc4514_stringu s zNameAttribute.rfc4514_stringc C s&