Ë
    Fü´j   ã                  óp   — d dl mZ d dl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
mZ 	 	 	 	 	 	 	 	 	 	 dd„Zy)	é    )ÚannotationsNé   )ÚHeadersLike)Úget_required_header)ÚInvalidWebhookSignatureErrorc               óv  ‡— t        |d«      }t        |d«      }t        |d«      }	 t        |«      }t        t	        j                  «       «      }||z
  |kD  rt        d«      d‚|||z   kD  rt        d«      d‚g }	|j                  «       D ]9  }
|
j                  d«      r|	j                  |
d	d «       Œ)|	j                  |
«       Œ; |j                  d
«      rt        j                  |dd «      }n|j                  «       }t        | t        «      r| j                  d«      n| }|› d|› d|› �}t        j                  t        j                   ||j                  «       t"        j$                  «      j'                  «       «      j                  «       Št)        ˆfd„|	D «       «      S # t        $ r t        d«      d‚w xY w)z?Validate the replay window and compare the supplied signatures.zwebhook-signaturezwebhook-timestampz
webhook-idz Invalid webhook timestamp formatNzWebhook timestamp is too oldzWebhook timestamp is too newzv1,é   Úwhsec_é   zutf-8ú.c              3  óJ   •K  — | ]  }t        j                  ‰|«      –— Œ y ­w)N)ÚhmacÚcompare_digest)Ú.0ÚsigÚexpected_signatures     €úR/root/workspace/ytshorts/venv/lib/python3.12/site-packages/openai/lib/_webhooks.pyú	<genexpr>z,webhook_signature_matches.<locals>.<genexpr>@   s   øè ø€ ÒRÀŒt×"Ñ"Ð#5°s×;ÑRùs   ƒ #)r   ÚintÚ
ValueErrorr   ÚtimeÚsplitÚ
startswithÚappendÚbase64Ú	b64decodeÚencodeÚ
isinstanceÚbytesÚdecodeÚ	b64encoder   ÚnewÚhashlibÚsha256ÚdigestÚany)ÚpayloadÚheadersÚsecretÚ	toleranceÚsignature_headerÚ	timestampÚ
webhook_idÚtimestamp_secondsÚnowÚ
signaturesÚpartÚdecoded_secretÚbodyÚsigned_payloadr   s                 @r   Úwebhook_signature_matchesr5      s«  ø€ ô +¨7Ð4GÓHÐÜ# GÐ-@ÓA€IÜ$ W¨lÓ;€JðYÜ 	›NÐô Œd�i‰i‹kÓ
€Cà
ÐÑ Ò*Ü*Ð+IÓJÐPTÐTà˜3 ™?Ò*Ü*Ð+IÓJÐPTÐTð
 €JØ ×&Ñ&Ó(ò $ˆØ�?‰?˜5Ô!Ø×Ñ˜d 1 2˜hÕ'à×Ñ˜dÕ#ð	$ð ×Ñ˜Ô"Ü×)Ñ)¨&°°¨*Ó5‰àŸ™›ˆä&0°¼%Ô&@ˆ7�>‰>˜'Ô"Àg€Dð #�| 1 Y K¨q°°Ð7€NÜ×)Ñ)Ü�‰� ×!6Ñ!6Ó!8¼'¿.¹.ÓI×PÑPÓRóç�fƒhð ô
 ÓRÀzÔRÓRÐRøôI ò YÜ*Ð+MÓNÐTXÐXðYús   §F" Æ"F8)
r'   zstr | bytesr(   r   r)   Ústrr*   r   ÚreturnÚbool)Ú
__future__r   r   r   r   r#   Ú_typesr   Ú_utilsr   Ú_exceptionsr   r5   © ó    r   ú<module>r?      sV   ðÝ "ã Û Û Û å  Ý (Ý 6ð3SØð3Sàð3Sð ð	3Sð
 ð3Sð 
ô3Sr>   