
    0Hohy                     r    d dl Z d dlmZmZ ddlmZmZ ddlmZm	Z	 ddl
mZ ddlmZmZ dgZ G d	 d      Zy)
    N)AbstractSetOptional   )JWSDecodeErrorJWSEncodeError)AbstractSigningAlgorithmsupported_signing_algorithms)AbstractJWKBase)	b64decode	b64encodeJWSc            
           e Zd ZddZdedefdZ	 	 	 ddedee	   dee
eef      defd	Zdedee
eef   eeef   fd
Z	 	 	 ddedee	   deee      defdZy)r   returnNc                 "    t               | _        y )N)r	   _supported_algs)selfs    c/var/www/html/wine-match-dev/backend/winematch-backend/venv/lib/python3.12/site-packages/jwt/jws.py__init__zJWS.__init__(   s    ;=    algc                 R    	 | j                   |   S # t        $ r t        d      w xY w)NUnsupported signing algorithm.)r   KeyErrorr   )r   r   s     r   _retrieve_algzJWS._retrieve_alg+   s6    	C'',, 	C !ABB	Cs    &messagekeyoptional_headersc                 z   || j                   vrt        d|       | j                  |      }|r|j                         ni }||d<   t	        t        j                  |d      j                  d            }t	        |      }|dz   |z   }	|j                  |	j                  d      |      }
t	        |
      }|	dz   |z   S )Nzunsupported algorithm: r   ),:)
separatorsascii.)	r   r   r   copyr   jsondumpsencodesign)r   r   r   r   r   alg_implheader
header_b64message_b64signing_message	signaturesignature_b64s               r   r'   z
JWS.encode1   s     d*** #:3%!@AA%%c*,<!&&("uJJv*5<<WE

  ($s*[8MM/"8"8"A3G	!),$}44r   c                    	 |j                  dd      \  }}|j                  d      \  }}t	        j
                  t        |      j                  d            }t        |      }t        |      }||||fS # t        $ r t        d      w xY w)Nr#   r   zmalformed JWS payloadr"   )rsplitsplit
ValueErrorr   r%   loadsr   decode)	r   r   r-   r/   r+   r,   r*   message_binr.   s	            r   _decode_segmentszJWS._decode_segmentsJ   s    	:-4^^C-C*O]&5&;&;C&@#J Ij188AB,m,	{I>>  	: !899	:s   )A4 4B	
algorithmsc                     |!t        t               j                               }| j                  |      \  }}}}|d   }	|	|vrt	        d      | j                  |	      }
|r-|
j                  |j                  d      ||      st	        d      |S )Nr   r   r"   z!JWS passed could not be validated)setr	   keysr7   r   r   verifyr'   )r   r   r   	do_verifyr8   r*   r6   r.   r-   	alg_valuer)   s              r   r5   z
JWS.decodeX   s     9;@@BCJ !!'* 	8Y 5M	J& !ABB%%i0X__""7+S)
 !!DEEr   )r   N)NHS256N)NTN)__name__
__module____qualname__r   strr   r   bytesr   r
   dictr'   tupler7   r   r5    r   r   r   r   &   s    >C C)A C *.5955 o&5
 #4S>25 
52??	tCH~ueS0	1?" *.15 o&
 [-. 
r   )r%   typingr   r   
exceptionsr   r   jwar   r	   jwkr
   utilsr   r   __all__r   rG   r   r   <module>rN      s8    
 !
 'J Jr   