
     h
                         d dl mZmZmZ 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Zd dlmZmZ  G d de          Z G d d	e          ZdS )
    )absolute_importdivisionprint_functionN)OrderedDict)sha256)errorutilc                   .    e Zd ZdZeedfd            ZdS )Webhooki,  Nc                    t          | d          r|                     d          } t                              | |||           t	          j        | t                    }t          j        	                    ||pt          j
                  }|S )Ndecodeutf-8)object_pairs_hook)hasattrr   WebhookSignatureverify_headerjsonloadsr   stripeEventconstruct_fromapi_key)payload
sig_headersecret	tolerancer   dataevents          J/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/stripe/webhook.pyconstruct_eventzWebhook.construct_event   sx     7H%% 	.nnW--G&&w
FINNNz'[AAA++D'2KV^LL    )__name__
__module____qualname__DEFAULT_TOLERANCEstaticmethodr     r!   r   r   r      s=        /@$   \  r!   r   c                   V    e Zd ZdZed             Zed             Zedd            ZdS )r   v1c                     t          j        |                    d          |                     d          t                    }|                                S )Nr   )msg	digestmod)hmacnewencoder   	hexdigest)r   r   macs      r   _compute_signaturez#WebhookSignature._compute_signature"   sI    hMM'""w''
 
 

 }}r!   c                     d |                      d          D             }t          d |D             d                   }fd|D             }||fS )Nc                 :    g | ]}|                     d d          S )=   )split.0is     r   
<listcomp>zBWebhookSignature._get_timestamp_and_signatures.<locals>.<listcomp>-   s$    AAA!aggc1ooAAAr!   ,c                 6    g | ]}|d          dk    |d         S )r   t   r'   r8   s     r   r;   zBWebhookSignature._get_timestamp_and_signatures.<locals>.<listcomp>.   s%    AAA!QqTS[[1[[[r!   r   c                 8    g | ]}|d          k    |d         S )r   r?   r'   )r9   r:   schemes     r   r;   zBWebhookSignature._get_timestamp_and_signatures.<locals>.<listcomp>/   s&    AAAq!A$&..ad...r!   )r7   int)headerrA   
list_items	timestamp
signaturess    `   r   _get_timestamp_and_signaturesz.WebhookSignature._get_timestamp_and_signatures+   sg    AAv||C/@/@AAA
AAzAAA!DEE	AAAAJAAA
*$$r!   Nc                    	 |                      || j                  \  }}n$# t          $ r t          j        d||          w xY w|st          j        d| j        z  ||          d||fz  }|                     ||          t          fd|D                       st          j        d||          |r3|t          j                    |z
  k     rt          j        d|z  ||          dS )Nz6Unable to extract timestamp and signatures from headerz+No signatures found with expected scheme %sz%d.%sc              3   B   K   | ]}t          j        |          V  d S N)r	   secure_compare)r9   sexpected_sigs     r   	<genexpr>z1WebhookSignature.verify_header.<locals>.<genexpr>I   s0      LLA4&|Q77LLLLLLr!   z?No signatures found matching the expected signature for payloadz)Timestamp outside the tolerance zone (%d)T)rG   EXPECTED_SCHEME	Exceptionr   SignatureVerificationErrorr2   anytime)	clsr   rC   r   r   rE   rF   signed_payloadrM   s	           @r   r   zWebhookSignature.verify_header2   sP   		$'$E$E+% %!Izz  	 	 	2H  	  	2*+	   !Iw#77--nfEELLLLLLLLL 	2	    	TY[[9%<<<2;iG   ts	   " !ArJ   )	r"   r#   r$   rO   r&   r2   rG   classmethodr   r'   r!   r   r   r      sm        O  \ % % \% % % % [% % %r!   r   )
__future__r   r   r   r-   r   rS   collectionsr   hashlibr   r   r   r	   objectr   r   r'   r!   r   <module>r[      s    @ @ @ @ @ @ @ @ @ @    # # # # # #                   f   $9 9 9 9 9v 9 9 9 9 9r!   