
    Ch                         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rS SKJ	r	  S SKJ
r
  S SKJr  S SKJr   " S S	\5      r " S
 S\5      rg)    N)OrderedDict)sha256)Event)_util)SignatureVerificationError)_APIRequestorc                   0    \ rS rSrSr\\S4S j5       rSrg)Webhook   i,  Nc                 &   [        U S5      (       a  U R                  S5      n [        R                  XX#5        [        R
                  " U [        S9n[        R                  " U[        R                  " U=(       d    [        R                  S9SS9nU$ )Ndecodeutf-8)object_pairs_hook)api_keyV1)values	requestorapi_mode)hasattrr   WebhookSignatureverify_headerjsonloadsr   r   _construct_fromr   _global_with_optionsstriper   )payload
sig_headersecret	tolerancer   dataevents          R/home/kali/devsecops-assessor/venv/lib/python3.13/site-packages/stripe/_webhook.pyconstruct_eventWebhook.construct_event   sx     7H%%nnW-G&&wFNzz'[A%%#8816>> 
      )__name__
__module____qualname____firstlineno__DEFAULT_TOLERANCEstaticmethodr$   __static_attributes__r'   r&   r#   r
   r
      s    /@$ r&   r
   c                   L    \ rS rSrSr\S 5       r\S 5       r\SS j5       r	Sr
g)	r   '   v1c                     [         R                  " UR                  S5      U R                  S5      [        S9nUR	                  5       $ )Nr   )msg	digestmod)hmacnewencoder   	hexdigest)r   r   macs      r#   _compute_signature#WebhookSignature._compute_signature*   s9    hhMM'"w'

 }}r&   c                    U R                  S5       Vs/ s H  o"R                  SS5      PM     nn[        U Vs/ s H  o"S   S:X  d  M  US   PM     snS   5      nU Vs/ s H  o"S   U:X  d  M  US   PM     nnXE4$ s  snf s  snf s  snf )N,=   r   t   )splitint)headerschemei
list_items	timestamp
signaturess         r#   _get_timestamp_and_signatures.WebhookSignature._get_timestamp_and_signatures3   s    /5||C/@A/@!ggc1o/@
AzAz!qTS[1zA!DE	$.AJqA$&.dadJ
A$$ BAAs   A?B
	B!B	1	B	Nc                   ^  U R                  X R                  5      u  pVU(       d  [        SU R                  -  UU5      eSXQ4-  nU R	                  Xs5      m[        U4S jU 5       5      (       d  [        SUU5      eU(       a,  U[        R                  " 5       U-
  :  a  [        SU-  UU5      eg! [         a    [        SUU5      ef = f)Nz6Unable to extract timestamp and signatures from headerz+No signatures found with expected scheme %sz%d.%sc              3   R   >#    U  H  n[         R                  " TU5      v   M     g 7fN)r   secure_compare).0sexpected_sigs     r#   	<genexpr>1WebhookSignature.verify_header.<locals>.<genexpr>Q   s!     M*Q5''a88*s   $'z?No signatures found matching the expected signature for payloadz)Timestamp outside the tolerance zone (%d)T)rJ   EXPECTED_SCHEME	Exceptionr   r:   anytime)	clsr   rD   r   r    rH   rI   signed_payloadrR   s	           @r#   r   WebhookSignature.verify_header:   s    		$'$E$E++%!I ,**+	  !I#77--nEM*MMM,	  TYY[9%<<,;iG  A  	,H 	s   B3 3Cr'   rN   )r(   r)   r*   r+   rU   r-   r:   rJ   classmethodr   r.   r'   r&   r#   r   r   '   sA    O  % % % %r&   r   )r5   r   rX   collectionsr   hashlibr   r   stripe._eventr   r   stripe._errorr   stripe._api_requestorr   objectr
   r   r'   r&   r#   <module>rc      s=       #     4 /f 09v 9r&   