Current File : //usr/lib64/python3.9/site-packages/cryptography/x509/__pycache__/name.cpython-39.pyc
a

�aE(�@s(UddlZddlZddlmZddlmZddlmZm	Z	Gdd�dej
�Zdd�eD�Ze
�ZejejejejejejejejejejejejiZeje	efZejd	ejd
ejdejdejd
ejdej dejdej!di	Z"ee#d<eed�dd�Z$Gdd�de
�Z%Gdd�de
�Z&Gdd�de
�Z'dS)�N)�utils)�x509)�NameOID�ObjectIdentifierc@s4eZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdS)�	_ASN1Type����������N)
�__name__�
__module__�__qualname__�
UTF8StringZ
NumericString�PrintableStringZ	T61String�	IA5StringZUTCTimeZGeneralizedTimeZ
VisibleStringZUniversalStringZ	BMPString�rr�</usr/lib64/python3.9/site-packages/cryptography/x509/name.pyrsrcCsi|]}|j|�qSr)�value��.0�irrr�
<dictcomp>�rZCN�LZST�OZOU�CZSTREETZDCZUID�_NAMEOID_TO_NAME)�val�returncCs�|sdS|�dd�}|�dd�}|�dd�}|�dd	�}|�d
d�}|�dd
�}|�dd�}|�dd�}|ddvr|d|}|ddkr�|dd�d}|S)z>Escape special characters in RFC4514 Distinguished Name value.��\z\\�"z\"�+z\+�,z\,�;z\;�<z\<�>z\>�z\00r)�#� ���r/Nz\ )�replace)r#rrr�_escape_dn_value9sr2c@s�eZdZefdd�eedd�dd�Zeed�dd	��Zeed�d
d��Z	eed�dd
��Z
deje
ed�dd�Zeed�dd�Zeed�dd�Zed�dd�Zed�dd�ZdS)�
NameAttributeT)�	_validateN)�oidrr$cCs�t|t�std��t|t�s$td��|tjks8|tjkr|t|�d��}|dkr`|dur`t	d��n|dkr|t
jd�|�dd�|t
kr�t�|tj�}t|t�s�td	��||_||_||_dS)
Nz2oid argument must be an ObjectIdentifier instance.zvalue argument must be a str.�utf8�Tz/Country name must be a 2 character country codezUCountry names should be two characters, but the attribute is {} characters in length.)�
stacklevelz%_type must be from the _ASN1Type enum)�
isinstancer�	TypeError�strr�COUNTRY_NAME�JURISDICTION_COUNTRY_NAME�len�encode�
ValueError�warnings�warn�format�	_SENTINEL�_NAMEOID_DEFAULT_TYPE�getrr�_oid�_value�_type)�selfr5rrIr4Zc_lenrrr�__init__Rs:
�
�����
zNameAttribute.__init__�r$cCs|jS�N)rG�rJrrrr5�szNameAttribute.oidcCs|jSrM)rHrNrrrr�szNameAttribute.valuecCst�|j|jj�S)zt
        The short attribute name (for example "CN") if available,
        otherwise the OID dotted string.
        )r"rFr5Z
dotted_stringrNrrr�rfc4514_attribute_name�sz$NameAttribute.rfc4514_attribute_name��attr_name_overridesr$cCs4|r|�|j�nd}|dur"|j}d|t|j�fS)z�
        Format as RFC4514 Distinguished Name string.

        Use short attribute name if available, otherwise fall back to OID
        dotted string.
        Nz%s=%s)rFr5rOr2r)rJrQZ	attr_namerrr�rfc4514_string�s

�zNameAttribute.rfc4514_string��otherr$cCs&t|t�stS|j|jko$|j|jkSrM)r9r3�NotImplementedr5r�rJrTrrr�__eq__�s
zNameAttribute.__eq__cCs
||kSrMrrVrrr�__ne__�szNameAttribute.__ne__cCst|j|jf�SrM)�hashr5rrNrrr�__hash__�szNameAttribute.__hash__cCs
d�|�S)Nz/<NameAttribute(oid={0.oid}, value={0.value!r})>)rCrNrrr�__repr__�szNameAttribute.__repr__)N)rrrrDrr;rK�propertyr5rrO�typing�Optional�_OidNameMaprR�object�boolrWrX�intrZr[rrrrr3Qs.���0��r3c@s�eZdZejed�dd�Zeejed�dd�Z	dej
eed�d	d
�Z
eed�dd
�Zeed�dd�Zed�dd�Zejed�dd�Zed�dd�Zed�dd�ZdS)�RelativeDistinguishedName)�
attributescCs\t|�}|std��tdd�|D��s.td��||_t|�|_t|j�t|�krXtd��dS)Nz-a relative distinguished name cannot be emptycss|]}t|t�VqdSrM�r9r3�r�xrrr�	<genexpr>�rz5RelativeDistinguishedName.__init__.<locals>.<genexpr>z/attributes must be an iterable of NameAttributez$duplicate attributes are not allowed)�listr@�allr:�_attributes�	frozenset�_attribute_setr>�rJrdrrrrK�s
z"RelativeDistinguishedName.__init__�r5r$cs�fdd�|D�S)Ncsg|]}|j�kr|�qSr�r5rrprr�
<listcomp>�rzDRelativeDistinguishedName.get_attributes_for_oid.<locals>.<listcomp>r�rJr5rrpr�get_attributes_for_oid�sz0RelativeDistinguishedName.get_attributes_for_oidNrPcsd��fdd�|jD��S)z�
        Format as RFC4514 Distinguished Name string.

        Within each RDN, attributes are joined by '+', although that is rarely
        used in certificates.
        r(c3s|]}|���VqdSrM�rR�r�attr�rQrrrh�s�z;RelativeDistinguishedName.rfc4514_string.<locals>.<genexpr>)�joinrk�rJrQrrwrrR�s	�z(RelativeDistinguishedName.rfc4514_stringrScCst|t�stS|j|jkSrM)r9rcrUrmrVrrrrW�s
z RelativeDistinguishedName.__eq__cCs
||kSrMrrVrrrrX�sz RelativeDistinguishedName.__ne__rLcCs
t|j�SrM)rYrmrNrrrrZ�sz"RelativeDistinguishedName.__hash__cCs
t|j�SrM)�iterrkrNrrr�__iter__�sz"RelativeDistinguishedName.__iter__cCs
t|j�SrM)r>rkrNrrr�__len__�sz!RelativeDistinguishedName.__len__cCsd�|���S)Nz<RelativeDistinguishedName({})>)rCrRrNrrrr[�sz"RelativeDistinguishedName.__repr__)N)rrrr]�Iterabler3rKr�Listrsr^r_r;rRr`rarWrXrbrZ�Iteratorr{r|r[rrrrrc�s���rcc@seZdZejejedd�dd��Zejejedd�dd��Zejej	eefdd�dd�Zd ej
eed�dd	�Z
eejed
�dd�Zeejed
�dd��Zd!ejed�dd�Zeed�dd�Zeed�dd�Zed
�dd�Zejed
�dd�Zed
�dd�Zed
�dd�ZdS)"�NameN)rdr$cCsdSrMrrnrrrrK�sz
Name.__init__cCsdSrMrrnrrrrK�scCs`t|�}tdd�|D��r,dd�|D�|_n0tdd�|D��rTt�tjt|�|_ntd��dS)Ncss|]}t|t�VqdSrMrerfrrrrh�rz Name.__init__.<locals>.<genexpr>cSsg|]}tt�t|�g��qSr)rcr]�castr3rfrrrrq�s�z!Name.__init__.<locals>.<listcomp>css|]}t|t�VqdSrM)r9rcrfrrrrhrzNattributes must be a list of NameAttribute or a list RelativeDistinguishedName)rirjrkr]r�r~rcr:rnrrrrK�s�

��rPcsd��fdd�t|j�D��S)a�
        Format as RFC4514 Distinguished Name string.
        For example 'CN=foobar.com,O=Foo Corp,C=US'

        An X.509 name is a two-level structure: a list of sets of attributes.
        Each list element is separated by ',' and within each list element, set
        elements are separated by '+'. The latter is almost never used in
        real world certificates. According to RFC4514 section 2.1 the
        RDNSequence must be reversed when converting to string representation.
        r)c3s|]}|���VqdSrMrtrurwrrrhs�z&Name.rfc4514_string.<locals>.<genexpr>)rx�reversedrkryrrwrrRs
�zName.rfc4514_stringrocs�fdd�|D�S)Ncsg|]}|j�kr|�qSrrprrprrrq!rz/Name.get_attributes_for_oid.<locals>.<listcomp>rrrrrprrsszName.get_attributes_for_oidrLcCs|jSrM�rkrNrrr�rdns#sz	Name.rdns)�backendr$cCs
t�|�SrM)�	rust_x509Zencode_name_bytes)rJr�rrr�public_bytes'szName.public_bytesrScCst|t�stS|j|jkSrM)r9r�rUrkrVrrrrW*s
zName.__eq__cCs
||kSrMrrVrrrrX0szName.__ne__cCstt|j��SrM)rY�tuplerkrNrrrrZ3sz
Name.__hash__ccs |jD]}|D]
}|VqqdSrMr�)rJ�rdnZavarrrr{8s
z
Name.__iter__cCstdd�|jD��S)Ncss|]}t|�VqdSrM)r>)rr�rrrrh>rzName.__len__.<locals>.<genexpr>)�sumrkrNrrrr|=szName.__len__cCs d�dd�|jD��}d�|�S)Nr)css|]}|��VqdSrMrtrurrrrhArz Name.__repr__.<locals>.<genexpr>z
<Name({})>)rxrkrC)rJr�rrrr[@sz
Name.__repr__)N)N) rrrr]�overloadr}r3rKrc�Unionr^r_r;rRrr~rsr\r��Any�bytesr�r`rarWrXrbrZrr{r|r[rrrrr��s8������r�)(r]rAZcryptographyrZ"cryptography.hazmat.bindings._rustrr�Zcryptography.x509.oidrr�EnumrZ_ASN1_TYPE_TO_ENUMr`rDr<rr=Z
SERIAL_NUMBERZDN_QUALIFIERZ
EMAIL_ADDRESSrZDOMAIN_COMPONENTrE�Mappingr;r_ZCOMMON_NAMEZ
LOCALITY_NAMEZSTATE_OR_PROVINCE_NAMEZORGANIZATION_NAMEZORGANIZATIONAL_UNIT_NAMEZSTREET_ADDRESSZUSER_IDr"�__annotations__r2r3rcr�rrrr�<module>s:

�
�
b8