
    ([f                     J    d dl mZ ddlmZ ddlmZ  G d d          Zd ZdS )	    )
json_loads   )KeySet)load_pem_keyc                   X    e Zd Zi Zedd            Zedd            Zed             ZdS )
JsonWebKeyNFc                 J    | j         |         }|                    |||          S )aP  Generate a Key with the given key type, curve name or bit size.

        :param kty: string of ``oct``, ``RSA``, ``EC``, ``OKP``
        :param crv_or_size: curve name or bit size
        :param options: a dict of other options for Key
        :param is_private: create a private key or public key
        :return: Key instance
        )JWK_KEY_CLSgenerate_key)clsktycrv_or_sizeoptions
is_privatekey_clss         L/var/www/piapp/venv/lib/python3.11/site-packages/authlib/jose/rfc7517/jwk.pyr   zJsonWebKey.generate_key	   s(     /#&##K*EEE    c                 |   d}||                     d          }|*t          |t                    r|                     d          }|St          |          }| j        D ]<}| j        |         }|                    |          r|                    ||          c S =| j        |         }|                    ||          S )zUImport a Key from bytes, string, PEM or dict.

        :return: Key instance
        Nr   )get
isinstancedictr   r
   validate_raw_key
import_key)r   rawr   r   raw_key_ktyr   s          r   r   zJsonWebKey.import_key   s     ++e$$C;:c400;''%..C;"3''G @ @/$/++G44 @"--gw?????@ /#&!!#w///r   c                      t          |          }t          |t                    r4d|v r0|                    d          }t	           fd|D                       S t          d          )z]Import KeySet from string, dict or a list of keys.

        :return: KeySet instance
        keysc                 :    g | ]}                     |          S  )r   ).0kr   s     r   
<listcomp>z-JsonWebKey.import_key_set.<locals>.<listcomp>6   s%    ;;;3>>!,,;;;r   zInvalid key set format)_transform_raw_keyr   r   r   r   
ValueError)r   r   r   s   `  r   import_key_setzJsonWebKey.import_key_set-   sm     !%%c4   	=Vs]]776??D;;;;d;;;<<<1222r   )NF)N)__name__
__module____qualname__r
   classmethodr   r   r&   r    r   r   r   r      sv        K
F 
F 
F [
F 0 0 0 [0, 	3 	3 [	3 	3 	3r   r   c                     t          | t                    r9|                     d          r$|                     d          rt	          |           S t          | t
          t          f          rd| iS | S )N{}r   )r   str
startswithendswithr   tuplelist)r   s    r   r$   r$   :   sm    #s NN3$'LL$5$5#	C%	'	' }Jr   N)authlib.common.encodingr   key_setr   _cryptography_keyr   r   r$   r    r   r   <module>r6      s}    . . . . . .       + + + + + +13 13 13 13 13 13 13 13h    r   