Skip to content

Refactor/silentpayments transaction shared secret#141

Open
Sosthene00 wants to merge 6 commits into
masterfrom
refactor/silentpayments-transaction-shared-secret
Open

Refactor/silentpayments transaction shared secret#141
Sosthene00 wants to merge 6 commits into
masterfrom
refactor/silentpayments-transaction-shared-secret

Conversation

@Sosthene00

Copy link
Copy Markdown
Collaborator
  • Replace SharedSecret with TransactionSharedSecret, that carries both the ECDH point and recipient scan key.
  • Introduce PublicTweakData for receiver-side shared secret derivation using TransactionInputs.
  • Extract hash helpers (calculate_label_hash, calculate_shared_secret_hash) and add NormalizedSecretKey type for taproot key normalization.
  • Keep the existing PartialSecret / calculate_partial_secret sending API unchanged for now.

P2SH-P2WPKH: validate the redeem-script hash160 against the output script
pubkey before trusting it. Previously any push in script_sig was accepted
without checking the commitment, which would silently allow malformed
inputs to pass.

P2TR: the old check for a script-path spend indexed the last witness item
as [1..33] without verifying length, which panics on items shorter than
33 bytes. Tighten the guard to control_block.len() >= 33 and only check
effective_stack >= 2 (key-path spends have a single witness item).

Extract last_push (returns the last data push in a push-only script) and
witness_compressed_pubkey (verifies compressed pubkey + hash160 match)
as helpers, removing three near-identical match blocks.

Also includes PublicTweakData::new signature change from the two-NonEmptyArray
pattern to &TransactionInputs (companion to the TransactionInputs commit).
@Sosthene00 Sosthene00 force-pushed the refactor/silentpayments-transaction-shared-secret branch from 56397f2 to 98cf407 Compare June 23, 2026 13:20
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