
    [hd                        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	          Z G d
 d          Z G d d          ZdS )    )annotationsN)Any   )get_default_algorithms
has_cryptorequires_cryptography)InvalidKeyError
PyJWKErrorPyJWKSetError
PyJWTError)JWKDictc                      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
dS )PyJWKNjwk_datar   	algorithm
str | NonereturnNonec                   t                      | _        || _        | j                            dd           }|st	          d| j                   |s5t          | j        t                    r| j                            dd           }|s| j                            dd           }|dk    r8|dk    s|sd}n|dk    rd	}n|d
k    rd}ny|dk    rd}npt	          d|           |dk    rd}nU|dk    rd}nL|dk    r4|st	          d| j                   |dk    rd}n$t	          d|           t	          d|           t          s|t          v rt          | d          | j                            |          | _
        | j
        st          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   s        Z/var/www/api.easyaligner.net/htdocs/venv_linux/lib/python3.11/site-packages/jwt/api_jwk.py__init__zPyJWK.__init__   s   133!n  -- 	I!"Gt~"G"GHHH 	8Z== 	8**5$77I 	A.$$UD11Cd{{'>>> 'IIG^^ 'IIG^^ 'IIK'' (II)*Cc*C*CDDD#		#		 Q)*Ot~*O*OPPP)## 'II)*Cc*C*CDDD%&?#&?&?@@@ 	Vi+@@@	TTTUUU)--i88~ 	WUT^UUVVV>**4>::    obj'PyJWK'c                "    t          | |          S N)r   )r2   r   s     r/   	from_dictzPyJWK.from_dict>   s    S)$$$r1   datastrc                `    t          j        |           }t                              ||          S r5   )jsonloadsr   r6   )r7   r   r2   s      r/   	from_jsonzPyJWK.from_jsonB   s%    jsI...r1   c                8    | j                             dd           S )Nr   r'   r(   r.   s    r/   key_typezPyJWK.key_typeG       ~!!%...r1   c                8    | j                             dd           S )Nkidr>   r?   s    r/   key_idzPyJWK.key_idK   rA   r1   c                8    | j                             dd           S )Nuser>   r?   s    r/   public_key_usezPyJWK.public_key_useO   rA   r1   r5   )r   r   r   r   r   r   )r2   r   r   r   r   r3   )r7   r8   r   r   r   r3   )r   r   )__name__
__module____qualname__r0   staticmethodr6   r<   propertyr@   rD   rG    r1   r/   r   r      s        /; /; /; /; /;b % % % % \% / / / / \/ / / / X/ / / / X/ / / / X/ / /r1   r   c                  N    e Zd ZddZedd	            Zedd            ZddZdS )PyJWKSetkeyslist[JWKDict]r   r   c                F   g | _         |st          d          t          |t                    st          d          |D ]:}	 | j                             t          |                     +# t          $ r Y 7w xY wt          | j                   dk    rt          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?)rP   r   r)   listappendr   r   len)r.   rP   r-   s      r/   r0   zPyJWKSet.__init__U   s    	 	H FGGG$%% 	9 7888 	 	C	  s,,,,    ty>>Qg   s   'A**
A76A7r2   dict[str, Any]
'PyJWKSet'c                L    |                      dg           }t          |          S )NrP   )r(   rO   )r2   rP   s     r/   r6   zPyJWKSet.from_dictj   s!    wwvr""~~r1   r7   r8   c                ^    t          j        |           }t                              |          S r5   )r:   r;   rO   r6   )r7   r2   s     r/   r<   zPyJWKSet.from_jsono   s%    j!!#&&&r1   rC   r3   c                X    | j         D ]}|j        |k    r|c S t          d|           )Nzkeyset has no key for kid: )rP   rD   KeyError)r.   rC   r-   s      r/   __getitem__zPyJWKSet.__getitem__t   sE    9 	 	CzS  


 !:S::;;;r1   N)rP   rQ   r   r   )r2   rV   r   rW   )r7   r8   r   rW   )rC   r8   r   r3   )rH   rI   rJ   r0   rK   r6   r<   r\   rM   r1   r/   rO   rO   T   s|           *    \ ' ' ' \'< < < < < <r1   rO   c                  &    e Zd Zd	dZd
dZddZdS )PyJWTSetWithTimestampjwk_setrO   c                D    || _         t          j                    | _        d S r5   )r_   time	monotonic	timestamp)r.   r_   s     r/   r0   zPyJWTSetWithTimestamp.__init__|   s    ))r1   r   c                    | j         S r5   )r_   r?   s    r/   get_jwk_setz!PyJWTSetWithTimestamp.get_jwk_set   s
    |r1   floatc                    | j         S r5   )rc   r?   s    r/   get_timestampz#PyJWTSetWithTimestamp.get_timestamp   s
    ~r1   N)r_   rO   )r   rO   )r   rf   )rH   rI   rJ   r0   re   rh   rM   r1   r/   r^   r^   {   sP        * * * *        r1   r^   )
__future__r   r:   ra   typingr   
algorithmsr   r   r   
exceptionsr	   r
   r   r   typesr   r   rO   r^   rM   r1   r/   <module>rn      s   " " " " " "         Q Q Q Q Q Q Q Q Q Q N N N N N N N N N N N N      E/ E/ E/ E/ E/ E/ E/ E/P$< $< $< $< $< $< $< $<N	 	 	 	 	 	 	 	 	 	r1   