<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
B
    E`                 @   s   d dl Z d dlmZ d dlmZmZ d dlmZmZ d dlm	Z	m
Z
mZmZmZmZ ddlmZ ddlmZmZmZmZmZmZmZ G d	d
 d
Ze ZejZejZejZdS )    N)timegm)IterableMapping)datetime	timedelta)AnyDictListOptionalTypeUnion   )api_jws)DecodeErrorExpiredSignatureErrorImmatureSignatureErrorInvalidAudienceErrorInvalidIssuedAtErrorInvalidIssuerErrorMissingRequiredClaimErrorc               @   s   e Zd Zd ddZeeeeee	e f f dddZ
d!eeef eeee eeej  edd	d
Zd"eee	e eeeef dddZd#eee	e eeeef d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dS )%PyJWTNc             C   s   |d kri }|   || _d S )N)_get_default_optionsoptions)selfr    r   </opt/alt/python37/lib/python3.7/site-packages/jwt/api_jwt.py__init__   s    zPyJWT.__init__)returnc               C   s   ddddddg dS )NT)verify_signature
verify_exp
verify_nbf
verify_iat
verify_aud
verify_issrequirer   r   r   r   r   r      s    zPyJWT._get_default_optionsHS256)payloadkey	algorithmheadersjson_encoderr   c             C   st   t |tstd| }x0dD ](}t ||tr t||  ||< q W tj	|d|d
d}t
|||||S )NzJExpecting a mapping object, as JWT only supports JSON objects as payloads.)expiatnbf),:)Z
separatorsclszutf-8)
isinstancer   	TypeErrorcopygetr   r   utctimetuplejsondumpsencoder   )r   r&   r'   r(   r)   r*   Z
time_claimZjson_payloadr   r   r   r8   %   s    	

zPyJWT.encode )jwtr'   
algorithmsr   r   c       
   
   K   s
  |d krddi}n| dd |d sb| dd | dd | dd | dd | dd |d rv|svtd	tj|f|||d
|}yt|d }W n. tk
r } ztd| W d d }~X Y nX t|tstd| j	|}	| j
||	f| ||d< |S )Nr   Tr   Fr    r!   r"   r#   z\It is required that you pass in a value for the "algorithms" argument when calling decode().)r'   r;   r   r&   zInvalid payload string: %sz-Invalid payload string: must be a json object)
setdefaultr   r   decode_completer6   loads
ValueErrorr1   dictr   _validate_claims)
r   r:   r'   r;   r   kwargsdecodedr&   eZmerged_optionsr   r   r   r=   A   s8    


zPyJWT.decode_completec             K   s   | j ||||f|}|d S )Nr&   )r=   )r   r:   r'   r;   r   rB   rC   r   r   r   decodeo   s    zPyJWT.decoder   c             K   s   t |tr| }t |tttd tfs0td| || t	t
  }d|krj|d rj| ||| d|kr|d r| ||| d|kr|d r| ||| |d r| || |d	 r| || d S )
Nz,audience must be a string, iterable, or Noner,   r!   r-   r    r+   r   r#   r"   )r1   r   Ztotal_secondsbytesstrtyper   r2   _validate_required_claimsr   r   Zutcnowr5   _validate_iat_validate_nbf_validate_exp_validate_iss_validate_aud)r   r&   r   audienceissuerleewayrB   nowr   r   r   rA   z   s     
zPyJWT._validate_claimsc             C   s,   x&|d D ]}| |d kr
t|q
W d S )Nr$   )r4   r   )r   r&   r   Zclaimr   r   r   rI      s    zPyJWT._validate_required_claimsc             C   s2   yt |d  W n tk
r,   tdY nX d S )Nr,   z)Issued At claim (iat) must be an integer.)intr?   r   )r   r&   rR   rQ   r   r   r   rJ      s    zPyJWT._validate_iatc             C   sF   yt |d }W n tk
r,   tdY nX ||| krBtdd S )Nr-   z*Not Before claim (nbf) must be an integer.z The token is not yet valid (nbf))rS   r?   r   r   )r   r&   rR   rQ   r-   r   r   r   rK      s    zPyJWT._validate_nbfc             C   sF   yt |d }W n tk
r,   tdY nX ||| k rBtdd S )Nr+   z/Expiration Time claim (exp) must be an integer.zSignature has expired)rS   r?   r   r   )r   r&   rR   rQ   r+   r   r   r   rL      s    zPyJWT._validate_expc                s   |d krd|krd S |d k	r,d|kr,t d|d krDd|krDtd|d  t tr\ g t tsntdtdd  D rtdt|tr|g}t fdd|D stdd S )NaudzInvalid audiencezInvalid claim format in tokenc             s   s   | ]}t |t V  qd S )N)r1   rG   ).0cr   r   r   	<genexpr>   s    z&PyJWT._validate_aud.<locals>.<genexpr>c             3   s   | ]}| kV  qd S )Nr   )rU   rT   )audience_claimsr   r   rW      s    )r   r   r1   rG   listany)r   r&   rO   r   )rX   r   rN      s"    


zPyJWT._validate_audc             C   s4   |d krd S d|krt d|d |kr0tdd S )NZisszInvalid issuer)r   r   )r   r&   rP   r   r   r   rM      s    zPyJWT._validate_iss)N)r%   NN)r9   NN)r9   NN)NNr   )__name__
__module____qualname__r   staticmethodr   rG   r   boolr	   r   r   r
   r   r6   ZJSONEncoderr8   r=   rE   rA   rI   rJ   rK   rL   rN   rM   r   r   r   r   r      s,   
$  "  *  
		r   )r6   Zcalendarr   collections.abcr   r   r   r   typingr   r   r	   r
   r   r   r9   r   
exceptionsr   r   r   r   r   r   r   r   Z_jwt_global_objr8   r=   rE   r   r   r   r   <module>   s    $ I