Prefer legacy ActivityPub publicKey for Mastodon #47

Merged
erik merged 1 commit from task-d213c262-legacy-publickey-only into main 2026-06-28 13:42:07 -05:00
Owner

Summary

  • omit assertionMethod from local actor serialization for now
  • keep the legacy publicKey pointing at /activitypub/keys/{actor}/main-key
  • keep outbound signing on acct:{actor}@{domain}

Why

Mastodon 4.7 prefers assertionMethod over legacy publicKey during actor refresh. With a poisoned cached key state, that prevents refresh from producing a usable legacy RSA key. Publishing only legacy publicKey should make the refresh path use the same key we sign with.

Verification

  • npm run typecheck
  • npm test -- --run src/federation/tests/routes.test.ts src/routes/tests/admin-activitypub.test.ts src/federation/tests/delivery.test.ts src/federation/tests/activitypub.test.ts
  • npm test
  • npm run build

Task: task-d213c262

## Summary - omit `assertionMethod` from local actor serialization for now - keep the legacy `publicKey` pointing at `/activitypub/keys/{actor}/main-key` - keep outbound signing on `acct:{actor}@{domain}` ## Why Mastodon 4.7 prefers `assertionMethod` over legacy `publicKey` during actor refresh. With a poisoned cached key state, that prevents refresh from producing a usable legacy RSA key. Publishing only legacy `publicKey` should make the refresh path use the same key we sign with. ## Verification - npm run typecheck - npm test -- --run src/federation/__tests__/routes.test.ts src/routes/__tests__/admin-activitypub.test.ts src/federation/__tests__/delivery.test.ts src/federation/__tests__/activitypub.test.ts - npm test - npm run build Task: task-d213c262
erik merged commit 7c12b432ff into main 2026-06-28 13:42:07 -05:00
erik deleted branch task-d213c262-legacy-publickey-only 2026-06-28 13:42:07 -05:00
Sign in to join this conversation.
No description provided.