尝试使用 Laravel/PHP 从 SendGrid 转换公钥时验证库 (ECDSA) 出现问题

问题描述 投票:0回答:0

我正在做一个项目,我试图处理来自 SendGrid 的打开和点击事件。我按照他们的 instructions 设置了一个 webhook,并成功接收了数据推送。当绕过签名验证时,我可以存储数据。

我正在使用签名的事件请求,可以看到签名和时间戳的标头:

"X-Twilio-Email-Event-Webhook-Signature"
"X-Twilio-Email-Event-Webhook-Timestamp"

我正在尝试将 SendGrid 提供给我的公钥转换为 ECDSA 字符串,以便我可以比较它并验证标头中的签名。

为此,我安装了 ECDSA 库。将公钥发送到转换函数时出现以下错误:

gmp_init(): Argument #1 ($num) is not an integer string

我也尝试过使用 SendGrid PHP 库,但是,它使用相同的 ECDSA 库并以相同的错误消息结束。它说...

$publicKey = 'base64-encoded public key';

$eventWebhook = new EventWebhook();
$ecPublicKey = $eventWebhook->convertPublicKeyToECDSA($publicKey);

SendGrid 提供的公钥按照 ECDSA 库的预期进行了 base64 编码。我试过发送编码、解码以及介于两者之间的所有内容:)

转换函数然后调用ECDSA类:

public function convertPublicKeyToECDSA($publicKey)
{
    return PublicKey::fromString($publicKey);
}

publickey.php

任何帮助将不胜感激。

php laravel sendgrid
© www.soinside.com 2019 - 2024. All rights reserved.