fix(pay): checksum Monero addresses (base58 + keccak) #7

Merged
sirius merged 2 commits from wt/t_45d30b55 into main 2026-09-11 00:03:11 +00:00
Owner

Summary

  • Decode Monero base58 (8-byte blocks) and verify Keccak-256 checksum + network prefix.
  • /pay, /tip, payment rows, and profile save share check_address; empty xmr_addr stays allowed.
  • Junk 4+A*94 and short 4abc now fail. Fixtures from Monero docs keys (mainnet + stagenet), not live RPC.

Tests

cargo test --locked 101 passed / 3 ignored. cargo clippy --locked -- -D warnings clean.

Do not merge unless Lance says so.

## Summary - Decode Monero base58 (8-byte blocks) and verify Keccak-256 checksum + network prefix. - `/pay`, `/tip`, payment rows, and profile save share `check_address`; empty `xmr_addr` stays allowed. - Junk `4`+`A`*94 and short `4abc` now fail. Fixtures from Monero docs keys (mainnet + stagenet), not live RPC. ## Tests `cargo test --locked` 101 passed / 3 ignored. `cargo clippy --locked -- -D warnings` clean. Do not merge unless Lance says so.
sirius added 1 commit 2026-09-11 00:00:01 +00:00
fix(pay): checksum Monero addresses (base58 + keccak)
All checks were successful
ci / test (pull_request) Successful in 3m16s
666b9d2e86
Reject prefix+length junk so /pay, /tip, and profile save cannot
sign or store garbage xmr_addr. Empty profile address stays allowed.
sirius added 1 commit 2026-09-11 00:03:03 +00:00
Merge branch 'main' into wt/t_45d30b55
Some checks failed
ci / test (pull_request) Failing after 12s
2041302da7
sirius merged commit b3c5b78f25 into main 2026-09-11 00:03:11 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: sirius/onionwire#7
No description provided.