From 1f6605b801837e9410484ccb09932a32bd48cc06 Mon Sep 17 00:00:00 2001 From: Jannis Braun <151788261+TheZwiss@users.noreply.github.com> Date: Tue, 31 Mar 2026 20:48:00 +0200 Subject: [PATCH] feat(federation): outbox worker signs with pending secret during rotation (FED-011) --- packages/server/src/utils/federationWorker.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/server/src/utils/federationWorker.ts b/packages/server/src/utils/federationWorker.ts index 88164d9c..7c3f4679 100644 --- a/packages/server/src/utils/federationWorker.ts +++ b/packages/server/src/utils/federationWorker.ts @@ -119,6 +119,8 @@ async function processOutboxTick(): Promise { createdAt: schema.federationOutbox.createdAt, peerOrigin: schema.federationPeers.origin, peerHmacSecret: schema.federationPeers.hmacSecret, + peerPendingHmacSecret: schema.federationPeers.pendingHmacSecret, + peerSecretRotationAt: schema.federationPeers.secretRotationAt, peerStatus: schema.federationPeers.status, }) .from(schema.federationOutbox) @@ -158,7 +160,9 @@ async function processOutboxTick(): Promise { if (!firstEntry) continue; // Should never happen given grouping logic above const peerOrigin = firstEntry.peerOrigin; - const peerHmacSecret = firstEntry.peerHmacSecret; + const peerHmacSecret = (firstEntry.peerPendingHmacSecret && firstEntry.peerSecretRotationAt) + ? firstEntry.peerPendingHmacSecret + : firstEntry.peerHmacSecret; // Build relay events from outbox entries const events: FederationRelayEvent[] = peerEntries.map((entry) => {