
    kKj                         d dl Zd dl mZ d dlZd dlZddlmZ ddlmZm	Z	m
Z
 ddlmZ ddlmZmZ ddlmZmZmZ d	Z G d
 de      Z G d de      Zy)    N)Any   )SecurityWarning)to_bytesurlsafe_b64decodeurlsafe_b64encode)KeyParameter)SymmetricKeyNativeKeyBinding)KeyParametersDictKeyAnyKey)s   -----BEGIN s   ---- BEGIN s   ssh-rsa s   ssh-dss s   ssh-ed25519 s   ecdsa-sha2-c                   j    e Zd Zedededefd       Zededefd       Zed
dede	dz  defd	       Z
y)
OctBindingraw_keyprivatereturnc                 >    t        |      j                  d      }d|iS )Nzutf-8k)r   decode)clsr   r   r   s       i/Users/ahmed/devFolder/Ultron/claude-voice/.venv/lib/python3.12/site-packages/joserfc/_rfc7518/oct_key.pyconvert_raw_key_to_dictz"OctBinding.convert_raw_key_to_dict   s     g&--g6Qx    valuec                 0    t        t        |d               S )Nr   )r   r   )r   r   s     r   import_from_dictzOctBinding.import_from_dict    s     %*!566r   Npasswordc                 d    |j                  t              rt        j                  dt               |S )Nz)This key should not be used as an oct key)
startswithPOSSIBLE_UNSAFE_KEYSwarningswarnr   )r   r   r   s      r   import_from_byteszOctBinding.import_from_bytes$   s'     01MMEWr   )N)__name__
__module____qualname__classmethodbytesboolr   r   r   r   r$    r   r   r   r      sx    e d w   7W 7 7 7 e sTz U  r   r   c                        e Zd ZdZdZeZd edddd      iZe		 	 dde
d	ed
edz  de
dd f
 fd       Ze		 	 	 	 ddedz  d
edz  dededd f
d       Zddedej                  def fdZ xZS )OctKeyz:OctKey is a symmetric key, defined by RFC7518 Section 6.4.octr   z	Key ValuestrTNr   r   
parametersr   r   c                     t         t        |   |||      }|j                  st	        d      t        |j                        dk  rt        j                  dt               |S )Nz"oct key material must not be empty   Key size should be >= 112 bits)	superr-   
import_key	raw_value
ValueErrorlenr"   r#   r   )r   r   r0   r   key	__class__s        r   r5   zOctKey.import_key5   sT     FC3E:xP}}
 ABBs}}"MM:OL
r   key_sizer   auto_kidc                     |st        d      |d}|dz  dk7  rt        d      |dk  rt        j                  dt               t	        j
                  |dz        } | |||      }|r|j                          |S )zGenerate a ``OctKey`` with the given bit size (not bytes).

        :param key_size: size in bit
        :param parameters: extra parameter in JWK
        :param private: must be True
        :param auto_kid: add ``kid`` automatically
        z&oct key can not be generated as public      r   zInvalid bit size for oct keyp   r3   )r7   r"   r#   r   secretstoken_bytes
ensure_kid)r   r;   r0   r   r<   r   r9   s          r   generate_keyzOctKey.generate_keyH   s     EFFHa<1;<<c>MM:OL%%h!m4'7J7NN
r   paramsc                 &    t        |   dddi|S )Nr   Tr+   )r4   as_dict)selfr   rE   r:   s      r   rG   zOctKey.as_dictj   s    w6t6v66r   )NN)r>   NTF)F)r%   r&   r'   __doc__key_typer   bindingr	   value_registryr(   r   r   r   r5   intr*   rD   tr   rG   __classcell__)r:   s   @r   r-   r-   ,   s    DHG <UD$GHN ,0	 "D( 	
 
 $   #+/* "D( 	
  
 B7t 7quu 7 7 7r   r-   )typingrN   r   rA   r"   errorsr   utilr   r   r   registryr	   _rfc7517.modelsr
   r   _rfc7517.typesr   r   r   r!   r   r-   r+   r   r   <module>rV      sM        $ 
 $ < ; ; ! $?7\ ?7r   