Skip to content

screendriver/verify-github-webhook-secret

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

3b1d80b Β· May 17, 2024
Oct 23, 2023
Jul 18, 2023
Jul 18, 2023
Jul 16, 2023
Oct 9, 2022
Jul 13, 2023
May 27, 2020
May 27, 2020
Oct 9, 2022
Jul 16, 2023
Sep 20, 2023
Jul 18, 2023
Oct 31, 2018
Sep 20, 2023
Jul 18, 2023
Jul 18, 2023
May 16, 2024
May 17, 2024
Jul 18, 2023
Oct 9, 2022

Repository files navigation

verify-github-webhook-secret

GitHub Actions status

Verifies the secret that is sent in GitHub Webhooks. The secret will be used as the key to generate the HMAC hex digest value in the X-Hub-Signature header.

Installation πŸ—

$ npm install --save verify-github-webhook-secret

or if you use Yarn 🐈

$ yarn add verify-github-webhook-secret

Usage πŸ”¨

The exported function needs a http.IncomingMessage and your personal secret string. It returns a Promise that fulfills with a boolean if the received secret is valid or not.

You can use it for example with micro as follows:

import micro from "micro";
import { verifySecret } from "verify-github-webhook-secret";

const server = micro(async (req) => {
	const valid = await verifySecret(req, "my-secret");
	return valid ? "Allowed" : "Not allowed";
});

Another way to call the function is directly with the HTTP body and the x-hub-signature HTTP header. This is useful in an scenario where you don't have an IncomingMessage like in some serverless environments.

import { verifySecret } from "verify-github-webhook-secret";

async function myFunc() {
	const valid = await verifySecret('{"foo":"bar"}', "my-secret", "sha1=30a233839fe2ddd9233c49fd593e8f1aec68f553");
	return valid ? "Allowed" : "Not allowed";
}