
    kKjR                     6   U d dl mZmZmZ ddlmZmZmZmZ e	e
ef   ZdeddfdZde
ddfdZdeddfd	Zdeddfd
Zdee
   ddfdZde	e
ef   ddfdZdee
   deee
ee
   f   gdf   fdZdeddfdZeegdf   ZeeeeeeedZe	e
ef   ed<    G d d      Ze	e
ef   Z G d d      Z G d d      Ze	e
ef   Ze	e
ef   Z eded       ede       ede       ede       ede       ed e       ed!e       ed"e       ed#e       ed$e       ed%e       ed&e      d'Z eed(<    ed)ed       ed*e      d+e Z! ed,ed-       ed. ed/d0g             ed1 eg d2             ede       ede       ede       ed e       ed!e       ed"e      d3	Z" ed4d/d       ed5d/d6       ed7d0d6       ed8d0d       ed9d0d6       ed:d0d       ed;d0d6       ed<d0d      d2Z#d=ed>eddfd?Z$dEd=ed>ed@eddfdAZ%d=ed>eddfdBZ&dCedz  ddfdDZ'y)F    )AnyCallableUnion   )MissingHeaderErrorMissingCritHeaderErrorUnsupportedHeaderErrorInvalidHeaderValueErrorvaluereturnNc                 :    t        | t              st        d      y )Nzmust be a str)
isinstancestr
ValueErrorr   s    a/Users/ahmed/devFolder/Ultron/claude-voice/.venv/lib/python3.12/site-packages/joserfc/registry.pyis_strr      s    eS!)) "    c                 R    t        |        | j                  d      st        d      y )N)zhttp://zhttps://zmust be a URL)r   
startswithr   r   s    r   is_urlr      s(    
5M34)) 5r   c                 :    t        | t              st        d      y )Nzmust be an int)r   intr   r   s    r   is_intr      s    eS!)** "r   c                 :    t        | t              st        d      y )Nzmust be an bool)r   boolr   r   s    r   is_boolr      s    eT"*++ #r   valuesc                 t    t        | t              st        d      t        d | D              st        d      y )Nzmust be a list[str]c              3   <   K   | ]  }t        |t                y wN)r   r   ).0r   s     r   	<genexpr>zis_list_str.<locals>.<genexpr>%   s     :6%z%%6s   )r   listr   all)r   s    r   is_list_strr&   !   s7    fd#.//:6::.// ;r   c                 :    t        | t              st        d      y )Nzmust be a JWK)r   dictr   r   s    r   is_jwkr)   )   s    eT")) #r   choicesc                 @     dt         t        t            z  dd f fd}|S )Nr   r   c                     t        | t              r#t        fd| D              st        d       y | vrt        d       y )Nc              3   &   K   | ]  }|v  
 y wr!    )r"   vr*   s     r   r#   z1in_choices.<locals>._is_one_of.<locals>.<genexpr>1   s     3UqG|Us   zmust be one of )r   r$   r%   r   )r   r*   s    r   
_is_one_ofzin_choices.<locals>._is_one_of/   sS    eT"3U33 ?7)!<== 4 '!wi899 "r   )r   r$   )r*   r0   s   ` r   
in_choicesr1   .   s&    :#S	/ :d : r   _c                     t        d      )Nzis not supported)r   )r2   s    r   not_supportr4   :   s    
'
((r   )r   z	list[str]r   r   urljwknone_value_validatorsc                   ,    e Zd ZdZddedeez  defdZy)HeaderParameterz,Define the header parameter for JWS and JWE.descriptionvalidaterequiredc                 `    || _         t        |t              r	t        |   n|| _        || _        y r!   )r;   r   r   r8   r<   r=   )selfr;   r<   r=   s       r   __init__zHeaderParameter.__init__M   s*    &7A(C7P)(3V^ r   N)F__name__
__module____qualname____doc__r   Validater   r@   r.   r   r   r:   r:   J   s#    6!C !3> !T !r   r:   c            	       6    e Zd ZdZddedeez  dedz  defdZy)	KeyParameterz!Define the key parameter for JWK.Nr;   r<   privater=   c                 n    || _         t        |t              r	t        |   n|| _        || _        || _        y r!   )r;   r   r   r8   r<   rI   r=   )r?   r;   r<   rI   r=   s        r   r@   zKeyParameter.__init__]   s1     +7A(C7P)(3V^ r   )NFrA   r.   r   r   rH   rH   Z   s0    +!C !3> !DSWK !jn !r   rH   c                   &    e Zd Zdedededz  fdZy)KeyOperationr;   userI   Nc                 .    || _         || _        || _        y r!   )r;   rM   rI   )r?   r;   rM   rI   s       r   r@   zKeyOperation.__init__i   s    &r   )rB   rC   rD   r   r   r@   r.   r   r   rL   rL   h   s     C c D4K r   rL   	AlgorithmTzJWK Set URLzJSON Web KeyzKey IDz	X.509 URLzX.509 Certificate Chainz"X.509 Certificate SHA-1 Thumbprintz$X.509 Certificate SHA-256 ThumbprintTypezContent TypeCriticalzJWS Signing Input Formula)algjkur6   kidx5ux5cx5tx5t#S256typctycritb64JWS_HEADER_REGISTRYzEncryption AlgorithmzCompression Algorithm)enczipzKey Type)r=   zPublic Key Usesigr^   zKey Operations)signverifyencryptdecryptwrapKey	unwrapKey	deriveKey
deriveBits)	ktyrM   key_opsrR   rT   rU   rV   rW   rX   z compute digital signature or MACzverify digital signature or MACFzencrypt contentz6decrypt content and validate decryption, if applicablezencrypt keyz2decrypt key and validate decryption, if applicablez
derive keyz#derive bits not to be used as a keyregistryheaderc                     t        | j                               }t        |j                               |z
  }|rt        d| d      y )NUnsupported 
 in header)setkeysr	   )rk   rl   allowed_keysunsupported_keyss       r   check_supported_headerrt      sF    x}}'L6;;=)L8$|4D3EZ%PQQ r   check_requiredc                     | j                         D ]<  \  }}|r|j                  r||vrt        |      ||v s(	 |j                  ||          > y # t        $ r}t        d| d|       d }~ww xY w)N'z' in header )itemsr=   r   r<   r   r
   )rk   rl   ru   keyregerrors         r   check_registry_headerr|      s{    NN$Sclls&/@$S))&=LVC[) %  L-#l5'.JKKLs   A	A0A++A0c                     g }g }d|v r6|d   D ].  }||vr|j                  |       || vs|j                  |       0 |rt        dj                  |            |rt        d| d      y )Nr[   ,rn   ro   )appendr   joinr	   )rk   rl   missing_crit_headersunsupported_crit_headersks        r   check_crit_headerr      s    !A$++A.("(//2	   $SXX.B%CDD	!$|4L3MZ%XYY 
"r   unprotectedc                 (    | rd| v rt        d      y y )Nr[   z&'crit' header MUST be protected header)r	   )r   s    r   reject_unprotected_crit_headerr      s    v,$%MNN -{r   )T)(typingr   r   r   errorsr   r   r	   r
   r(   r   Headerr   r   r   r   r   r   r$   r&   r)   r1   r4   rF   r8   __annotations__r:   HeaderRegistryDictrH   rL   KeyParameterRegistryDictKeyOperationRegistryDictr]   JWE_HEADER_REGISTRYJWK_PARAMETER_REGISTRYJWK_OPERATION_REGISTRYrt   r|   r   r   r.   r   r   <module>r      s   ' '  
c3h*# *$ *
*# *$ *+# +$ +
,4 ,D ,
0S	 0d 0*$sCx. *T *
	S	 	hc49n0E/F/L&M 	)3 )4 ) SE4K * 4X& 	! 	! #./ ! !   \ 12 \ 12  ;5=&1>628V,;/4kB?H FO66*>62J46@+ ' $ 164@2F;   
FT:(*eU^*DE		
 V,&)V,1;?<fECVL/ : ;UDI<eUK-ue<TV[]abM5%8RTY[_`lE59DeTR	 R%7 R RD RL$6 L LX\ Lhl LZ 2 ZF Zt Z"O O$ Or   