§
    ªxhÂ  ã                   óP   — d dl mZ d dlmZ d dlmZ ddlmZ  G d„ d¦  «        ZdS )	é    )ÚEcdsa)Ú	PublicKey)Ú	Signatureé   )ÚEventWebhookHeaderc                   ó(   — e Zd ZdZdd„Zd„ Zdd„ZdS )ÚEventWebhookz¤
    This class allows you to use the Event Webhook feature. Read the docs for
    more details: https://sendgrid.com/docs/for-developers/tracking-events/event
    Nc                 óB   — |r|                       |¦  «        n|| _        dS )zž
        Construct the Event Webhook verifier object
        :param public_key: verification key under Mail Settings
        :type public_key: string
        N)Úconvert_public_key_to_ecdsaÚ
public_key©Úselfr   s     úY/var/www/html/what/lib/python3.11/site-packages/sendgrid/helpers/eventwebhook/__init__.pyÚ__init__zEventWebhook.__init__   s*   € ð KUÐd˜$×:Ò:¸:ÑFÔFÐFÐZdˆŒˆˆó    c                 ó6   — t          j        d|z   dz   ¦  «        S )zñ
        Convert the public key string to a ECPublicKey.

        :param public_key: verification key under Mail Settings
        :type public_key string
        :return: public key using the ECDSA algorithm
        :rtype PublicKey
        z
-----BEGIN PUBLIC KEY-----
z
-----END PUBLIC KEY-----
)r   ÚfromPemr   s     r   r   z(EventWebhook.convert_public_key_to_ecdsa   s!   € õ Ô Ð!AÀ*Ñ!LÐMkÑ!kÑlÔlÐlr   c                 ór   — ||z   }t          j        |¦  «        }|p| j        }t          j        |||¦  «        S )a"  
        Verify signed event webhook requests.

        :param payload: event payload in the request body
        :type payload: string
        :param signature: value obtained from the 'X-Twilio-Email-Event-Webhook-Signature' header
        :type signature: string
        :param timestamp: value obtained from the 'X-Twilio-Email-Event-Webhook-Timestamp' header
        :type timestamp: string
        :param public_key: elliptic curve public key
        :type public_key: PublicKey
        :return: true or false if signature is valid
        )r   Ú
fromBase64r   r   Úverify)r   ÚpayloadÚ	signatureÚ	timestampr   Útimestamped_payloadÚdecoded_signatureÚkeys           r   Úverify_signaturezEventWebhook.verify_signature    sB   € ð (¨'Ñ1ÐÝ%Ô0°Ñ;Ô;ÐàÐ+˜DœOˆÝŒ|Ð/Ð1BÀCÑHÔHÐHr   )N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   © r   r   r	   r	      sb   € € € € € ðð ð
eð eð eð eð	mð 	mð 	mðIð Ið Ið Ið Ið Ir   r	   N)	Úellipticcurve.ecdsar   Úellipticcurve.publicKeyr   Úellipticcurve.signaturer   Úeventwebhook_headerr   r	   r"   r   r   ú<module>r'      s‰   ðØ %Ð %Ð %Ð %Ð %Ð %Ø -Ð -Ð -Ð -Ð -Ð -Ø -Ð -Ð -Ð -Ð -Ð -à 3Ð 3Ð 3Ð 3Ð 3Ð 3ð+Ið +Ið +Ið +Ið +Iñ +Iô +Ið +Ið +Ið +Ir   