
    Aah8                        d dl Z d dlZd dlZd dlmZmZ 	 d dlmZ d dlm	Z	m
Z
 n# e$ r Y nw xY wdeeef         defdZdeeef         defd	Zdedefd
Zdddedee         defdZdeeef         defdZdededefdZdedefdZdddedee         defdZdedddefdZdedddefdZh dZ ej        dd                    e          z   dz   ej                  Zd edefd!Zd"Z d edefd#Z!dS )$    N)OptionalUnion)EllipticCurve)decode_dss_signatureencode_dss_signaturevaluereturnc                     t          | t                    r|                     d          S t          | t                    r| S t	          d          )Nzutf-8zExpected a string value)
isinstancestrencodebytes	TypeError)r   s    ;/var/www/lms/venv/lib/python3.11/site-packages/jwt/utils.pyforce_bytesr      sL    % 3||G$$$	E5	!	! 31222    inputc                     t          |           }t          |          dz  }|dk    r|dd|z
  z  z  }t          j        |          S )N   r      =)r   lenbase64urlsafe_b64decode)r   input_bytesrems      r   base64url_decoder      sN    e$$K
k

Q
C
Qwwtq3w''#K000r   c                 R    t          j        |                               dd          S )Nr   r   )r   urlsafe_b64encodereplace)r   s    r   base64url_encoder    $   s#    #E**224===r   
bit_lengthvalr"   c                    | dk     rt          d          t          | |          }t          |          dk    rd}t          |          S )Nr   zMust be a positive integerr!       )
ValueErrorbytes_from_intr   r    )r#   r"   	int_bytess      r   to_base64url_uintr)   (   sP    
Qww5666sz:::I
9~~	I&&&r   c                 r    t          t          |                     }t                              |d          S )Nbig)	byteorder)r   r   int
from_bytes)r#   datas     r   from_base64url_uintr0   4   s-    K,,--D>>$%>000r   num	num_bytesc                 d    dd|z  | fz  }t          j        |                    d                    S )Nz%0*x   ascii)binasciia2b_hexr   )r1   r2   
padded_hexs      r   number_to_bytesr9   9   s4    1y=#..JJ--g66777r   stringc                 F    t          t          j        |           d          S )N   )r-   r6   b2a_hex)r:   s    r   bytes_to_numberr>   >   s    x'',,,r   c                n    ||                                  }|dz   dz  }|                     |dd          S )N      r+   F)signed)r"   to_bytes)r#   r"   byte_lengths      r   r'   r'   B   s=    ^^%%
>a'K<<U5<999r   der_sigcurver   c                     |j         }|dz   dz  }t          |           \  }}t          ||          t          ||          z   S )Nr@   rA   )key_sizer   r9   )rE   rF   num_bitsr2   rss         r   der_to_raw_signaturerL   J   sG    ~HA!#I((DAq1i((?1i+H+HHHr   raw_sigc                     |j         }|dz   dz  }t          |           d|z  k    rt          d          t          | d |                   }t          | |d                    }t	          t          ||                    S )Nr@   rA   r4   zInvalid signature)rH   r   r&   r>   r   r   )rM   rF   rI   r2   rJ   rK   s         r   raw_to_der_signaturerO   S   s    ~HA!#I
7||q9}$$,---

+,,A	

+,,A%a++,,,r   >      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                 P    t          t                              |                     S N)bool_PEM_REsearchra   s    r   is_pem_formatrh   ~   s    s##$$$r   )s   ssh-ed25519s   ssh-rsas   ssh-dsss   ecdsa-sha2-nistp256s   ecdsa-sha2-nistp384s   ecdsa-sha2-nistp521c                 6    |                      t                    S rc   )
startswith_SSH_KEY_FORMATSrg   s    r   
is_ssh_keyrl      s    >>*+++r   )"r   r6   retypingr   r   ,cryptography.hazmat.primitives.asymmetric.ecr   /cryptography.hazmat.primitives.asymmetric.utilsr   r   ModuleNotFoundErrorr   r   r   r   r    r-   r)   r0   r9   r>   r'   rL   rO   _PEMScompilejoinDOTALLre   rd   rh   rk   rl    r   r   <module>rw      s     				 " " " " " " " "	JJJJJJ          	 	 	D	3uUCZ( 3U 3 3 3 31E%*- 1% 1 1 1 1>E >e > > > > @D 	' 	' 	'3 	'x} 	' 	' 	' 	' 	'1U5#:. 13 1 1 1 1
8 8 8 8 8 8 8
-E -c - - - - =A : : : :HSM :U : : : :I% I IE I I I I
-% 
- 
-E 
- 
- 
- 
-	 	 	& "*
ii!!
 I %u % % % % %
 ,E ,d , , , , , ,s   % --