a
    "h8                     @   s~  d dl Z d dlZd dlZd dlmZmZ z d dlmZ d dlm	Z	m
Z
 W n eyZ   Y n0 eeef edddZeeef edd	d
ZeedddZddeee edddZeeef edddZeeedddZeedddZddeee edddZededddZeded d!d"Zh d#Zed$d%e d& ejZeed'd(d)Zd*Z eed'd+d,Z!dS )-    N)OptionalUnion)EllipticCurve)decode_dss_signatureencode_dss_signature)valuereturnc                 C   s.   t | tr| dS t | tr"| S tdd S )Nzutf-8zExpected a string value)
isinstancestrencodebytes	TypeError)r    r   E/var/www/html/requester/venv/lib/python3.9/site-packages/jwt/utils.pyforce_bytes   s
    


r   )inputr   c                 C   s6   t | }t|d }|dkr,|dd|  7 }t|S )N   r      =)r   lenbase64urlsafe_b64decode)r   Z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   
bit_length)valr   r   c                C   s4   | dk rt dt| |d}t|dkr,d}t|S )Nr   zMust be a positive integerr       )
ValueErrorbytes_from_intr   r   )r   r   Z	int_bytesr   r   r   to_base64url_uint(   s    r#   )r   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_bytesr   c                 C   s    dd| | f }t |dS )Nz%0*x   ascii)binasciia2b_hexr   )r*   r+   Z
padded_hexr   r   r   number_to_bytes9   s    r0   )stringr   c                 C   s   t t| dS )N   )r&   r.   b2a_hex)r1   r   r   r   bytes_to_number>   s    r4   c                C   s,   |d u r|   }|d d }| j|dddS )N      r$   F)signed)r   to_bytes)r   r   Zbyte_lengthr   r   r   r"   B   s    r"   r   )der_sigcurver   c                 C   s2   |j }|d d }t| \}}t||t|| S )Nr5   r6   )key_sizer   r0   )r9   r:   num_bitsr+   rsr   r   r   der_to_raw_signatureJ   s    r?   )raw_sigr:   r   c                 C   sX   |j }|d d }t| d| kr*tdt| d | }t| |d  }tt||S )Nr5   r6   r,   zInvalid signature)r;   r   r!   r4   r   r   )r@   r:   r<   r+   r=   r>   r   r   r   raw_to_der_signatureS   s    rA   >   s   SSH2 PUBLIC KEYs   OPENSSH PRIVATE KEYs
   PUBLIC KEYs   RSA PUBLIC KEYs   EC PRIVATE KEYs   NEW CERTIFICATE REQUESTs   SSH2 ENCRYPTED PRIVATE KEYs   CERTIFICATEs   TRUSTED CERTIFICATEs   X509 CRLs   DH PARAMETERSs   PRIVATE KEYs   RSA PRIVATE KEYs   ENCRYPTED PRIVATE KEYs   CERTIFICATE REQUESTs   DSA PRIVATE KEYs   ----[- ]BEGIN (   |s,   )[- ]----?
.+??
----[- ]END \1[- ]----?
?)keyr   c                 C   s   t t| S N)bool_PEM_REsearchrC   r   r   r   is_pem_format~   s    rI   )s   ssh-ed25519s   ssh-rsas   ssh-dsss   ecdsa-sha2-nistp256s   ecdsa-sha2-nistp384s   ecdsa-sha2-nistp521c                 C   s
   |  tS rD   )
startswith_SSH_KEY_FORMATSrH   r   r   r   
is_ssh_key   s    rL   )"r   r.   retypingr   r   Z,cryptography.hazmat.primitives.asymmetric.ecr   Z/cryptography.hazmat.primitives.asymmetric.utilsr   r   ModuleNotFoundErrorr   r
   r   r   r   r&   r#   r)   r0   r4   r"   r?   rA   Z_PEMScompilejoinDOTALLrF   rE   rI   rK   rL   r   r   r   r   <module>   s<   		

