Summary
Any route that creates or updates creator data currently has no way to confirm the request actually comes from the wallet owner. Without signature verification, anyone who knows a wallet address can impersonate that creator. The server needs middleware that validates a Stellar keypair signature on mutating requests before the handler runs.
Scope
- Accept a signed payload in a request header (e.g.
X-Wallet-Signature) containing the request body hash signed with the sender's Stellar private key
- Verify the signature against the
wallet_address field in the request using Stellar's Ed25519 verification
- Return a 401 with a descriptive error if verification fails
- Apply middleware to: creator registration, creator profile update, and any future admin-only mutation routes
- Document the signing format so client contributors can implement it
Acceptance Criteria
Coordinate on Telegram
Summary
Any route that creates or updates creator data currently has no way to confirm the request actually comes from the wallet owner. Without signature verification, anyone who knows a wallet address can impersonate that creator. The server needs middleware that validates a Stellar keypair signature on mutating requests before the handler runs.
Scope
X-Wallet-Signature) containing the request body hash signed with the sender's Stellar private keywallet_addressfield in the request using Stellar's Ed25519 verificationAcceptance Criteria
401 Unauthorizedwith a clear error body on invalid or missing signatureCoordinate on Telegram