o
    ÒèFhØ  ã                   @   s€  d dl Z d dlZd dlZd dlmZ zd dlmZ d dlmZm	Z	 W n	 e
y+   Y nw deeef defdd„Zd	eeef defd
d„Zd	edefdd„Zdedefdd„Zdeeef defdd„Zdededefdd„Zdedefdd„Zdedefdd„Zdedddefdd „Zd!edddefd"d#„Zh d$£Ze d%d& e¡ d' ej¡Zd(edefd)d*„Zd+Zd(edefd,d-„Z dS ).é    N)ÚUnion)ÚEllipticCurve)Údecode_dss_signatureÚencode_dss_signatureÚvalueÚreturnc                 C   s*   t | tƒr
|  d¡S t | tƒr| S tdƒ‚)Nzutf-8zExpected a string value)Ú
isinstanceÚstrÚencodeÚbytesÚ	TypeError)r   © r   úB/var/www/html/loop/nvenv/lib/python3.10/site-packages/jwt/utils.pyÚforce_bytes   s
   


r   Úinputc                 C   s6   t | ƒ}t|ƒd }|dkr|dd|  7 }t |¡S )Né   r   ó   =)r   ÚlenÚbase64Úurlsafe_b64decode)r   Úinput_bytesÚremr   r   r   Úbase64url_decode   s
   
r   c                 C   s   t  | ¡ dd¡S )Nr   ó    )r   Úurlsafe_b64encodeÚreplace)r   r   r   r   Úbase64url_encode$   s   r   Úvalc                 C   s0   | dk rt dƒ‚t| ƒ}t|ƒdkrd}t|ƒS )Nr   zMust be a positive integeró    )Ú
ValueErrorÚbytes_from_intr   r   )r   Ú	int_bytesr   r   r   Úto_base64url_uint(   s   r"   c                 C   s   t t| ƒƒ}tj|dd�S )NÚbig)Ú	byteorder)r   r   ÚintÚ
from_bytes)r   Údatar   r   r   Úfrom_base64url_uint4   s   r(   ÚnumÚ	num_bytesc                 C   s    dd| | f }t  | d¡¡S )Nz%0*xé   Úascii)ÚbinasciiÚa2b_hexr
   )r)   r*   Ú
padded_hexr   r   r   Únumber_to_bytes9   s   r0   Ústringc                 C   s   t t | ¡dƒS )Né   )r%   r-   Úb2a_hex)r1   r   r   r   Úbytes_to_number>   s   r4   c                 C   s8   | }d}|dkr|dL }|d7 }|dks| j |ddd�S )Nr   é   é   r#   F)Úsigned)Úto_bytes)r   Ú	remainingÚbyte_lengthr   r   r   r    B   s   þr    Úder_sigÚcurver   c                 C   s2   |j }|d d }t| ƒ\}}t||ƒt||ƒ S )Né   r5   )Úkey_sizer   r0   )r;   r<   Únum_bitsr*   ÚrÚsr   r   r   Úder_to_raw_signatureM   s   rB   Úraw_sigc                 C   sX   |j }|d d }t| ƒd| krtdƒ‚t| d |… ƒ}t| |d … ƒ}tt||ƒƒS )Nr=   r5   r+   zInvalid signature)r>   r   r   r4   r   r   )rC   r<   r?   r*   r@   rA   r   r   r   Úraw_to_der_signatureV   s   rD   >   ó   X509 CRLó
   PUBLIC KEYó   CERTIFICATEó   PRIVATE KEYó   DH PARAMETERSó   EC PRIVATE KEYó   RSA PUBLIC KEYó   DSA PRIVATE KEYó   RSA PRIVATE KEYó   SSH2 PUBLIC KEYó   CERTIFICATE REQUESTó   OPENSSH PRIVATE KEYó   TRUSTED CERTIFICATEó   ENCRYPTED PRIVATE KEYó   NEW CERTIFICATE REQUESTó   SSH2 ENCRYPTED PRIVATE KEYs   ----[- ]BEGIN (ó   |s,   )[- ]----?
.+??
----[- ]END \1[- ]----?
?Úkeyc                 C   s   t t | ¡ƒS ©N)ÚboolÚ_PEM_REÚsearch©rV   r   r   r   Úis_pem_format�   s   r\   )s   ssh-ed25519s   ssh-rsas   ssh-dsss   ecdsa-sha2-nistp256s   ecdsa-sha2-nistp384s   ecdsa-sha2-nistp521c                 C   s
   |   t¡S rW   )Ú
startswithÚ_SSH_KEY_FORMATSr[   r   r   r   Ú
is_ssh_key�   s   
r_   )!r   r-   ÚreÚtypingr   Ú,cryptography.hazmat.primitives.asymmetric.ecr   Ú/cryptography.hazmat.primitives.asymmetric.utilsr   r   ÚModuleNotFoundErrorr   r	   r   r   r   r%   r"   r(   r0   r4   r    rB   rD   Ú_PEMSÚcompileÚjoinÚDOTALLrY   rX   r\   r^   r_   r   r   r   r   Ú<module>   s@    ÿ		ÿþú

