Skip to content

smartcontract: allow reservation authority to manage access passes#3262

Draft
snormore wants to merge 5 commits intomainfrom
snor/reservation-authority-access-pass-multicast
Draft

smartcontract: allow reservation authority to manage access passes#3262
snormore wants to merge 5 commits intomainfrom
snor/reservation-authority-access-pass-multicast

Conversation

@snormore
Copy link
Contributor

@snormore snormore commented Mar 14, 2026

Summary of Changes

  • Reservation authority (reservation_authority_pk) can now create, update, and close access passes
  • Ownership restriction: reservation authority can only update/close access passes where owner matches the reservation key, preventing it from modifying foundation-created passes
  • ACCESS_PASS_ADMIN legacy permission mapping updated to include reservation_authority_pk

Diff Breakdown

Category Files Lines (+/-) Net
Core logic 3 +43 / -6 +37
Tests 1 +235 / -0 +235

Core-heavy change with strong test coverage for all new permission paths.

Key files (click to expand)

Testing Verification

  • Unit test for ACCESS_PASS_ADMIN legacy authorization via reservation authority
  • Integration test: reservation authority successfully creates an access pass
  • Integration test: reservation authority closes an access pass it owns
  • Integration test: reservation authority fails to close an access pass owned by foundation (asserts Custom(8) / NotAllowed)
  • Full cargo test -p doublezero-serviceability passes (229 unit + all integration tests)

…d multicast allowlists

The reservation authority key can now create/close access passes and
add entries to multicast group publisher/subscriber allowlists. For
subscriber allowlist operations, the reservation authority is also
permitted to operate on access passes with a different user_payer
than the one stored in the access pass.

The legacy authorization mappings in authorize.rs are updated so
ACCESS_PASS_ADMIN and MULTICAST_ADMIN flags also accept the
reservation_authority_pk.
Reservation authority can only update, close, or modify multicast
allowlists on access passes it owns (i.e., access passes it created).
@snormore snormore changed the title smartcontract: allow reservation authority to manage access passes and multicast allowlists smartcontract: allow reservation authority to manage access passes Mar 14, 2026
…operations

Reservation authority should only have access to access pass create/update/close,
not multicast group allowlist add/remove operations.
@snormore snormore force-pushed the snor/reservation-authority-access-pass-multicast branch from d360da8 to 6323d6a Compare March 14, 2026 01:25
…iber allowlist

Reservation authority can add subscriber allowlist entries on access passes
they own, including with a different user_payer than the access pass.
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.

1 participant