
    \Ah0                     t    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JrJr  S r " S S\5      rg)	    N)Key)
ALGORITHMS)JWKError)base64url_decodebase64url_encodeis_pem_format
is_ssh_keyc                 @    [        [        R                  " U 5      5      $ N)bytesosurandom)	num_bytess    [C:\Users\julio\Documents\inmobiliaria_backend\env\Lib\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        [        U[        5      (       a  U R                  U5      U l
        g [        U[        5      (       d   [        U[        5      (       d  [        S5      e[        U[        5      (       a  UR                  S5      n[        U5      (       d  [        U5      (       a  [        S5      eXl
        g )Nz*hash_alg: %s is not a valid hash algorithmz+Expecting a string- or bytes-formatted key.utf-8zdThe 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   encoder   r	   )selfkey	algorithms      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C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_dictr+   s      r   r   HMACKey._process_jwk/   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.sign:   s&    xx))3?FFHHr   c                 L    [         R                  " X R                  U5      5      $ r   )r/   compare_digestr3   )r#   r2   sigs      r   verifyHMACKey.verify=   s    ""3		#77r   c                 f    U R                   S[        U R                  5      R                  S5      S.$ )Nr*   ASCII)algr)   r+   )r   r   r    decode)r#   s    r   to_dictHMACKey.to_dict@   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   r3   r8   r>   __static_attributes__ r   r   r   r      sW    
 
0@0@'..R\RbRbdkdrdrsF 0	I8
r   r   )rF   r/   r   jose.backends.baser   jose.constantsr   jose.exceptionsr   
jose.utilsr   r   r   r	   r   r   rM   r   r   <module>rR      s.      	 " % $ T T(6
c 6
r   