
    ]f                     t    d dl Z d dlZd dlZd dlmZ d dlmZ d dlmZ d dl	m
Z
mZ d Z G d de          ZdS )	    N)Key)
ALGORITHMS)JWKError)base64url_decodebase64url_encodec                 D    t          t          j        |                     S N)bytesosurandom)	num_bytess    F/var/www/html/env/lib/python3.11/site-packages/jose/backends/native.pyget_random_bytesr      s    I&&'''    c                   |    e Zd ZdZej        ej        ej        ej	        ej
        ej        iZd Zd Zd Zd Zd ZdS )HMACKeyzf
    Performs signing and verification operations using HMAC
    and the specified hash function.
    c                 &   |t           j        vrt          d|z            || _        | j                            |          | _        t          t                    r| 	                              | _
        d S t          t                    s$t          t                    st          d          t          t                    r                    d          g d}t          fd|D                       rt          d          | _
        d S )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       K   | ]}|v V  	d S r	    ).0string_valuekeys     r   	<genexpr>z#HMACKey.__init__.<locals>.<genexpr>.   s(      GG||s"GGGGGGr   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__zHMACKey.__init__   s#   JO++G)STTT#33c4   	 $ 1 1# 6 6DF#s## 	JJsE,B,B 	JHIIIc3 	&**W%%C
 
 
 GGGGGGGGG 	9  
  r   c                    |                     d          dk    s%t          d|                     d          z            |                     d          }|                    d          }t          |          }t	          |          }|S )Nktyoctz1Incorrect key type. Expected: 'oct', Received: %skr   )r   r   r%   r
   r   )r'   jwk_dictr.   s      r   r"   zHMACKey._process_jwk6   s|    ||E""e++NQYQ]Q]^cQdQddeeeLLHHW!HHQr   c                 f    t          j        | j        || j                                                  S r	   )hmacnewr#   r   digest)r'   msgs     r   signzHMACKey.signA   s'    x)3??FFHHHr   c                 R    t          j        ||                     |                    S r	   )r1   compare_digestr5   )r'   r4   sigs      r   verifyzHMACKey.verifyD   s    "3		#777r   c                 b    | j         dt          | j                                      d          dS )Nr-   ASCII)algr,   r.   )r   r   r#   decode)r'   s    r   to_dictzHMACKey.to_dictG   s5    ?!$"344;;GDD
 
 	
r   N)__name__
__module____qualname____doc__r   HS256hashlibsha256HS384sha384HS512sha512r   r*   r"   r5   r9   r>   r   r   r   r   r      s         
 
0@'.R\RbdkdrsF     >	 	 	I I I8 8 8
 
 
 
 
r   r   )rD   r1   r   jose.backends.baser   jose.constantsr   jose.exceptionsr   
jose.utilsr   r   r   r   r   r   r   <module>rN      s      				 " " " " " " % % % % % % $ $ $ $ $ $ 9 9 9 9 9 9 9 9( ( (=
 =
 =
 =
 =
c =
 =
 =
 =
 =
r   