feat: port zero-amount proof credentials from mppx#263#182
feat: port zero-amount proof credentials from mppx#263#182brendanjryan wants to merge 1 commit intomainfrom
Conversation
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 5ee5368850
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| let (_, address) = rest | ||
| .rsplit_once(':') | ||
| .ok_or_else(|| MppError::invalid_payload("proof source is missing an address"))?; |
There was a problem hiding this comment.
Enforce canonical DID parsing for proof sources
proof_signer_from_source only strips the did:pkh:eip155: prefix and then takes everything after the last : as the address, so it accepts arbitrary or malformed chain segments (for example did:pkh:eip155:1:0x... on a 42431 challenge, or extra-colon variants). In ChargeMethod::verify, this parsed address is used as the sole identity check for proof credentials, which means a client can present a valid signature while claiming an incorrect source DID. That breaks source identity integrity for zero-amount auth flows that rely on credential.source as a principal identifier.
Useful? React with 👍 / 👎.
👁️ Cyclops Security Review🧭 Auditing · mode=
Findings
⚙️ Controls
📜 7 events🔍 |
Summary
proofcredential payload fromwevm/mppx#263into the Rust Tempo charge flowDetails
PayloadType::ProofandPaymentPayload::proof(...)tempo::proofhelper for proof signing, signer recovery, and DID source parsing/identityintegration flow test for zero-amount auth and unit coverage for proof helpers