o
    kYi                     @   s   d dl Z d dlZd dlmZ d dlmZmZ zd dlmZmZm	Z	m
Z
mZ W n	 ey/   Y nw ddlmZ ddlmZmZ ddlmZmZmZ dd	lmZmZmZmZmZmZmZ dd
lmZ G dd deZ e  Z!e!j"Z"e!j#Z#e!j$Z$e!j%Z%e!j&Z&dS )    N)timegm)datetime	timedelta)CallableDictListOptionalUnion   )PyJWS)	Algorithmget_default_algorithms)IterableMappingstring_types)DecodeErrorExpiredSignatureErrorImmatureSignatureErrorInvalidAudienceErrorInvalidIssuedAtErrorInvalidIssuerErrorMissingRequiredClaimError)
merge_dictc                       s   e Zd ZdZedd Z			d fdd	Z					d fd
d	Z		dddZdd Z	dd Z
dd Zdd Zdd Zdd Z  ZS )PyJWTJWTc                
   C   s   dddddddddd	S )NTF)	verify_signature
verify_exp
verify_nbf
verify_iat
verify_aud
verify_issrequire_exprequire_iatrequire_nbf r$   r$   r$   O/var/www/html/asistente-voz-ia/venv/lib/python3.10/site-packages/jwt/api_jwt.py_get_default_options   s   zPyJWT._get_default_optionsHS256Nc                    sn   t |ts	tddD ]}t ||trt||  ||< qtj|d|d	d}t
t| 	|||||S )NzJExpecting a mapping object, as JWT only supports JSON objects as payloads.)expiatnbf),:)
separatorsclsutf-8)
isinstancer   	TypeErrorgetr   r   utctimetuplejsondumpsencodesuperr   )selfpayloadkey	algorithmheadersjson_encoder
time_claimjson_payload	__class__r$   r%   r6   (   s    


zPyJWT.encode Tc              
      s   |r
|s
t dt | |\}}}}|d u rd|i}n|d| tt| j|f|||d|}	z
t	|	d}W n t
yN }
 ztd|
 d }
~
ww t|tsXtd|rjt| j|}| j||fi | |S )NzIt is strongly recommended that you pass in a value for the "algorithms" argument when calling decode(). This argument will be mandatory in a future version.r   )r:   
algorithmsoptionsr/   zInvalid payload string: %sz-Invalid payload string: must be a json object)warningswarnDeprecationWarning_load
setdefaultr7   r   decoder4   loads
ValueErrorr   r0   r   r   rD   _validate_claims)r8   jwtr:   verifyrC   rD   kwargsr9   _decodedemerged_optionsr@   r$   r%   rJ   D   s8   


zPyJWT.decoder   c                 K   s  d|v r| dd|d< tdt t|tr| }t|ttd t	fs)t
d| || tt  }d|v rG| drG| ||| d|v rW| d	rW| ||| d
|v rg| drg| ||| | drr| || | dr| || d S d S )Nverify_expirationTr   zXThe verify_expiration parameter is deprecated. Please use verify_exp in options instead.z,audience must be a string, iterable, or Noner)   r   r*   r   r(   r    r   )r2   rE   rF   rG   r0   r   total_secondsr   typer   r1   _validate_required_claimsr   r   utcnowr3   _validate_iat_validate_nbf_validate_exp_validate_iss_validate_aud)r8   r9   rD   audienceissuerleewayrP   nowr$   r$   r%   rM   l   s,   


zPyJWT._validate_claimsc                 C   sh   | dr| dd u rtd| dr | dd u r td| dr0| dd u r2tdd S d S )Nr!   r(   r"   r)   r#   r*   )r2   r   )r8   r9   rD   r$   r$   r%   rX      s   zPyJWT._validate_required_claimsc                 C   s*   z	t |d  W d S  ty   tdw )Nr)   z)Issued At claim (iat) must be an integer.)intrL   r   )r8   r9   rb   ra   r$   r$   r%   rZ      s
   zPyJWT._validate_iatc                 C   s@   zt |d }W n ty   tdw ||| krtdd S )Nr*   z*Not Before claim (nbf) must be an integer.z The token is not yet valid (nbf))rc   rL   r   r   )r8   r9   rb   ra   r*   r$   r$   r%   r[      s   zPyJWT._validate_nbfc                 C   s@   zt |d }W n ty   tdw ||| k rtdd S )Nr(   z/Expiration Time claim (exp) must be an integer.zSignature has expired)rc   rL   r   r   )r8   r9   rb   ra   r(   r$   r$   r%   r\      s   zPyJWT._validate_expc                    s   |d u r
d|vr
d S |d urd|vrt d|d u r"d|v r"td|d  t tr. g t ts7tdtdd  D rDtdt|trL|g}t fdd|D s[tdd S )NaudzInvalid audiencezInvalid claim format in tokenc                 s   s    | ]	}t |t V  qd S N)r0   r   ).0cr$   r$   r%   	<genexpr>   s    z&PyJWT._validate_aud.<locals>.<genexpr>c                 3   s    | ]}| v V  qd S re   r$   )rf   rd   audience_claimsr$   r%   rh      s    )r   r   r0   r   listany)r8   r9   r_   r$   ri   r%   r^      s$   


zPyJWT._validate_audc                 C   s4   |d u rd S d|vrt d|d |krtdd S )NisszInvalid issuer)r   r   )r8   r9   r`   r$   r$   r%   r]      s   zPyJWT._validate_iss)r'   NN)rB   TNN)NNr   )__name__
__module____qualname__header_typestaticmethodr&   r6   rJ   rM   rX   rZ   r[   r\   r^   r]   __classcell__r$   r$   r@   r%   r      s,    
(
"
	
r   )'r4   rE   calendarr   r   r   typingr   r   r   r   r	   ImportErrorapi_jwsr   rC   r   r   compatr   r   r   
exceptionsr   r   r   r   r   r   r   utilsr   r   _jwt_global_objr6   rJ   register_algorithmunregister_algorithmget_unverified_headerr$   r$   r$   r%   <module>   s,     $ D
