3
l_c @ s d dl mZmZmZ d dlmZ d dlZd dlmZ d dl m
Z
d dlmZm
Z
G dd deZd d
eD Ze ZejejejejejejejejejejejejiZejdejdejd
ejdejdejdej dejdej!di Z"dd Z#G dd deZ$G dd deZ%G dd deZ&dS ) )absolute_importdivisionprint_function)EnumN)utils)_get_backend)NameOIDObjectIdentifierc @ s4 e Zd ZdZdZdZdZdZdZdZ dZ
d Zd
ZdS ) _ASN1Type N)
__name__
__module____qualname__
UTF8StringZ
NumericStringPrintableStringZ T61String IA5StringZUTCTimeZGeneralizedTimeZ
VisibleStringZUniversalStringZ BMPString r r /usr/lib64/python3.6/name.pyr
s r
c C s i | ]}||j qS r )value).0ir r r
s r ZCNLZSTOZOUCZSTREETZDCZUIDc 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 ZefddZejdZejdZdd Z dd Z
d d
Zdd Zd
d Z
dS )
NameAttributec C s t |tstdt |tjs&td|tjks:|tjkrTt|j ddkrTt
d|tkrjtj
|tj}t |ts|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 TypeErrorsixZ text_typer COUNTRY_NAMEJURISDICTION_COUNTRY_NAMElenencode
ValueError _SENTINEL_NAMEOID_DEFAULT_TYPEgetr
r _oid_value_type)selfoidr rD r r r __init__P s"
zNameAttribute.__init__rB rC c C s$ t j| j| jj}d|t| jf 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&