o
    ÿÑÐbè  ã                   @   sD   d dl mZmZ ddlmZ ddlmZ G dd„ deƒZdd„ Z	d	S )
é    )Ú
text_typesÚ
json_loadsé   )Úload_pem_key)ÚKeySetc                   @   s8   e Zd Zi Zed	dd„ƒZed
dd„ƒZedd„ ƒZdS )Ú
JsonWebKeyNFc                 C   s   | 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ÚktyZcrv_or_sizeÚoptionsÚ
is_privateÚkey_cls© r   úW/var/www/secure340b-portal/env/lib/python3.10/site-packages/authlib/jose/rfc7517/jwk.pyr	   	   s   

zJsonWebKey.generate_keyc                 C   sŠ   d}|dur|  d¡}|du rt|tƒr|  d¡}|du r:t|ƒ}| jD ]}| j| }t||jƒr9| ||¡  S q$| j| }| ||¡S )zUImport a Key from bytes, string, PEM or dict.

        :return: Key instance
        Nr   )ÚgetÚ
isinstanceÚdictr   r   ZRAW_KEY_CLSÚ
import_key)r
   Úrawr   r   Zraw_keyZ_ktyr   r   r   r   r      s   



ÿ
zJsonWebKey.import_keyc                    sB   t |ƒ}t|tƒrd|v r| d¡}t‡ fdd„|D ƒƒS dS dS )z]Import KeySet from string, dict or a list of keys.

        :return: KeySet instance
        Úkeysc                    s   g | ]}ˆ   |¡‘qS r   )r   )Ú.0Úk©r
   r   r   Ú
<listcomp>6   s    z-JsonWebKey.import_key_set.<locals>.<listcomp>N)Ú_transform_raw_keyr   r   r   r   )r
   r   r   r   r   r   Úimport_key_set-   s
   
þzJsonWebKey.import_key_set)NF)N)Ú__name__Ú
__module__Ú__qualname__r   Úclassmethodr	   r   r   r   r   r   r   r      s    r   c                 C   s@   t | tƒr|  d¡r|  d¡rt| ƒS t | ttfƒrd| iS | S )NÚ{Ú}r   )r   r   Ú
startswithÚendswithr   ÚtupleÚlist)r   r   r   r   r   9   s   
ÿÿr   N)
Zauthlib.common.encodingr   r   Z_cryptography_keyr   Úmodelsr   Úobjectr   r   r   r   r   r   Ú<module>   s
    3