tai42-webhook-verifier-github 0.2.2__tar.gz → 0.3.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {tai42_webhook_verifier_github-0.2.2/src/tai42_webhook_verifier_github.egg-info → tai42_webhook_verifier_github-0.3.0}/PKG-INFO +2 -2
- {tai42_webhook_verifier_github-0.2.2 → tai42_webhook_verifier_github-0.3.0}/pyproject.toml +3 -3
- tai42_webhook_verifier_github-0.3.0/src/tai42_webhook_verifier_github/docs/index.mdx +44 -0
- {tai42_webhook_verifier_github-0.2.2 → tai42_webhook_verifier_github-0.3.0}/src/tai42_webhook_verifier_github/tai-plugin.yml +2 -2
- {tai42_webhook_verifier_github-0.2.2 → tai42_webhook_verifier_github-0.3.0/src/tai42_webhook_verifier_github.egg-info}/PKG-INFO +2 -2
- {tai42_webhook_verifier_github-0.2.2 → tai42_webhook_verifier_github-0.3.0}/src/tai42_webhook_verifier_github.egg-info/SOURCES.txt +2 -1
- tai42_webhook_verifier_github-0.3.0/src/tai42_webhook_verifier_github.egg-info/requires.txt +1 -0
- tai42_webhook_verifier_github-0.2.2/src/tai42_webhook_verifier_github.egg-info/requires.txt +0 -1
- {tai42_webhook_verifier_github-0.2.2 → tai42_webhook_verifier_github-0.3.0}/LICENSE +0 -0
- {tai42_webhook_verifier_github-0.2.2 → tai42_webhook_verifier_github-0.3.0}/MANIFEST.in +0 -0
- {tai42_webhook_verifier_github-0.2.2 → tai42_webhook_verifier_github-0.3.0}/NOTICE +0 -0
- {tai42_webhook_verifier_github-0.2.2 → tai42_webhook_verifier_github-0.3.0}/README.md +0 -0
- {tai42_webhook_verifier_github-0.2.2 → tai42_webhook_verifier_github-0.3.0}/setup.cfg +0 -0
- {tai42_webhook_verifier_github-0.2.2 → tai42_webhook_verifier_github-0.3.0}/src/tai42_webhook_verifier_github/__init__.py +0 -0
- {tai42_webhook_verifier_github-0.2.2 → tai42_webhook_verifier_github-0.3.0}/src/tai42_webhook_verifier_github/py.typed +0 -0
- {tai42_webhook_verifier_github-0.2.2 → tai42_webhook_verifier_github-0.3.0}/src/tai42_webhook_verifier_github/verifier.py +0 -0
- {tai42_webhook_verifier_github-0.2.2 → tai42_webhook_verifier_github-0.3.0}/src/tai42_webhook_verifier_github.egg-info/dependency_links.txt +0 -0
- {tai42_webhook_verifier_github-0.2.2 → tai42_webhook_verifier_github-0.3.0}/src/tai42_webhook_verifier_github.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: tai42-webhook-verifier-github
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.3.0
|
|
4
4
|
Summary: GitHub webhook-signature verifier plugin for the TAI ecosystem: a per-provider WebhookVerifier that checks each delivery's X-Hub-Signature-256 HMAC before the payload is dispatched.
|
|
5
5
|
Author-email: tai42 <oss@tai42.ai>
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -20,7 +20,7 @@ Requires-Python: >=3.13
|
|
|
20
20
|
Description-Content-Type: text/markdown
|
|
21
21
|
License-File: LICENSE
|
|
22
22
|
License-File: NOTICE
|
|
23
|
-
Requires-Dist: tai42-contract<
|
|
23
|
+
Requires-Dist: tai42-contract<2,>=1.5
|
|
24
24
|
Dynamic: license-file
|
|
25
25
|
|
|
26
26
|
# tai42-webhook-verifier-github
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "tai42-webhook-verifier-github"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.3.0"
|
|
8
8
|
description = "GitHub webhook-signature verifier plugin for the TAI ecosystem: a per-provider WebhookVerifier that checks each delivery's X-Hub-Signature-256 HMAC before the payload is dispatched."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.13"
|
|
@@ -27,7 +27,7 @@ dependencies = [
|
|
|
27
27
|
# The pure interface contract this verifier registers through — the tai42_app
|
|
28
28
|
# handle and the WebhookVerifier / WebhookVerificationError types. The HMAC
|
|
29
29
|
# work is pure standard library (hmac / hashlib); no other tai-* dependency.
|
|
30
|
-
"tai42-contract>=
|
|
30
|
+
"tai42-contract>=1.5,<2",
|
|
31
31
|
]
|
|
32
32
|
|
|
33
33
|
[project.urls]
|
|
@@ -55,7 +55,7 @@ where = ["src"]
|
|
|
55
55
|
include = ["tai42_webhook_verifier_github*"]
|
|
56
56
|
|
|
57
57
|
[tool.setuptools.package-data]
|
|
58
|
-
tai42_webhook_verifier_github = ["py.typed", "tai-plugin.yml"]
|
|
58
|
+
tai42_webhook_verifier_github = ["py.typed", "tai-plugin.yml", "docs/*", "docs/images/*"]
|
|
59
59
|
|
|
60
60
|
[tool.uv]
|
|
61
61
|
cache-keys = [{ file = "pyproject.toml" }]
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "GitHub webhook verifier"
|
|
3
|
+
description: "Bind the github webhook verifier to a hook topic and name the environment variable that holds the signing secret."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Registers the `github` webhook verifier. It authenticates an inbound delivery's
|
|
7
|
+
`X-Hub-Signature-256` HMAC-SHA256, computed over the exact raw request body and keyed
|
|
8
|
+
by the webhook's shared secret. Bind it to a hook topic to close that topic's door
|
|
9
|
+
against unsigned deliveries.
|
|
10
|
+
|
|
11
|
+
## Bind it to a topic
|
|
12
|
+
|
|
13
|
+
A verifier is bound per hook topic. The binding names the environment variable that
|
|
14
|
+
holds the signing secret through `config.secret_env` — the verifier looks that
|
|
15
|
+
variable up at verify time, so the secret itself never lives in the manifest:
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
curl -X PUT .../api/hooks/topics/{topic}/verifier \
|
|
19
|
+
-d '{"verifier": "github", "config": {"secret_env": "GITHUB_WEBHOOK_SECRET"}}'
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Set the same secret you configured on the GitHub webhook in that variable on every
|
|
23
|
+
process that receives deliveries:
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
GITHUB_WEBHOOK_SECRET=...
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
The variable name is yours to choose — pick a distinct name per topic when one
|
|
30
|
+
deployment verifies several GitHub webhooks with different secrets.
|
|
31
|
+
|
|
32
|
+
## Behaviour
|
|
33
|
+
|
|
34
|
+
- **Fails closed.** A missing `secret_env` key, a missing environment variable, or an
|
|
35
|
+
empty secret raises loudly rather than degrading to an unauthenticated door. A
|
|
36
|
+
malformed or mismatched signature is an ordinary verification failure.
|
|
37
|
+
- **POST only.** The signature covers the raw body, so a door binding this verifier
|
|
38
|
+
rejects GET.
|
|
39
|
+
- The comparison is constant-time, and the `sha256=` digest must be exactly 64 hex
|
|
40
|
+
characters.
|
|
41
|
+
|
|
42
|
+
## See also
|
|
43
|
+
|
|
44
|
+
- [Triggers and webhooks](/concepts/triggers-and-webhooks) — the verifier model and the built-in `shared_secret` verifier.
|
|
@@ -2,7 +2,7 @@ spec_version: 1
|
|
|
2
2
|
namespace: tai42
|
|
3
3
|
name: webhook-verifier-github
|
|
4
4
|
package: tai42-webhook-verifier-github
|
|
5
|
-
version: 0.
|
|
5
|
+
version: 0.3.0
|
|
6
6
|
description: >-
|
|
7
7
|
GitHub webhook-signature verifier plugin for the TAI ecosystem: a per-provider
|
|
8
8
|
WebhookVerifier that checks each delivery's X-Hub-Signature-256 HMAC before
|
|
@@ -10,7 +10,7 @@ description: >-
|
|
|
10
10
|
license: Apache-2.0
|
|
11
11
|
homepage: https://tai42.ai
|
|
12
12
|
repository: https://github.com/tai42ai/tai42/tree/main/plugins/webhook-verifier-github
|
|
13
|
-
contract: '>=
|
|
13
|
+
contract: '>=1.5,<2'
|
|
14
14
|
categories:
|
|
15
15
|
- webhooks
|
|
16
16
|
- security
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: tai42-webhook-verifier-github
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.3.0
|
|
4
4
|
Summary: GitHub webhook-signature verifier plugin for the TAI ecosystem: a per-provider WebhookVerifier that checks each delivery's X-Hub-Signature-256 HMAC before the payload is dispatched.
|
|
5
5
|
Author-email: tai42 <oss@tai42.ai>
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -20,7 +20,7 @@ Requires-Python: >=3.13
|
|
|
20
20
|
Description-Content-Type: text/markdown
|
|
21
21
|
License-File: LICENSE
|
|
22
22
|
License-File: NOTICE
|
|
23
|
-
Requires-Dist: tai42-contract<
|
|
23
|
+
Requires-Dist: tai42-contract<2,>=1.5
|
|
24
24
|
Dynamic: license-file
|
|
25
25
|
|
|
26
26
|
# tai42-webhook-verifier-github
|
|
@@ -11,4 +11,5 @@ src/tai42_webhook_verifier_github.egg-info/PKG-INFO
|
|
|
11
11
|
src/tai42_webhook_verifier_github.egg-info/SOURCES.txt
|
|
12
12
|
src/tai42_webhook_verifier_github.egg-info/dependency_links.txt
|
|
13
13
|
src/tai42_webhook_verifier_github.egg-info/requires.txt
|
|
14
|
-
src/tai42_webhook_verifier_github.egg-info/top_level.txt
|
|
14
|
+
src/tai42_webhook_verifier_github.egg-info/top_level.txt
|
|
15
|
+
src/tai42_webhook_verifier_github/docs/index.mdx
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
tai42-contract<2,>=1.5
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
tai42-contract<0.5,>=0.4
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|