
    d?i)6                     f   S SK r S SKJrJr  S SKJr  S SKJr  S SKJ	r	J
r
JrJrJr  S SKJr  S SKJs  Js  Jr  S SKJr  S SKJr  S S	KJr  S S
KJrJrJrJrJ r J!r!J"r"J#r#  S SK$J%r%  SSK&J'r'J(r(  SSK)J*r*J+r+J,r,J-r-  \" SSS9r.\" S5      r/ " S S\5      r0 " S S\05      r1 " S S\05      r2S\3\4\5\0   4   4S jr6S\\4\	4   S\04S jr7\\4\
\8\9/\94   4   r:\\4\
\8\\4   \9/\94   4   r;\" S\:\;5      r<\" S\
S\	4   S9r=S\=S\=4S  jr>\>SSSS!.S"\8S#\;S$\\4   S%\\9   S&\\\4\94      S\04S' jj5       r?\>SSS(.S"\8S)\:S%\\9   S&\\\4\94      S\04
S* jj5       r@SSSS+.S"\8S#\;S)\:S,\\4   S%\\9   S&\\\4\94      S\04S- jjrA  S2S.\8S,\\4   S&\\\4\94      S\04S/ jjrB  S2S0\8S,\\4   S&\\\4\94      S\04S1 jjrCg)3    N)ABCabstractmethod)Mapping)wraps)AnyCallableOptionalTypeVarUnion)warn)InvalidSignature)default_backend)padding)RSAPrivateKeyRSAPrivateNumbersRSAPublicKeyRSAPublicNumbersrsa_crt_dmp1rsa_crt_dmq1rsa_crt_iqmprsa_recover_prime_factors)HashAlgorithm   )MalformedJWKErrorUnsupportedKeyTypeError)	b64decode	b64encodeuint_b64decodeuint_b64encode_AJWKAbstractJWKBase)bound_Tc                       \ rS rSr\S\4S j5       r\S\4S j5       r\S\4S j5       r	\S\
S\
4S j5       r\S\
S\
S\4S	 j5       r\SS
\S\\\4   4S jj5       r\\S\\   S\\\4   S\4S j5       5       rSrg)r!   >   returnc                     g N selfs    K/var/www/html/livechat/backend/venv/lib/python3.13/site-packages/jwt/jwk.pyget_ktyAbstractJWKBase.get_kty@           c                     g r(   r)   r*   s    r,   get_kidAbstractJWKBase.get_kidD   r/   r0   c                     g r(   r)   r*   s    r,   is_sign_keyAbstractJWKBase.is_sign_keyH   r/   r0   messagec                     g r(   r)   )r+   r7   optionss      r,   signAbstractJWKBase.signL   r/   r0   	signaturec                     g r(   r)   )r+   r7   r<   r9   s       r,   verifyAbstractJWKBase.verifyP   r/   r0   public_onlyc                     g r(   r)   )r+   r@   s     r,   to_dictAbstractJWKBase.to_dictT   r/   r0   clsdctc                     g r(   r)   )rD   rE   s     r,   	from_dictAbstractJWKBase.from_dictX   s     	r0   r)   NT)__name__
__module____qualname____firstlineno__r   strr-   r2   boolr5   bytesr:   r>   dictrB   classmethodtyper    objectrG   __static_attributes__r)   r0   r,   r!   r!   >   s         T   E    e  T   4 4S>   tE{ c6k): u   r0   c                      ^  \ rS rSrSS\SS4U 4S jjjrS rS rS\4S jr	S\
\\/\4   4S	 jrS
\S\4S jrS
\S\S\4S jrSS jr\S 5       rSrU =r$ )OctetJWK^   Nkeyr&   c                    > [         [        U ]  5         Xl        X l        1 SknUR                  5        VVs0 s H  u  pVXT;   d  M  XV_M     snnU l        g s  snnf )N>   algusex5cx5tx5ukey_opsx5t#s256)superr!   __init__rY   kiditemsr9   )r+   rY   rd   r9   optnameskv	__class__s          r,   rc   OctetJWK.__init__`   sH    ot-/M)0JAMJJs   AAc                     g)Noctr)   r*   s    r,   r-   OctetJWK.get_ktyh       r0   c                     U R                   $ r(   )rd   r*   s    r,   r2   OctetJWK.get_kidk   s    xxr0   c                     g)NTr)   r*   s    r,   r5   OctetJWK.is_sign_keyn   s    r0   c                     US   $ )Nsignerr)   r+   r9   s     r,   _get_signerOctetJWK._get_signerq   s    x  r0   r7   c                 H    U R                  U5      nU" XR                  5      $ r(   )rv   rY   )r+   r7   r9   rt   s       r,   r:   OctetJWK.signt   s!    !!'*gxx((r0   r<   c                 p    U R                  U5      n[        R                  " X$" XR                  5      5      $ r(   )rv   hmaccompare_digestrY   )r+   r7   r<   r9   rt   s        r,   r>   OctetJWK.verifyx   s.    !!'*""9fWhh.GHHr0   c                     S[        U R                  5      S.nUR                  U R                  5        U R                  (       a  U R                  US'   U$ )Nrl   )ktyrg   rd   )r   rY   updater9   rd   )r+   r@   rE   s      r,   rB   OctetJWK.to_dict|   sC    488$
 	

4<< 88CJ
r0   c                 j     U " [        US   5      40 UD6$ ! [         a  n[        S5      UeS nAff = f)Nrg   zk is required)r   KeyErrorr   )rD   rE   whys      r,   rG   OctetJWK.from_dict   s=    	>yS*2c22 	>#O4#=	>s    
2-2)rY   rd   r9   r(   rI   )rJ   rK   rL   rM   rP   rc   r-   r2   rO   r5   r   rv   r:   r>   rB   rR   rG   rU   __classcell__ri   s   @r,   rW   rW   ^   s    KE K4 K KT !hu~u/D&E !)E ) )Ie I IT I > >r0   rW   c                      ^  \ rS rSrSrS\\\4   SS4U 4S jjrS\	4S jr
S\/ \4   4S jrS\R                  4S	 jrS
\S\4S jrS
\S\S\	4S jrS rS rSS jr\S 5       rSrU =r$ )RSAJWK   z8
https://tools.ietf.org/html/rfc7518.html#section-6.3.1
keyobjr&   Nc                    > [         [        U ]  5         Xl        1 SknUR	                  5        VVs0 s H  u  pEXC;   d  M  XE_M     snnU l        g s  snnf )N>   r[   rd   r\   r]   r^   r_   r`   ra   )rb   r!   rc   r   re   r9   )r+   r   r9   rf   rg   rh   ri   s         r,   rc   RSAJWK.__init__   sI     	ot-/	
 *1JAMJJs   A Ac                 6    [        U R                  [        5      $ r(   )
isinstancer   r   r*   s    r,   r5   RSAJWK.is_sign_key   s    $++}55r0   c                     US   $ )Nhash_funr)   ru   s     r,   _get_hash_funRSAJWK._get_hash_fun   s    z""r0   c                 n     US   $ ! [          a#    [        S5        [        R                  " 5       s $ f = f)Nr   zTyou should not use RSAJWK.verify/sign without jwa intermiediary, used legacy padding)r   r   r   PKCS1v15ru   s     r,   _get_paddingRSAJWK._get_padding   s?    	&9%% 	&5 ##%%	&s    *44r7   c                     [        U R                  [        5      (       a  [        S5      eU R	                  U5      nU R                  U5      nU R                  R                  XU" 5       5      $ )NzRequires a private key.)r   r   r   
ValueErrorr   r   r:   )r+   r7   r9   r   _paddings        r,   r:   RSAJWK.sign   sX    dkk<00677%%g.$$W-{{8:>>r0   r<   c                 $   U R                  U5      nU R                  U5      n[        U R                  [        5      (       a  U R                  R                  5       nOU R                  n UR                  X!XT" 5       5        g! [         a     gf = f)NTF)r   r   r   r   r   
public_keyr>   r   )r+   r7   r<   r9   r   r   pubkeys          r,   r>   RSAJWK.verify   sz    %%g.$$W-dkk=11[[++-F[[F	MM)h
C 		s   *B 
BBc                     g)NRSAr)   r*   s    r,   r-   RSAJWK.get_kty   rn   r0   c                 8    U R                   R                  S5      $ )Nrd   )r9   getr*   s    r,   r2   RSAJWK.get_kid   s    ||&&r0   c                 b   SS0nUR                  U R                  5        [        U R                  [        5      (       Ga  U R                  R                  5       nUR                  nUR                  [        UR                  5      [        UR                  5      S.5        U(       d  UR                  [        UR                  5      [        UR                  5      [        UR                  5      [        UR                  5      [        UR                  5      [        UR                  5      [        UR                  5      [        UR                  5      S.5        U$ U R                  R                  5       nUR                  [        UR                  5      [        UR                  5      S.5        U$ )Nr   r   )en)r   r   dpqdpdqqi)r   r9   r   r   r   private_numberspublic_numbersr   r   r   r   r   r   dmp1dmq1iqmp)r+   r@   rE   priv_numberspub_numberss        r,   rB   RSAJWK.to_dict   s<   5
 	

4<< dkk=11;;668L&55KJJ'6'6 

+KMM:+KMM:+LNN;+LNN;+LNN;,\->->?,\->->?,\->->?	 Jkk002

#KMM2#KMM2	
 
r0   c                    SU;   a  [        S5      e [        US   5      n[        US   5      n[	        X#5      nSU;  a  U " UR                  [        5       S940 UD6$ [        US   5      n1 Skn[        UR                  5       5      U-  n[        U5      S	:X  a9  [        X2U5      u  p[        UU	U
[        Xi5      [        Xj5      [        X5      US
9nO\X:X  aL  [        U[        US   5      [        US   5      [        US   5      [        US   5      [        US   5      US
9nO[        S5      eU " UR                  [        5       S940 UD6$ ! [         a  n[        S5      UeS nAff = f)Nothz0RSA keys with multiples primes are not supportedr   r   ze and n are requiredr   )backend>   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   z=p, q, dp, dq, qi MUST be present orall of them MUST be absent)r   r   r   r   r   r   r   setkeyslenr   r   r   r   r   private_key)rD   rE   r   r   r   r   r   
privparamsproductr   r   r   s               r,   rG   RSAJWK.from_dict   s   C<)B 	Es3x(As3x(A 'q,c>&&/@&AEH  3s8$1
chhj/J.w<1,Q15DA,!!'!!'!!'*L ", S* S*#CI.#CI.#CI.*L $-  <++O4E+FN#NNS  	E#$:;D	Es   E 
E)E$$E))r   r9   rI   )rJ   rK   rL   rM   __doc__r   r   r   rc   rO   r5   r   r   r   r   AsymmetricPaddingr   rP   r:   r>   r-   r2   rB   rR   rG   rU   r   r   s   @r,   r   r      s    KM<78K	K$6T 6#]1B(C #&w'@'@ &?E ? ?e  T '$L 2O 2Or0   r   r&   c                      [         [        S.$ )N)rl   r   )rW   r   r)   r0   r,   supported_key_typesr   +  s     r0   rE   c                     [        U [        5      (       d  [        S5      eSU ;  a  [        S5      e[	        5       nU S   nX!;  a  [        SU 35      eX   R                  U 5      $ )Nzdct must be a dictr   zkty MUST be presentzunsupported key type: )r   rQ   	TypeErrorr   r   r   rG   )rE   	supportedr   s      r,   jwk_from_dictr   2  sl    c4  ,--C 566#%I
e*C
%(>se&DEE>##C((r0   _Loader_C.funcc                    ^  ST R                   ;   d  ST R                   ;   d  [        S5      e[        T 5      U 4S j5       nU$ )NprivatepubliczDthe wrapped function must have either public or private in it's namec                    > [        U[        5      (       a  [        [        U5      nUR	                  S5      c  0 US'   T" X40 UD6$ )Nr9   )r   rN   getattrserialization_moduler   )contentloaderkwargsr   s      r,   wrapper3jwk_from_bytes_argument_conversion.<locals>.wrapperS  sH     fc""16:F::i ( "F9G.v..r0   )rJ   	Exceptionr   )r   r   s   ` r,   "jwk_from_bytes_argument_conversionr   L  sK    &(dmm*C'
 	

 4[/ / Nr0   passwordr   r9   r   private_loaderr   r   r9   c                    Uc  0 n U" XU5      n[        U[        5      (       a  [        U40 UD6$ [        S5      e! [         a  n[        S5      UeSnAff = f)7This function is meant to be called from jwk_from_bytesNunsupported key typezthis is probably a public key)r   r   r   r   r   )r   r   r   r   r9   privkeyexs          r,   jwk_from_private_bytesr   a  si     O G<g}--'-W--%&<== O%&EFBNOs   )< < 
AAAr   r9   public_loaderc                    Uc  0 n U" X5      n[        U[        5      (       a  [        U40 UD6$ [        S5      e! [         a  n[        S5      UeSnAff = f)r   Nr   zcould not deserialize)r   r   r   r   r   )r   r   r   r9   r   r   s         r,   jwk_from_public_bytesr   v  sm     Hw0fl++&,G,,%"
 	
  H%&=>CGHs   (; ; 
AAA)private_passwordr   r9   r   c                V     [        U UUUUS9$ ! [         a    [        U UUUS9s $ f = f)Nr   r   )r   r   r   )r   r   r   r   r   r9   s         r,   jwk_from_bytesr     sM    
%%
 	
 # 
$	
 	

s    ((pem_contentc           	          [        U SSUS US9$ )Nload_pem_private_keyload_pem_public_keyr   r   r   r   r9   r   )r   r   r9   s      r,   jwk_from_pemr     #    
 -+) r0   der_contentc           	          [        U SSUS US9$ )Nload_der_private_keyload_der_public_keyr   r   )r   r   r9   s      r,   jwk_from_derr     r   r0   )NN)Dr{   abcr   r   collections.abcr   	functoolsr   typingr   r   r	   r
   r   warningsr   ,cryptography.hazmat.primitives.serializationhazmat
primitivesserializationr   cryptography.exceptionsr   cryptography.hazmat.backendsr   )cryptography.hazmat.primitives.asymmetricr   -cryptography.hazmat.primitives.asymmetric.rsar   r   r   r   r   r   r   r   %cryptography.hazmat.primitives.hashesr   
exceptionsr   r   utilsr   r   r   r   r    r#   r!   rW   r   rQ   rN   rS   r   r   rP   rT   PublicKeyLoaderTPrivateKeyLoaderTr   r   r   r   r   r   r   r   r)   r0   r,   <module>r	     s    $    K K 4 8 =	 	 	 @  	01T]c @-> ->`ZO_ ZOzT#tO'<"<= 
)wsCx( 
)_ 
) hv'>??@ 5(3-0&8	99  )-/@
AT#s(+,R B * $
 # $.2OO%O sm	O
 fO gc6k*+O O $O( $
 !%.2HH#H f	H
 gc6k*+H H $H4 '+ $.2

%
 $

 sm
 f
 gc6k*+
 
8 '+.2sm gc6k*+ 	" '+.2sm gc6k*+ 	r0   