o
    )%aD	                     @   s    d dl mZ G dd deZdS )    )utilsc                   @   sP   e Zd ZdefddZdd Zdd Zdd	 Zd
d Ze	dd Z
edZdS )ObjectIdentifierdotted_stringc              	   C   s   || _ | j d}g }|D ](}zt|d}W n ty$   td| j  w |dk r0td| j  || qt|dk rCtd| j  |d dkrPtd| j  |d dk rc|d	 d
kretd| j  d S d S )N.
   z%Malformed OID: %s (non-integer nodes)r   z*Malformed OID: %s (negative-integer nodes)   z0Malformed OID: %s (insufficient number of nodes)z2Malformed OID: %s (first node outside valid range)   (   z3Malformed OID: %s (second node outside valid range))_dotted_stringsplitint
ValueErrorappendlen)selfr   nodesintnodesnode
node_value r   :/usr/lib/python3/dist-packages/cryptography/hazmat/_oid.py__init__
   sN   zObjectIdentifier.__init__c                 C   s   t |tstS | j|jkS N)
isinstancer   NotImplementedr   r   otherr   r   r   __eq__4   s   
zObjectIdentifier.__eq__c                 C   s
   | |k S r   r   r   r   r   r   __ne__:      
zObjectIdentifier.__ne__c                 C   s   d | j| jS )Nz#<ObjectIdentifier(oid={}, name={})>)formatr   _namer   r   r   r   __repr__=   s   zObjectIdentifier.__repr__c                 C   s
   t | jS r   )hashr   r"   r   r   r   __hash__B   r   zObjectIdentifier.__hash__c                 C   s   ddl m} || dS )Nr   )
_OID_NAMESzUnknown OID)cryptography.x509.oidr&   get)r   r&   r   r   r   r!   E   s   zObjectIdentifier._namer
   N)__name__
__module____qualname__strr   r   r   r#   r%   propertyr!   r   read_only_propertyr   r   r   r   r   r   	   s    *
r   N)cryptographyr   objectr   r   r   r   r   <module>   s   