
    ~h                     B    d dl mZ ddlmZ ddlmZ  G d d      Zd Zy)	    )
json_loads   )load_pem_key)KeySetc                   D    e Zd Zi Zedd       Zedd       Zed        Zy)
JsonWebKeyNc                 F    | 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         T/opt/mcp/mcp-sentiment/venv/lib/python3.12/site-packages/authlib/jose/rfc7517/jwk.pyr   zJsonWebKey.generate_key
   s'     //#&##K*EE    c                 X   d}||j                  d      }|!t        |t              r|j                  d      }|Pt        |      }| j                  D ]6  }| j                  |   }|j                  |      s$|j                  ||      c S  | j                  |   }|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''%.C;"3'G @//$/++G4"--gw??@
 //#&!!#w//r   c                     t        |      }t        |t              r=d|v r9|j                  d      }t	        |D cg c]  }| j                  |       c}      S t        d      c c}w )z]Import KeySet from string, dict or a list of keys.

        :return: KeySet instance
        keyszInvalid key set format)_transform_raw_keyr   r   r   r   r   
ValueError)r   r   r   ks       r   import_key_setzJsonWebKey.import_key_set.   s[     !%c4 Vs]776?Dd;3>>!,;<<122 <s   A$)NF)N)__name__
__module____qualname__r
   classmethodr   r   r"    r   r   r   r      sC    K
F 
F 0 0, 	3 	3r   r   c                     t        | t              r-| j                  d      r| j                  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   ;   sI    #ss 3S8I#	C%	'}Jr   N)authlib.common.encodingr   _cryptography_keyr   key_setr   r   r   r'   r   r   <module>r3      s    . + 13 13hr   