
    gc                        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mZ ddlmZ  G d d	      Z G d
 d      Z G d d      Zy)    )annotationsN)Any   )get_default_algorithms
has_cryptorequires_cryptography)InvalidKeyErrorMissingCryptographyError
PyJWKErrorPyJWKSetError
PyJWTError)JWKDictc                  t    e Zd Zdd	dZedd
d       Zeddd       Zedd       Zedd       Z	edd       Z
y)PyJWKNc                h   t               | _        || _        | j                  j                  dd       }|st	        d| j                         |s6t        | j                  t              r| j                  j                  dd       }|s| j                  j                  dd       }|dk(  r0|dk(  s|sd}ny|dk(  rd	}nq|d
k(  rd}ni|dk(  rd}nat	        d|       |dk(  rd}nK|dk(  rd}nC|dk(  r0|st	        d| j                         |dk(  rd}nt	        d|       t	        d|       t        s|t        v rt        | d      || _
        || j                  v r| j                  |   | _        nt        d| j                         | j                  j                  | j                        | _        y )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_name	Algorithmr   from_jwkkey)selfjwk_data	algorithmr   r   s        K/var/www/api/v1/venv_getwork_v1/lib/python3.12/site-packages/jwt/api_jwk.py__init__zPyJWK.__init__   s   13!nn  -!$6t~~6F"GHHZ=**5$7I..$$UD1Cd{'> 'IG^ 'IG^ 'IK' (I),=cU*CDD#	#	),>t~~>N*OPP)# 'I),=cU*CDD%(9#&?@@i+@@*+FG  ((((!--i8DNDT^^DTUVV>>**4>>:    c                    t        | |      S N)r   )objr-   s     r.   	from_dictzPyJWK.from_dictH   s    S)$$r0   c                X    t        j                  |       }t        j                  ||      S r2   )jsonloadsr   r4   )datar-   r3   s      r.   	from_jsonzPyJWK.from_jsonL   s!    jjsI..r0   c                :    | j                   j                  dd       S )Nr   r#   r$   r+   s    r.   key_typezPyJWK.key_typeQ       ~~!!%..r0   c                :    | j                   j                  dd       S )Nkidr;   r<   s    r.   key_idzPyJWK.key_idU   r>   r0   c                :    | j                   j                  dd       S )Nuser;   r<   s    r.   public_key_usezPyJWK.public_key_useY   r>   r0   r2   )r,   r   r-   
str | NonereturnNone)r3   r   r-   rE   rF   r   )r8   strr-   rG   rF   r   )rF   rE   )__name__
__module____qualname__r/   staticmethodr4   r9   propertyr=   rA   rD    r0   r.   r   r      sl    3;j % % / / / / / / / /r0   r   c                  @    e Zd ZddZedd       Zedd       Zd	dZy)
PyJWKSetc                P   g | _         |st        d      t        |t              st        d      |D ]'  }	 | j                   j	                  t        |             ) t        | j                         dk(  rt        d      y # t        $ r}t        |t              r|Y d }~nd }~ww xY w)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?)	keysr   r%   listappendr   r   r
   len)r+   rR   r*   errors       r.   r/   zPyJWKSet.__init___   s    	 FGG$% 788C		  s,  tyy>Qg    e%=>K	s   $B  	B%	B  B%c                <    | j                  dg       }t        |      S )NrR   )r$   rP   )r3   rR   s     r.   r4   zPyJWKSet.from_dictv   s    wwvr"~r0   c                V    t        j                  |       }t        j                  |      S r2   )r6   r7   rP   r4   )r8   r3   s     r.   r9   zPyJWKSet.from_json{   s!    jj!!#&&r0   c                f    | j                   D ]  }|j                  |k(  s|c S  t        d|       )Nzkeyset has no key for kid: )rR   rA   KeyError)r+   r@   r*   s      r.   __getitem__zPyJWKSet.__getitem__   s6    99CzzS 
  4SE:;;r0   N)rR   zlist[JWKDict]rF   rG   )r3   zdict[str, Any]rF   rP   )r8   rH   rF   rP   )r@   rH   rF   r   )rI   rJ   rK   r/   rL   r4   r9   r[   rN   r0   r.   rP   rP   ^   s4    .   ' '<r0   rP   c                  $    e Zd ZddZddZddZy)PyJWTSetWithTimestampc                D    || _         t        j                         | _        y r2   )jwk_settime	monotonic	timestamp)r+   r_   s     r.   r/   zPyJWTSetWithTimestamp.__init__   s    )r0   c                    | j                   S r2   )r_   r<   s    r.   get_jwk_setz!PyJWTSetWithTimestamp.get_jwk_set   s    ||r0   c                    | j                   S r2   )rb   r<   s    r.   get_timestampz#PyJWTSetWithTimestamp.get_timestamp   s    ~~r0   N)r_   rP   )rF   rP   )rF   float)rI   rJ   rK   r/   rd   rf   rN   r0   r.   r]   r]      s    *r0   r]   )
__future__r   r6   r`   typingr   
algorithmsr   r   r   
exceptionsr	   r
   r   r   r   typesr   r   rP   r]   rN   r0   r.   <module>rm      sH    "    Q Q  I/ I/X&< &<R	 	r0   