
     j                     l    S SK r S SKrS SKrS SKJr  S SKJr  S SKJr  S SK	J
r
Jr  S r " S S\5      rg)	    N)Key)
ALGORITHMS)JWKError)base64url_decodebase64url_encodec                 @    [        [        R                  " U 5      5      $ N)bytesosurandom)	num_bytess    ^/home/ubuntu/second-brain/public-api/venv/lib/python3.13/site-packages/jose/backends/native.pyget_random_bytesr      s    I&''    c                       \ rS rSrSr\R                  \R                  \R                  \R                  \R                  \R                  0rS rS rS rS rS rSrg	)
HMACKey   zZ
Performs signing and verification operations using HMAC
and the specified hash function.
c                   ^ U[         R                  ;  a  [        SU-  5      eX l        U R                  R                  U5      U l        [        T[        5      (       a  U R                  T5      U l
        g [        T[        5      (       d   [        T[        5      (       d  [        S5      e[        T[        5      (       a  TR                  S5      m/ SQn[        U4S jU 5       5      (       a  [        S5      eTU l
        g )Nz*hash_alg: %s is not a valid hash algorithmz+Expecting a string- or bytes-formatted key.utf-8)s   -----BEGIN PUBLIC KEY-----s   -----BEGIN RSA PUBLIC KEY-----s   -----BEGIN CERTIFICATE-----s   ssh-rsac              3   ,   >#    U  H	  oT;   v   M     g 7fr	    ).0string_valuekeys     r   	<genexpr>#HMACKey.__init__.<locals>.<genexpr>.   s     G|s"s   zdThe specified key is an asymmetric key or x509 certificate and should not be used as an HMAC secret.)r   HMACr   
_algorithmHASHESget	_hash_alg
isinstancedict_process_jwkprepared_keystrr
   encodeany)selfr   	algorithminvalid_stringss    `  r   __init__HMACKey.__init__   s    JOO+G)STT#3c4   $ 1 1# 6D#s##JsE,B,BHIIc3**W%C
 GGGG9 
  r   c                     UR                  S5      S:X  d  [        SUR                  S5      -  5      eUR                  S5      nUR                  S5      n[        U5      n[	        U5      nU$ )Nktyoctz1Incorrect key type. Expected: 'oct', Received: %skr   )r    r   r'   r
   r   )r)   jwk_dictr1   s      r   r$   HMACKey._process_jwk6   se    ||E"e+NQYQ]Q]^cQddeeLLHHW!HQr   c                 t    [         R                  " U R                  XR                  5      R	                  5       $ r	   )hmacnewr%   r!   digest)r)   msgs     r   signHMACKey.signA   s&    xx))3?FFHHr   c                 L    [         R                  " X R                  U5      5      $ r	   )r5   compare_digestr9   )r)   r8   sigs      r   verifyHMACKey.verifyD   s    ""3		#77r   c                 f    U R                   S[        U R                  5      R                  S5      S.$ )Nr0   ASCII)algr/   r1   )r   r   r%   decode)r)   s    r   to_dictHMACKey.to_dictG   s/    ??!$"3"34;;GD
 	
r   )r   r!   r%   N)__name__
__module____qualname____firstlineno____doc__r   HS256hashlibsha256HS384sha384HS512sha512r   r,   r$   r9   r>   rD   __static_attributes__r   r   r   r   r      sW    
 
0@0@'..R\RbRbdkdrdrsF >	I8
r   r   )rL   r5   r   jose.backends.baser   jose.constantsr   jose.exceptionsr   
jose.utilsr   r   r   r   r   r   r   <module>rW      s+      	 " % $ 9(=
c =
r   