ResolvesQRun-IO/qqq#1160, filed in qqq because this repo has issues disabled. Source: architecture review QRun-IO/qqq#1150, finding F11 (four webhook signers become one).
Bumps the baseline to QQQ 4.1.0-RC.5.
Deletes shared/signing/ (WebhookSigner, WebhookVerifier, WebhookSecret, WebhookVerificationException). DeliveryEngine, EndpointSecrets and the table customizers now use core com.kingsrook.qqq.backend.core.utils.webhooks (#1109).
Wire format unchanged. It was compared byte-for-byte with core at v4.1.0-RC.5: headers webhook-id/webhook-timestamp/webhook-signature, the v1, prefix, whsec_ secrets, timestamp tolerance and multi-signature rotation. No adapter was needed.
The qbit keeps endpoints, secret storage and delivery.
Host impact: code that imported com.kingsrook.qbits.webhooks.shared.signing.* must import the core classes instead. Receivers see no change.
Tests
mvnw -B verify: 146 tests, 0 failures, 0 checkstyle violations. Coverage is 92.78% instructions and 100% classes.
New signing/ tests:
signing in both directions with the core verifier (bidirectional HMAC interop);
## Summary
Resolves QRun-IO/qqq#1160, filed in qqq because **this repo has issues disabled**. Source: architecture review QRun-IO/qqq#1150, finding F11 (four webhook signers become one).
- Bumps the baseline to **QQQ 4.1.0-RC.5**.
- Deletes `shared/signing/` (`WebhookSigner`, `WebhookVerifier`, `WebhookSecret`, `WebhookVerificationException`). `DeliveryEngine`, `EndpointSecrets` and the table customizers now use core `com.kingsrook.qqq.backend.core.utils.webhooks` (#1109).
- **Wire format unchanged.** It was compared byte-for-byte with core at `v4.1.0-RC.5`: headers `webhook-id`/`webhook-timestamp`/`webhook-signature`, the `v1,` prefix, `whsec_` secrets, timestamp tolerance and multi-signature rotation. No adapter was needed.
- The qbit keeps endpoints, secret storage and delivery.
- **Host impact:** code that imported `com.kingsrook.qbits.webhooks.shared.signing.*` must import the core classes instead. Receivers see no change.
## Tests
`mvnw -B verify`: 146 tests, 0 failures, 0 checkstyle violations. Coverage is 92.78% instructions and 100% classes.
New `signing/` tests:
- signing in both directions with the core verifier (bidirectional HMAC interop);
- two-secret rotation;
- timestamp boundaries.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
Resolves QRun-IO/qqq#1160, filed in qqq because this repo has issues disabled. Source: architecture review QRun-IO/qqq#1150, finding F11 (four webhook signers become one).
shared/signing/(WebhookSigner,WebhookVerifier,WebhookSecret,WebhookVerificationException).DeliveryEngine,EndpointSecretsand the table customizers now use corecom.kingsrook.qqq.backend.core.utils.webhooks(#1109).v4.1.0-RC.5: headerswebhook-id/webhook-timestamp/webhook-signature, thev1,prefix,whsec_secrets, timestamp tolerance and multi-signature rotation. No adapter was needed.com.kingsrook.qbits.webhooks.shared.signing.*must import the core classes instead. Receivers see no change.Tests
mvnw -B verify: 146 tests, 0 failures, 0 checkstyle violations. Coverage is 92.78% instructions and 100% classes.New
signing/tests:🤖 Generated with Claude Code