
    U}bg                     V    d dl Zd dlZddgZ G d de          Z G d de          ZdS )    NJwtJwtDecodeErrorc                       e Zd ZdS )r   N)__name__
__module____qualname__     f/home/e360mart.nyusoft.in/public_html/e360mart_env/lib/python3.11/site-packages/twilio/jwt/__init__.pyr   r      s        Dr
   c                       e Zd ZdZ e            ZdZddeddfdZd Zd Z	e
dd            Zed	             Zed
             ZddZe
dd            Zd ZdS )r   z(Base class for building a Json Web TokenHS256Ni  c                     || _         	 || _        	 || _        	 |p| j        | _        	 || _        	 || _        	 || _        	 d | _        d | _	        d S N)

secret_keyissuersubject	ALGORITHM	algorithmnbfttlvalid_until_Jwt__decoded_payload_Jwt__decoded_headers)selfr   r   r   r   r   r   r   s           r   __init__zJwt.__init__   sh     %:/Q"4dnRdO&c!%!%r
   c                      t          d          )z+:rtype: dict the payload of the JWT to sendz Subclass must provide a payload.)NotImplementedErrorr   s    r   _generate_payloadzJwt._generate_payload.   s    !"DEEEr
   c                     i S )zP:rtype dict: Additional headers to include in the JWT, defaults to an empty dictr	   r   s    r   _generate_headerszJwt._generate_headers2   s    	r
   c                    t          ||                    dd          |                    dd          |                    dd          |                    dd          |                    dd                    }||_        ||_        |S )z
        Class specific implementation of from_jwt which should take jwt components and return
        and instance of this Class with jwt information loaded.
        :return: Jwt object containing the headers, payload and key
        issNsubalgexpr   )r   r   r   r   r   r   )r   getr   r   )clsheaderspayloadkeyjwts        r   	_from_jwtzJwt._from_jwt6   s     ;;ud++KKt,,kk%..E400E4((
 
 
 !( '
r
   c                    | j         r| j         S |                                                                 }| j        |d<   t	          t          j                              | j        z   |d<   | j        >| j        | j        k    r$t	          t          j                              |d<   n
| j        |d<   | j	        r
| j	        |d<   | j
        r
| j
        |d<   |S )Nr#   r&   r   r$   )r   r   copyr   inttimer   r   GENERATEr   r   )r   r*   s     r   r*   zJwt.payloadI   s    ! 	*))((**//11TY[[))DH48x4=((!$TY[[!1!1!% 	.!-GEN< 	*!\GENr
   c                     | j         r| j         S |                                                                 }d|d<   | j        |d<   |S )NJWTtypr%   )r   r!   r/   r   )r   r)   s     r   r)   zJwt.headers]   sL    ! 	*))((**//11r
   c                 &   | j         st          d          | j                                        }| j                                        }|r&t          t          j                              |z   |d<   t          j        || j         | j	        |          S )z
        Encode this JWT object into a JWT string
        :param int ttl: override the ttl configured in the constructor
        :rtype: str The JWT string
        z+JWT does not have a signing key configured.r&   )r   r)   )
r   
ValueErrorr)   r/   r*   r0   r1   jwt_libencoder   )r   r   r)   r*   s       r   to_jwtz
Jwt.to_jwtg   s      	LJKKK,##%%,##%% 	4 --3GEN~T_
 
 
 	
r
    c           
         |rdnd}	 t          j        |          }|                    d          }|| j        k    rt	          d| d| j         d          t          j        ||| j        g|ddd          }n=# t          $ r0}t          t          |d	t          |                              d
}~ww xY w| 
                    |||          S )av  
        Decode a JWT string into a Jwt object
        :param str jwt: JWT string
        :param Optional[str] key: key used to verify JWT signature, if not provided then validation
                                  is skipped.
        :raises JwtDecodeError if decoding JWT fails for any reason.
        :return: A DecodedJwt object containing the jwt information.
        TFr%   zIncorrect decoding algorithm z, expecting .)verify_signature
verify_exp
verify_nbf)
algorithmsoptionsmessageN)r8   get_unverified_headerr'   r   r7   decode	Exceptionr   getattrstrr-   )r(   r,   r+   verifyr)   r%   r*   es           r   from_jwtzJwt.from_jwt{   s    '%	@3C88G++e$$Ccm## 2C 2 2!$2 2 2  
 nM?(."&"& 		 	 	GG  	@ 	@ 	@ Is1vv!>!>???	@ }}Wgs333s   A1A: :
B4+B//B4c                 P    d                     |                                           S )Nz<JWT {}>)formatr:   r   s    r   __str__zJwt.__str__   s      ///r
   r   )r;   )r   r   r   __doc__objectr2   r   r   r   r!   classmethodr-   propertyr*   r)   r:   rK   rN   r	   r
   r   r   r      s
       22vxxHI & & & &8F F F      [$   X&   X
 
 
 
( "4 "4 "4 ["4H0 0 0 0 0r
   )r,   r8   r1   __all__rF   r   rP   r   r	   r
   r   <module>rT      s         "
#	 	 	 	 	Y 	 	 	U0 U0 U0 U0 U0& U0 U0 U0 U0 U0r
   