o
    ifd                     @  s   d dl mZ d dlZd dlZd dlmZ ddlmZmZm	Z	 ddl
mZmZmZmZ ddlmZ G dd	 d	ZG d
d dZG dd dZdS )    )annotationsN)Any   )get_default_algorithms
has_cryptorequires_cryptography)InvalidKeyError
PyJWKErrorPyJWKSetError
PyJWTError)JWKDictc                   @  sb   e Zd Zdddd	ZeddddZeddddZedddZedddZ	edddZ
dS )PyJWKNjwk_datar   	algorithm
str | NonereturnNonec                 C  sf  t  | _|| _| jdd }|std| j |s't| jtr'| jdd }|s| jdd }|dkrY|dks:|s=d}nM|dkrDd	}nF|d
krKd}n?|dkrRd}n8td| |dkr`d}n*|dkrgd}n#|dkr|sutd| j |dkr|d}ntd| td| ts|tv rt	| d| j|| _
| j
st	d| j | j
| j| _d S )Nktyzkty is not found: algcrvECzP-256ES256zP-384ES384zP-521ES512	secp256k1ES256KzUnsupported crv: RSARS256octHS256OKPzcrv is not found: Ed25519EdDSAzUnsupported kty: z) requires 'cryptography' to be installed.z%Unable to find an algorithm for key: )r   _algorithms	_jwk_datagetr   
isinstancedictr   r   r	   	Algorithmfrom_jwkkey)selfr   r   r   r    r,   D/var/www/html/corbot_env/lib/python3.10/site-packages/jwt/api_jwk.py__init__   sH   zPyJWK.__init__obj'PyJWK'c                 C  s
   t | |S N)r   )r/   r   r,   r,   r-   	from_dict>   s   
zPyJWK.from_dictdatastrc                 C  s   t | }t||S r1   )jsonloadsr   r2   )r3   r   r/   r,   r,   r-   	from_jsonB   s   
zPyJWK.from_jsonc                 C     | j dd S )Nr   r$   r%   r+   r,   r,   r-   key_typeG      zPyJWK.key_typec                 C  r8   )Nkidr9   r:   r,   r,   r-   key_idK   r<   zPyJWK.key_idc                 C  r8   )Nuser9   r:   r,   r,   r-   public_key_useO   r<   zPyJWK.public_key_user1   )r   r   r   r   r   r   )r/   r   r   r   r   r0   )r3   r4   r   r   r   r0   )r   r   )__name__
__module____qualname__r.   staticmethodr2   r7   propertyr;   r>   r@   r,   r,   r,   r-   r      s    1r   c                   @  s<   e Zd ZdddZedd
dZedddZdddZdS )PyJWKSetkeyslist[JWKDict]r   r   c              	   C  sn   g | _ |s	tdt|tstd|D ]}z
| j t| W q ty)   Y qw t| j dkr5tdd S )Nz$The JWK Set did not contain any keyszInvalid JWK Set valuer   zUThe JWK Set did not contain any usable keys. Perhaps 'cryptography' is not installed?)rG   r
   r&   listappendr   r   len)r+   rG   r*   r,   r,   r-   r.   U   s    
zPyJWKSet.__init__r/   dict[str, Any]
'PyJWKSet'c                 C  s   |  dg }t|S )NrG   )r%   rF   )r/   rG   r,   r,   r-   r2   j   s   zPyJWKSet.from_dictr3   r4   c                 C  s   t | }t|S r1   )r5   r6   rF   r2   )r3   r/   r,   r,   r-   r7   o   s   

zPyJWKSet.from_jsonr=   r0   c                 C  s,   | j D ]}|j|kr|  S qtd| )Nzkeyset has no key for kid: )rG   r>   KeyError)r+   r=   r*   r,   r,   r-   __getitem__t   s
   

zPyJWKSet.__getitem__N)rG   rH   r   r   )r/   rL   r   rM   )r3   r4   r   rM   )r=   r4   r   r0   )rA   rB   rC   r.   rD   r2   r7   rO   r,   r,   r,   r-   rF   T   s    
rF   c                   @  s*   e Zd ZdddZdddZdd	d
ZdS )PyJWTSetWithTimestampjwk_setrF   c                 C  s   || _ t | _d S r1   )rQ   time	monotonic	timestamp)r+   rQ   r,   r,   r-   r.   |   s   zPyJWTSetWithTimestamp.__init__r   c                 C     | j S r1   )rQ   r:   r,   r,   r-   get_jwk_set      z!PyJWTSetWithTimestamp.get_jwk_setfloatc                 C  rU   r1   )rT   r:   r,   r,   r-   get_timestamp   rW   z#PyJWTSetWithTimestamp.get_timestampN)rQ   rF   )r   rF   )r   rX   )rA   rB   rC   r.   rV   rY   r,   r,   r,   r-   rP   {   s    

rP   )
__future__r   r5   rR   typingr   
algorithmsr   r   r   
exceptionsr   r	   r
   r   typesr   r   rF   rP   r,   r,   r,   r-   <module>   s    H'