
    kKj[              
       >   d dl mZ ddlmZmZmZmZ ddlmZ ddl	m
Z
mZmZ ddlmZmZmZmZmZmZ ddlmZ g d	Zd
edefdZd
edefdZd
edefdZdededefdZdededefdZdeez  dedeeeef   eeef   edz  f   fdZ d
eez  dee
z  dedee   fdZ!y)    )Any   )BaseJSONEncryptionGeneralJSONEncryptionFlattenedJSONEncryption	Recipient)JWERegistry)JSONRecipientDictGeneralJSONSerializationFlattenedJSONSerialization   )to_bytesto_strjson_b64encodejson_b64decodeurlsafe_b64encodeurlsafe_b64decode)Key)represent_general_jsonrepresent_flattened_jsonextract_general_jsonextract_flattened_jsonobjreturnc                 
   t        |       }g }| j                  D ]a  }i }|j                  J |j                  J |j                  |d<   t	        t        |j                              |d<   |j                  |       c ||d<   |S )Nheaderencrypted_key
recipients)__represent_json_serializationr   r   r   r   r   append)r   datar   	recipientitems        f/Users/ahmed/devFolder/Ultron/claude-voice/.venv/lib/python3.12/site-packages/joserfc/_rfc7516/json.pyr   r   !   s    %CC%HDJ^^	"$+++&&222"))X &'89P9P'Q R_$ $ $DK    c                     t        |       }| j                  d   }|J |j                  J |j                  J |j                  |d<   t	        t        |j                              |d<   |S )Nr   r   r   )r   r   r   r   r   r   )r   r!   r"   s      r$   r   r   /   sy    'Ec'JDq!I   '''""...%%DN"#4Y5L5L#MNDKr%   c                 `   t        t        | j                              t        | j                  d         t        | j                  d         t        | j                  d         d}| j                  r!t        t        | j                              |d<   | j                  r| j                  |d<   |S )Niv
ciphertexttag)	protectedr(   r)   r*   aadunprotected)r   r   r+   base64_segmentsr,   r   r-   )r   r!   s     r$   r   r   :   s    N3==9:S((./S00>?c))%01	D ww.sww78U
!oo]Kr%   r!   registryc                 8   t        | d         }|j                  |       t        |      }| j                  d      }t	        | |      \  }}}t        |d ||      }||_        ||_        | d   D ]*  }	t        ||	|      }
|j                  j                  |
       , |S )Nr+   r-   r   )r   validate_protected_header_sizer   get__extract_segmentsr   r.   bytes_segments__extract_recipientr   r    )r!   r/   protected_segmentr+   r-   r.   r4   r,   r   r#   r"   s              r$   r   r   I   s     k!23++,=>01I((=)K+=dH+M(O^S
	4c
BC)C'C\"'T8<	i( # Jr%   c                 $   t        | d         }|j                  |       t        |      }| j                  d      }t	        | |      \  }}}t        |d ||      }||_        ||_        t        || |      }	|j                  j                  |	       |S )Nr+   r-   )r   r1   r   r2   r3   r   r.   r4   r5   r   r    )
r!   r/   r6   r+   r-   r.   r4   r,   r   r"   s
             r$   r   r   Z   s     k!23++,=>01I((=)K+=dH+M(O^S
!)T;
DC)C'C#Cx8INN)$Jr%   Nc                    t        | d         t        | d         t        | d         d}|j                  |d          |j                  |d          |j                  |d          t	        |d         t	        |d         t	        |d         d}d| v r%t        | d         |d<   t	        |d         }||d<   nd }|||fS )Nr(   r)   r*   )r(   r)   r*   r,   )r   #validate_initialization_vector_sizevalidate_ciphertext_sizevalidate_auth_tag_sizer   )r!   r/   r.   r4   r,   s        r$   r3   r3   h   s    
 tDz"tL12U$)O
 001FG%%ol&CD##OE$:; 56'(EF !78(N
 }!)$u+!6 67 #uNC//r%   c                     t        | |j                  d            }d|v r/t        |d         }|j                  |       t	        |      |_        |S )Nr   r   )r   r2   r   validate_encrypted_key_sizer   r   )r   r!   r/   r"   
ek_segments        r$   r5   r5      sQ    
 !*#txx/A BI$d?34
,,Z8"3J"?	r%   )"typingr   modelsr   r   r   r   r/   r	   typesr
   r   r   utilr   r   r   r   r   r   _keysr   __all__r   r   r   r   r   tupledictstrbytesr3   r5    r%   r$   <module>rJ      s-     " 
   5 :R "9 >X (: s 7 ; Sh "!; { Wn 0
"%?
?00 4U
T#u*-ut|;<04
	 #8	8

$'8
8
 
 s^	
r%   