ó
    ûÞ j   ã                  ór   • S SK Jr  S SKr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
Jr            SS jrg)	é    )ÚannotationsNé   )ÚHeadersLike)Úget_required_header)ÚInvalidWebhookSignatureErrorc               ó¤  ^• [        US5      n[        US5      n[        US5      n [        U5      n[        [        R                  " 5       5      nX‡-
  U:”  a  [        S5      SeXxU-   :”  a  [        S5      Se/ n	UR                  5        H@  n
U
R                  S5      (       a  U	R                  U
S	S 5        M/  U	R                  U
5        MB     UR                  S
5      (       a  [        R                  " USS 5      nOUR                  5       n[        U [        5      (       a  U R                  S5      OU nU SU SU 3n[        R                  " [        R                   " X½R                  5       ["        R$                  5      R'                  5       5      R                  5       m[)        U4S jU	 5       5      $ ! [         a    [        S5      Sef = f)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  óP   >#   • U H  n[         R                  " TU5      v •  M     g 7f)N)ÚhmacÚcompare_digest)Ú.0ÚsigÚexpected_signatures     €ÚN/var/www/html/gaurav/venv/lib/python3.13/site-packages/openai/lib/_webhooks.pyÚ	<genexpr>Ú,webhook_signature_matches.<locals>.<genexpr>@   s"   øé € ÐRÁzÀŒt×"Ò"Ð#5°s×;Ð;Âzù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_matchesr6      s¨  ø€ ô +¨7Ð4GÓHÐÜ# GÐ-@ÓA€IÜ$ W¨lÓ;€JðYÜ 	›NÐô Œd�iŠi‹kÓ
€Cà
Ñ Ó*Ü*Ð+IÓJÐPTÐTà ™?Ó*Ü*Ð+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   §F8 Æ8G)
r(   zstr | bytesr)   r   r*   Ústrr+   r   ÚreturnÚbool)Ú
__future__r   r   r   r   r$   Ú_typesr   Ú_utilsr   Ú_exceptionsr   r6   © ó    r   Ú<module>r@      sV   ðÝ "ã Û Û Û å  Ý (Ý 6ð3SØð3Sàð3Sð ð	3Sð
 ð3Sð 
õ3Sr?   