<!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),:)
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   r9   %   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_completer7   loads
ValueErrorr2   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   rC   rD   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"   )r2   r   total_secondsbytesstrtyper   r3   _validate_required_claimsr   r   utcnowr6   _validate_iat_validate_nbf_validate_exp_validate_iss_validate_aud)r   r&   r   audienceissuerleewayrC   nowr   r   r   rB   z   s     
zPyJWT._validate_claimsc             C   s,   x&|d D ]}| |d kr
t|q
W d S )Nr$   )r5   r   )r   r&   r   Zclaimr   r   r   rK      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&   rU   rT   r   r   r   rM      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))rV   r@   r   r   )r   r&   rU   rT   r-   r   r   r   rN      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)rV   r@   r   r   )r   r&   rU   rT   r+   r   r   r   rO      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)r2   rI   ).0cr   r   r   	<genexpr>   s    z&PyJWT._validate_aud.<locals>.<genexpr>c             3   s   | ]}| kV  qd S )Nr   )rX   rW   )audience_claimsr   r   rZ      s    )r   r   r2   rI   listany)r   r&   rR   r   )r[   r   rQ      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&   rS   r   r   r   rP      s    zPyJWT._validate_iss)N)r%   NN)r:   NN)r:   NN)NNr   )__name__
__module____qualname__r   staticmethodr   rI   r   boolr	   r   r   r
   r   r7   JSONEncoderr9   r>   rF   rB   rK   rM   rN   rO   rQ   rP   r   r   r   r   r      s,   
$  "  *  
		r   )r7   calendarr   collections.abcr   r   r   r   typingr   r   r	   r
   r   r   r:   r   
exceptionsr   r   r   r   r   r   r   r   Z_jwt_global_objr9   r>   rF   r   r   r   r   <module>   s    $ I