� L�gc���ddlmZddlZddlZddlmZddlmZmZm Z ddl m Z m Z m Z mZmZddlmZGd�d ��ZGd �d ��ZGd �d ��ZdS)�)� annotationsN)�Any�)�get_default_algorithms� has_crypto�requires_cryptography)�InvalidKeyError�MissingCryptographyError� PyJWKError� PyJWKSetError� PyJWTError)�JWKDictc��eZdZddd�Zeddd ���Zeddd ���Zedd���Zedd���Z edd���Z dS)�PyJWKN�jwk_datar� algorithm� str | None�return�Nonec��t��|_||_|j�dd��}|st d|j�����|s5t |jt ��r|j�dd��}|s�|j�dd��}|dkr8|dks|sd}n�|dkrd }n�|d krd }ny|d krd }npt d|�����|dkrd}nU|dkrd}nL|dkr4|st d|j�����|dkrd}n$t d|�����t d|�����ts|tvrt|�d����||_ ||jvr|j||_ ntd|j�����|j � |j��|_dS)N�ktyzkty is not found: �alg�crv�ECzP-256�ES256zP-384�ES384zP-521�ES512� secp256k1�ES256KzUnsupported crv: �RSA�RS256�oct�HS256�OKPzcrv is not found: �Ed25519�EdDSAzUnsupported kty: z) requires 'cryptography' to be installed.z%Unable to find an algorithm for key: )r� _algorithms� _jwk_data�getr � isinstance�dictrrr �algorithm_name� Algorithmr �from_jwk�key)�selfrrrrs �[/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/jwt/api_jwk.py�__init__zPyJWK.__init__s#��1�3�3���!����n� � ���-�-��� I�!�"G�t�~�"G�"G�H�H� H�� 8�Z����=�=� 8���*�*�5�$�7�7�I�� A��.�$�$�U�D�1�1�C��d�{�{��'�>�>��>� '�I�I��G�^�^� '�I�I��G�^�^� '�I�I��K�'�'� (�I�I�)�*C�c�*C�*C�D�D�D�����#� � �����#� � ������Q�)�*O�t�~�*O�*O�P�P�P��)�#�#� '�I�I�)�*C�c�*C�*C�D�D�D�%�&?�#�&?�&?�@�@�@�� �i�+@�@�@�*��G�G�G��� �(��� ��(� (� (�!�-�i�8�D�N�N��U�T�^�U�U�V�V� V��>�*�*�4�>�:�:������objc�"�t||��S�N)r)r4rs r1� from_dictzPyJWK.from_dictHs���S�)�$�$�$r3�data�strc�`�tj|��}t�||��Sr6)�json�loadsrr7)r8rr4s r1� from_jsonzPyJWK.from_jsonLs%���j��������s�I�.�.�.r3c�8�|j�dd��S)Nr�r(r)�r0s r1�key_typezPyJWK.key_typeQ����~�!�!�%��.�.�.r3c�8�|j�dd��S)N�kidr?r@s r1�key_idz PyJWK.key_idUrBr3c�8�|j�dd��S)N�user?r@s r1�public_key_usezPyJWK.public_key_useYrBr3r6)rrrrrr)r4rrrrr)r8r9rrrr)rr) �__name__� __module__� __qualname__r2� staticmethodr7r=�propertyrArErH�r3r1rrs�������3;�3;�3;�3;�3;�j�%�%�%�%��\�%��/�/�/�/��\�/��/�/�/��X�/��/�/�/��X�/��/�/�/��X�/�/�/r3rc�N�eZdZdd�Zedd���Zedd ���Zdd�ZdS)�PyJWKSet�keys� list[JWKDict]rrc��g|_|std���t|t��std���|D]X} |j�t |�����+#t $r!}t|t��r|�Yd}~�Qd}~wwxYwt|j��dkrtd���dS)Nz$The JWK Set did not contain any keyszInvalid JWK Set valuerzUThe JWK Set did not contain any usable keys. Perhaps 'cryptography' is not installed?) rQr r*�list�appendrr r �len)r0rQr/�errors r1r2zPyJWKSet.__init___s����� �� H�� F�G�G� G��$��%�%� 9�� 7�8�8� 8�� � �C� �� � � ��s���,�,�,�,��� � � ��e�%=�>�>� ��K����������  ���� �t�y�>�>�Q� � ��g��� � � s�'A*�* B�4B�Br4�dict[str, Any]c�L�|�dg��}t|��S)NrQ)r)rP)r4rQs r1r7zPyJWKSet.from_dictvs!���w�w�v�r�"�"����~�~�r3r8r9c�^�tj|��}t�|��Sr6)r;r<rPr7)r8r4s r1r=zPyJWKSet.from_json{s%���j������!�!�#�&�&�&r3rDrc�X�|jD]}|j|kr|cS�td|�����)Nzkeyset has no key for kid: )rQrE�KeyError)r0rDr/s r1� __getitem__zPyJWKSet.__getitem__�sE���9� � �C��z�S� � �� � � �!��:�S�:�:�;�;�;r3N)rQrRrr)r4rXrrP)r8r9rrP)rDr9rr)rIrJrKr2rLr7r=r]rNr3r1rPrP^s|����������.�����\���'�'�'��\�'�<�<�<�<�<�<r3rPc�&�eZdZd d�Zd d�Zd d�ZdS) �PyJWTSetWithTimestamp�jwk_setrPc�D�||_tj��|_dSr6)r`�time� monotonic� timestamp)r0r`s r1r2zPyJWTSetWithTimestamp.__init__�s���� ���)�)����r3rc��|jSr6)r`r@s r1� get_jwk_setz!PyJWTSetWithTimestamp.get_jwk_set�s ���|�r3�floatc��|jSr6)rdr@s r1� get_timestampz#PyJWTSetWithTimestamp.get_timestamp�s ���~�r3N)r`rP)rrP)rrg)rIrJrKr2rfrirNr3r1r_r_�sP������*�*�*�*����������r3r_)� __future__rr;rb�typingr� algorithmsrrr� exceptionsr r r r r �typesrrrPr_rNr3r1�<module>ros?��"�"�"�"�"�"� � � � � � � � �������Q�Q�Q�Q�Q�Q�Q�Q�Q�Q���������������������I/�I/�I/�I/�I/�I/�I/�I/�X&<�&<�&<�&<�&<�&<�&<�&<�R � � � � � � � � � r3
Memory