HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //home/arjun/projects/env/lib/python3.10/site-packages/jwt/__pycache__/jwks_client.cpython-310.pyc
o

we~�@s�ddlZddlZddlmZddlmZddlmZm	Z	m
Z
mZddlm
Z
ddlmZmZddlmZdd	lmZmZdd
lmZGdd�d�ZdS)
�N)�	lru_cache)�
SSLContext)�Any�Dict�List�Optional)�URLError�)�PyJWK�PyJWKSet)�decode_complete)�PyJWKClientConnectionError�PyJWKClientError)�JWKSetCachec@s�eZdZ							d"deded	ed
ededeeeefd
edee	fdd�Z
defdd�Zd#dedefdd�Z
d#dedeefdd�Zdedefdd�Zdedefdd�Zedeededeefd d!��ZdS)$�PyJWKClientF�T�,N��uri�
cache_keys�max_cached_keys�
cache_jwk_set�lifespan�headers�timeout�ssl_contextc		Csv|duri}||_d|_||_||_||_|r)|dkr#td|�d���t|�|_nd|_|r9t|d�|j�|_dSdS)Nrz/Lifespan must be greater than 0, the input is "�")�maxsize)	r�
jwk_set_cacherrrrrr�get_signing_key)	�selfrrrrrrrr�r!�H/home/arjun/projects/env/lib/python3.10/site-packages/jwt/jwks_client.py�__init__s"
��zPyJWKClient.__init__�returnc
Cs�d}zRz,tjj|j|jd�}tjj||j|jd��
}t�	|�}Wd�n1s)wYWnt
tfyE}ztd|�d���d}~ww|W|j
durT|j
�|�SS|j
dura|j
�|�ww)N)�urlr)r�contextz'Fail to fetch data from the url, err: "r)�urllib�request�Requestrr�urlopenrr�json�loadr�TimeoutErrorr
r�put)r �jwk_set�r�response�er!r!r"�
fetch_data2s,
���
���
��zPyJWKClient.fetch_data�refreshcCsHd}|jdur|s|j��}|dur|��}t|t�std��t�|�S)Nz.The JWKS endpoint did not return a JSON object)r�getr3�
isinstance�dictrr�	from_dict)r r4�datar!r!r"�get_jwk_setDs


zPyJWKClient.get_jwk_setcCs*|�|�}dd�|jD�}|std��|S)NcSs g|]}|jdvr|jr|�qS))�sigN)�public_key_use�key_id)�.0�jwk_set_keyr!r!r"�
<listcomp>Ss
�z0PyJWKClient.get_signing_keys.<locals>.<listcomp>z2The JWKS endpoint did not contain any signing keys)r:�keysr)r r4r/�signing_keysr!r!r"�get_signing_keysQs
�zPyJWKClient.get_signing_keys�kidcCsH|��}|�||�}|s"|jdd�}|�||�}|s"td|�d���|S)NT)r4z,Unable to find a signing key that matches: "r)rC�	match_kidr)r rDrB�signing_keyr!r!r"r^s
�zPyJWKClient.get_signing_key�tokencCs(t|ddid�}|d}|�|�d��S)N�verify_signatureF)�options�headerrD)�decode_tokenrr5)r rG�
unverifiedrJr!r!r"�get_signing_key_from_jwtnsz$PyJWKClient.get_signing_key_from_jwtrBcCs&d}|D]}|j|kr|}|Sq|S)N)r=)rBrDrF�keyr!r!r"rEss
�zPyJWKClient.match_kid)FrTrNrN)F)�__name__�
__module__�__qualname__�str�bool�intrrrrr#r3rr:rr
rCrrM�staticmethodrEr!r!r!r"rs@��������	
�#

$r)r+�urllib.requestr'�	functoolsr�sslr�typingrrrr�urllib.errorr�api_jwkr
r�api_jwtrrK�
exceptionsr
rrrrr!r!r!r"�<module>s