
    [c                        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 eZ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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edefdZdededefdZdede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  ej        d           Z!g d!Z"dedefd"Z#dS )#    N)Any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    )lib/python3.11/site-packages/jwt/utils.pyforce_bytesr      sL    % 3||G$$$	E5	!	! 31222    inputc                     t          | t                    r|                     d          } t          |           dz  }|dk    r| dd|z
  z  z  } t	          j        |           S )Nascii   r      =)r   r   r   lenbase64urlsafe_b64decode)r   rems     r   base64url_decoder      sd    % &W%%
e**q.C
Qw "S!!#E***r   c                 R    t          j        |                               dd          S )Nr   r   )r   urlsafe_b64encodereplace)r   s    r   base64url_encoder    %   s#    #E**224===r   valc                     | 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_bytess     r   to_base64url_uintr'   )   sP    
Qw 75666s##I
9~~ 	I&&&r   c                     t          | t                    r|                     d          } t          |           }t                              |d          S )Nr   big)	byteorder)r   r   r   r   int
from_bytes)r!   datas     r   from_base64url_uintr.   5   sH    #s "jj!!C  D>>$%>000r   num	num_bytesc                 d    dd|z  | fz  }t          j        |                    d                    S )Nz%0*x   r   )binasciia2b_hexr   )r/   r0   
padded_hexs      r   number_to_bytesr6   =   s4    1y=#..JJ--g66777r   stringc                 F    t          t          j        |           d          S )N   )r+   r3   b2a_hex)r7   s    r   bytes_to_numberr;   B   s    x'',,,r   c                 f    | }d}|dk    r|dz  }|dz  }|dk    |                      |dd          S )Nr         r)   F)signed)to_bytes)r!   	remainingbyte_lengths      r   r%   r%   F   sS    IK
q. a	q q.  <<U5<999r   der_sigcurvec                     |j         }|dz   dz  }t          |           \  }}t          ||          t          ||          z   S )N   r=   )key_sizer   r6   )rC   rD   num_bitsr0   rss         r   der_to_raw_signaturerK   Q   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	          ||          S )NrF   r=   r2   zInvalid signature)rG   r   r$   r;   r   )rL   rD   rH   r0   rI   rJ   s         r   raw_to_der_signaturerN   Z   sy    ~HA!#I
7||q9}$ .,---

+,,A	

+,,A1%%%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)r`   s    r   is_pem_formatrf      s    s##$$$r   s   -cert-v01@openssh.coms   \A(\S+)[ \t]+(\S+))s   ssh-ed25519s   ssh-rsas   ssh-dsss   ecdsa-sha2-nistp256s   ecdsa-sha2-nistp384s   ecdsa-sha2-nistp521c                      t           fdt          D                       rdS t                                         }|r=|                    d          }t
          |t          t
                     d          k    rdS dS )Nc              3       K   | ]}|v V  	d S rb    ).0string_valuer`   s     r   	<genexpr>zis_ssh_key.<locals>.<genexpr>   s(      
D
D<<3
D
D
D
D
D
Dr   Tr>   F)any_SSH_KEY_FORMATS_SSH_PUBKEY_RCmatchgroup_CERT_SUFFIXr   )r`   ssh_pubkey_matchkey_types   `  r   
is_ssh_keyru      s    

D
D
D
D3C
D
D
DDD t%++C00 #))!,,8S%6%6$6$8$899 	45r   )$r   r3   retypingr   r   ,cryptography.hazmat.primitives.asymmetric.ecr   /cryptography.hazmat.primitives.asymmetric.utilsr   r   ModuleNotFoundErrorr   r   r   r   r    r+   r'   r.   r6   r;   r%   rK   rN   _PEMScompilejoinDOTALLrd   rc   rf   rr   ro   rn   ru   ri   r   r   <module>r      s     				        JJJJJJ            MMM3uS%Z( 3U 3 3 3 3	+E#u*- 	+% 	+ 	+ 	+ 	+>E >e > > > >	'3 	'5 	' 	' 	' 	'1U3:. 13 1 1 1 18 8 8 8 8 8 8
-E -c - - - -: : : : : :I% I I% I I I I
&% 
& 
&% 
& 
& 
& 
&	 	 	& "*
ii!!
 I %u % % % % %
 (233   
E 
d 
 
 
 
 
 
s   % //