Skip to content

fix: enforce fee-payer sponsor policy#20

Open
mablr wants to merge 1 commit into
stripe:mainfrom
mablr:mablr/oss-303-fee-payer-policy-enforcement
Open

fix: enforce fee-payer sponsor policy#20
mablr wants to merge 1 commit into
stripe:mainfrom
mablr:mablr/oss-303-fee-payer-policy-enforcement

Conversation

@mablr
Copy link
Copy Markdown

@mablr mablr commented Jun 5, 2026

Description

Implements server-side policy checks before mpp-rb cosigns Tempo fee-payer envelopes.

Closes OSS-303; a client-controlled fee-payer envelope could smuggle policy-violating fields into the sponsored transaction.

Changes

  • Add FeePayerPolicy for Tempo sponsor limits.
  • Reject client-supplied feeToken; sponsor now sets it during cosign.
  • Reject non-max nonce keys.
  • Reject excessive gas, fee, total fee budget, and validity windows.
  • Reject priority fee greater than max fee.
  • Reject non-empty access lists.
  • Reject extra or mismatched calls when the original charge request is available.
  • Preserve happy-path cosign behavior for valid fee-payer envelopes.

Tests

  • Added coverage for:
    • gas policy rejection
    • max fee policy rejection
    • priority fee policy rejection
    • validity window rejection
    • extra call rejection
    • access list rejection
    • valid envelope cosign
  • Local syntax checks passed:
    • ruby -c lib/mpp/methods/tempo/intents.rb
    • ruby -c lib/mpp/methods/tempo/fee_payer_policy.rb
    • ruby -c test/mpp/methods/tempo/test_transaction.rb

@cla-assistant
Copy link
Copy Markdown

cla-assistant Bot commented Jun 5, 2026

CLA assistant check
All committers have signed the CLA.

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