o
    cõ§]¬  ã                	   @   sÈ   d dl Z z
d dlZe ¡ ZW n eefy   dZY nw d dlmZmZm	Z	 e j
d d… dk s3edkrTd dlmZmZ e j
d  dkrDeZddd	„Zdd
d„Zdd„ ZdS ddd	„Zddd„Zdd„ ZdS )é    NÚCPython)Úoct2intÚnullÚensureStringé   )é   r   )Úa2b_hexÚb2a_hexFc                 C   sF   | sdS t tt| ƒƒdƒ}|r!t| d ƒd@ r!|dt| ƒd >  S |S )Nr   é   é€   é   é   )Úlongr	   r   r   Úlen)ÚoctetsÚsignedÚvalue© r   ú7/usr/lib/python3/dist-packages/pyasn1/compat/integer.pyÚ
from_bytes   s   r   c                 C   s4  | dk r|rt | ƒ}d|> }| | | }ntdƒ‚| dkr#|dkr#tS d}| }t|ƒdd … }| d¡r:|d d… }t|ƒd@ rDd| }| |ksJ|rtt|ƒd }t||ƒ}||krhd	|| d d
 d  | }n|rt|| dkrttdƒ‚t|d d… dƒ}	|r”|	d@ rŒ| dkr‹d	| }n| dk r”d| }t|ƒ}
|
S )Nr   r   z&can't convert negative int to unsignedr   ÚLéÿÿÿÿÚ0é   Ú00r   é   zint too big to convertr
   r   Úff)	Ú	bitLengthÚOverflowErrorr   ÚhexÚendswithr   ÚmaxÚintr   )r   r   ÚlengthÚbitsÚmaxValueÚvalueToEncodeÚhexValueÚ	hexLengthÚ	padLengthÚ
firstOctetÚoctets_valuer   r   r   Úto_bytes$   s@   

€r,   c                 C   sF   t t| ƒƒ}t|ƒd }| d¡r|d8 }|d@ r|d7 }|d9 }|S )Nr   r   r   r   )r   Úabsr   r    )Únumberr'   r$   r   r   r   r   T   s   
r   c                 C   s   t jt| ƒd|d�S )NÚbig©r   )r"   r   Úbytes)r   r   r   r   r   r   b   s   c                 C   sJ   t |  ¡ |ƒ}|r|d dkr|d7 }| j|d |d rdpd d|d�S )Nr   r   r   r/   r0   )r!   Ú
bit_lengthr,   )r   r   r#   r   r   r   r,   e   s   $c                 C   s   t | ƒ ¡ S )N)r"   r2   )r.   r   r   r   r   m   s   )F)Fr   )ÚsysÚplatformÚpython_implementationÚimplementationÚImportErrorÚAttributeErrorÚpyasn1.compat.octetsr   r   r   Úversion_infoÚbinasciir   r	   r"   r   r   r,   r   r   r   r   r   Ú<module>   s$   ÿ

0

