我正在使用 SendGrid 在发送、单击电子邮件等时接收事件通知。
他们给了我这个“验证”密钥,并说他们使用 ECDSA 来生成公钥/私钥对。他们给了我一把钥匙,但没有告诉我它是什么,我假设它是公钥。
因此,当发送数据时,他们给我一个带有时间戳和正文的签名。
我有以下 NodeJS 代码,但真的不知道如何解决这个问题。缓冲区中的示例对象是 SG 发送的内容。
const ts = res.headers["X-Twilio-Email-Event-Webhook-Timestamp"];
const msg = Buffer.of(ts, [
{
"email": "iekchimzie1@gmail.com",
"event": "open",
"ip": "66.249.93.222",
"sg_content_type": "html",
"sg_event_id": "fRVFj9NaRPuLtgrTJcRZYA",
"sg_message_id": "DZqeK1BjQN-5yOUCykR7WQ.filterdrecv-p3iad2-8ddf98858-xxtk7-19-5EC1C6BE-4F.0",
"sg_template_id": "d-31ad8dd470384ad1aa6f4dc557f7ee65",
"sg_template_name": "Untitled_11565020537169",
"timestamp": 1590198073,
"useragent": "Mozilla/5.0 (Windows NT 5.1; rv:11.0) Gecko Firefox/11.0 (via ggpht.com GoogleImageProxy)"
}
]);
const shaMsg = crypto.createHash('sha256').update(msg).digest()
const isValid = ecdsa.verify(shaMsg, evSig, SG_WEBHOOK_V_KEY);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
976 次 |
| 最近记录: |