
    g                     H    S SK rS SKrSS/r " S S\5      r " S S\5      rg)    NJwtJwtDecodeErrorc                       \ rS rSrSrg)r       N)__name__
__module____qualname____firstlineno____static_attributes__r       [/Users/Alptekin/Desktop/izin_takip/venv/lib/python3.13/site-packages/twilio/jwt/__init__.pyr   r      s    r   c                       \ rS rSrSr\" 5       rSrSS\SS4S jrS r	S r
\SS	 j5       r\S
 5       r\S 5       rSS jr\SS j5       rS rSrg)r      z(Base class for building a Json Web TokenHS256Ni  c                     Xl          X l         X0l         U=(       d    U R                  U l         XPl         X`l         Xpl         S U l        S U l	        g 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__Jwt.__init__   sX     %:/Q"4dnnRdO&c!%!%r   c                     [        S5      e)z+:rtype: dict the payload of the JWT to sendz Subclass must provide a payload.)NotImplementedErrorr   s    r   _generate_payloadJwt._generate_payload.   s    !"DEEr   c                     0 $ )zP:rtype dict: Additional headers to include in the JWT, defaults to an empty dictr   r#   s    r   _generate_headersJwt._generate_headers2   s    	r   c                     [        UUR                  SS5      UR                  SS5      UR                  SS5      UR                  SS5      UR                  SS5      S9nX$l        Xl        U$ )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_jwtJwt._from_jwt6   sj     ;;ud+KKt,kk%.E40E4(
 !( '
r   c                 &   U R                   (       a  U R                   $ U R                  5       R                  5       nU R                  US'   [	        [
        R
                  " 5       5      U R                  -   US'   U R                  bK  U R                  U R                  :X  a"  [	        [
        R
                  " 5       5      US'   OU R                  US'   U R                  (       a  U R                  US'   U R                  (       a  U R                  US'   U$ )Nr*   r-   r   r+   )r   r$   copyr   inttimer   r   GENERATEr   r   )r   r1   s     r   r1   Jwt.payloadI   s    !!)))((*//1TYY[)DHH488xx4==(!$TYY[!1!%!--GEN<<!\\GENr   c                     U R                   (       a  U R                   $ U R                  5       R                  5       nSUS'   U R                  US'   U$ )NJWTtypr,   )r   r'   r7   r   )r   r0   s     r   r0   Jwt.headers]   sI    !!)))((*//1r   c                 L   U R                   (       d  [        S5      eU R                  R                  5       nU R                  R                  5       nU(       a$  [        [        R                  " 5       5      U-   US'   [        R                  " X0R                   U R                  US9$ )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   r0   )
r   
ValueErrorr0   r7   r1   r8   r9   jwt_libencoder   )r   r   r0   r1   s       r   to_jwt
Jwt.to_jwtg   sw     JKK,,##%,,##% -3GEN~~__
 	
r   c           
         U(       a  SOSn [         R                  " U5      nUR                  S5      nXPR                  :w  a  [	        SU SU R                   S35      e[         R
                  " UUU R                  /USSS.S9nU R                  XFU5      $ ! [         a$  n[        [        US	[        U5      5      5      eS
nAff = f)a>  
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)rB   get_unverified_headerr.   r   rA   decode	Exceptionr   getattrstrr4   )r/   r3   r2   verifyr0   r,   r1   es           r   from_jwtJwt.from_jwt{   s     %	@33C8G++e$Cmm# 3C5 9!!$q2 
 nnMM?(."&"&		G }}Ws33  	@ Is1v!>??	@s   A8B 
C!C  Cc                 @    SR                  U R                  5       5      $ )Nz<JWT {}>)formatrD   r#   s    r   __str__Jwt.__str__   s      //r   )	__decoded_headers__decoded_payloadr   r   r   r   r   r   r   r   ) )r   r	   r
   r   __doc__objectr:   r   r   r$   r'   classmethodr4   propertyr1   r0   rD   rU   rY   r   r   r   r   r   r      s    2xHI &8F  $  &  
( "4 "4H0r   )r3   rB   r9   __all__rP   r   r_   r   r   r   r   <module>rc      s2      "
#	Y 	U0& U0r   