Я следую приведенному здесь коду: https://kiewic.com/validate-x-hub-signatue для проверки подписи заголовка, и я думаю, что все правильно и понятно, кроме 'buf'. Я никогда не слышал о буфере и, по некоторым исследованиям, думаю (?) Я пришел к выводу, что аргументом должен быть request.rawBody, но я не уверен.
// Sends the post body into the db and the header is used to validate the post
exports.addEvent = functions.https.onRequest((request, resolve) => {
if (request.method !== "POST") {
resolve.status(400).send('Please send a POST request')
return
}
//This checks if the request is valid
if (!verifyRequest(request, request.rawBody)) {
Это запрос. rawBody правильный аргумент? ^^^^^^^^^^^^^^ as 'buf'
resolve.status(400).send('Please send a valid request')
return
}
// adds post body to the db
fb.db.collection("fbCollectionToAddTo").add(request.body)
return
})
// Calculate the Signature header value.
function getSignature(buf) {
var hmac = crypto.createHmac("sha1", "SECRETSTRING")
hmac.update(buf, "utf-8")
return "sha1=" + hmac.digest("hex")
}
// Verifies that the signature is correct
function verifyRequest(req, buf) {
var expected = req.headers['Signature']
var calculated = getSignature(buf)
console.log("Signature:", expected, "Content:", "-" + buf.toString('utf8') + "-")
if (expected !== calculated) {
console.log("Invalid signature.")
return false
} else {
console.log("Valid signature!")
return true
}
}