【发布时间】:2014-09-10 14:17:29
【问题描述】:
我正在使用 GitHub Webhook 将事件通过管道传输到我的应用程序(GitHub 的 Hubot 的一个实例),并使用 sha1 密钥进行保护。
我正在使用以下代码来验证传入 webhook 上的哈希
crypto = require('crypto')
signature = "sha1=" + crypto.createHmac('sha1', process.env.HUBOT_GITHUB_SECRET).update( new Buffer request.body ).digest('hex')
unless request.headers['x-hub-signature'] is signature
response.send "Signature not valid"
return
在 webhook 中通过的 X-Hub-Signature 标头看起来像这样
X-Hub-签名:sha1=1cffc5d4c77a3f696ecd9c19dbc2575d22ffebd4
我按照 GitHub 的文档准确地传递了密钥和数据,但哈希值总是不同。
这是 GitHub 的文档。 https://developer.github.com/v3/repos/hooks/#example
这是我最有可能误解的部分
secret:与 HTTP 请求一起作为 X-Hub-Signature 标头传递的可选字符串。此标头的值计算为正文的 HMAC 十六进制摘要,使用密钥作为密钥。
谁能看出我哪里出错了?
【问题讨论】:
标签: node.js git github cryptography github-api