o
    ÿÑÐb’  ã                   @   sD   d dl mZmZmZmZ d dlmZ d dlmZ G dd„ deƒZ	dS )é    )Úto_bytesÚ
to_unicodeÚurlsafe_b64encodeÚurlsafe_b64decode)Úgenerate_token)ÚKeyc                   @   s>   e Zd ZdZdZdgZdd„ Zeddd„ƒZeddd„ƒZ	dS )ÚOctKeyz"Key class of the ``oct`` key type.ÚoctÚkc                 C   s   |   |¡ | jS ©N)Zcheck_key_opÚraw_key)ÚselfZkey_op© r   ú[/var/www/secure340b-portal/env/lib/python3.10/site-packages/authlib/jose/rfc7518/oct_key.pyÚ
get_op_key   s   
zOctKey.get_op_keyNc                 C   sp   t |tƒr|  |¡ |}tt|d ƒƒ}nt|ƒ}tt|ƒƒ}d|i}|dur,| |¡ | |ƒ}||_d|_	|S )z.Import a key from bytes, string, or dict data.r
   NÚsecret)
Ú
isinstanceÚdictZcheck_required_fieldsr   r   r   r   Úupdater   Zkey_type)ÚclsÚrawÚoptionsÚpayloadr   r
   Úobjr   r   r   Ú
import_key   s   


zOctKey.import_keyé   Fc                 C   s4   |st dƒ‚|d dkrt dƒ‚|  t|d ƒ|¡S )z.Generate a ``OctKey`` with the given bit size.z&oct key can not be generated as publicé   r   zInvalid bit size for oct key)Ú
ValueErrorr   r   )r   Zkey_sizer   Ú
is_privater   r   r   Úgenerate_key'   s
   zOctKey.generate_keyr   )r   NF)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__ZktyZREQUIRED_JSON_FIELDSr   Úclassmethodr   r   r   r   r   r   r   	   s    r   N)
Zauthlib.common.encodingr   r   r   r   Zauthlib.common.securityr   Zauthlib.jose.rfc7517r   r   r   r   r   r   Ú<module>   s    