我正在使用GitHub webhook将事件传递给我的应用程序(GitHub的Hubot的一个实例),并使用sha1秘密进行保护.
我正在使用以下代码验证传入webhooks上的哈希值
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-Signature:sha1 = 1cffc5d4c77a3f696ecd9c19dbc2575d22ffebd4
我按照GitHub的文档准确传递密钥和数据,但哈希总是不同.
这是GitHub的文档. https://developer.github.com/v3/repos/hooks/#example
这是我最有可能误解的部分
secret:作为X-Hub-Signature标头与HTTP请求一起传递的可选字符串.使用秘密作为密钥,将此标头的值计算为正文的HMAC十六进制摘要.
谁能看到我哪里出错了?