Skip to content

fix: webhook HMAC signature serialization mismatch (BUG-17)#6

Merged
govindkavaturi-art merged 1 commit intomainfrom
fix/webhook-hmac-serialization
Mar 31, 2026
Merged

fix: webhook HMAC signature serialization mismatch (BUG-17)#6
govindkavaturi-art merged 1 commit intomainfrom
fix/webhook-hmac-serialization

Conversation

@govindkavaturi-art
Copy link
Copy Markdown
Member

Summary

  • deliver_webhook() sent json.dumps(body) but sign_payload() computed HMAC over json.dumps(body, sort_keys=True, default=str)
  • Key ordering differed, making every webhook signature unverifiable
  • Fix: all delivery branches now serialize with sort_keys=True, default=str

Fixes #5

Test plan

  • Existing test_webhook_secret.py passes
  • Argus e2e webhook verification test passes after deploy

deliver_webhook() was sending json.dumps(body) but sign_payload()
computed HMAC over json.dumps(body, sort_keys=True, default=str).
Key ordering differed, making every signature unverifiable.

Fix: all three delivery branches (POST/PUT/PATCH) now serialize
with sort_keys=True, default=str to match sign_payload().

Fixes #5

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@govindkavaturi-art govindkavaturi-art merged commit 8981117 into main Mar 31, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

BUG-17: Webhook HMAC signature always unverifiable — signing and delivery use different JSON serialization

1 participant