Skip to content

Add signer-only PCZT parse path#24

Closed
czarcas7ic wants to merge 6 commits into
adam/ironwood-0.15.0-pre.1-basefrom
adam/pczt-recompute-helpers
Closed

Add signer-only PCZT parse path#24
czarcas7ic wants to merge 6 commits into
adam/ironwood-0.15.0-pre.1-basefrom
adam/pczt-recompute-helpers

Conversation

@czarcas7ic

@czarcas7ic czarcas7ic commented Jun 26, 2026

Copy link
Copy Markdown

Summary

Adds signer-only PCZT parse entry points for Bundle, Action, and Spend. The new path skips FullViewingKey derivation for low-level signing, while the full parse remains the default for verifier, prover, and updater roles.

This is scoped to the signing path. It does not make PCZT fields optional or add recomputation helpers.

Testing

  • cargo test --all-features lean_parse_signs_identically_to_full_parse

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: cb5eed0f5a

ℹ️ 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".

Comment thread src/pczt/verify.rs Outdated
Comment thread src/pczt/verify.rs Outdated
@czarcas7ic
czarcas7ic force-pushed the adam/pczt-recompute-helpers branch 3 times, most recently from 0d80864 to 55354e1 Compare June 27, 2026 01:12
A PCZT producer may omit an Orchard action's derived fields (cv_net,
nullifier, rk, cmx, ephemeral_key, enc_ciphertext) to shrink the
serialized size, leaving the receiver to recompute them from the note
components it already holds. The pczt crate cannot do this itself because
Rho::from_nf_old (the output rho derivation) is pub(crate) here.

Expose orchard::pczt::recompute with byte-level helpers that share the
exact derivations the existing verify_* methods use, plus a
ParseError::Recompute variant for the fill path. The verify_* methods are
unchanged. Ciphertext recompute selects OrchardNoteEncryption (V2) or
IronwoodNoteEncryption (V3) by note version, assuming the migration empty
[0u8; 512] memo with ovk = None.
@czarcas7ic
czarcas7ic force-pushed the adam/pczt-recompute-helpers branch from 55354e1 to d05e3b4 Compare June 27, 2026 02:28
@czarcas7ic czarcas7ic changed the title Add a pczt recompute module for omitted derived fields Add signer-only PCZT parse path Jun 30, 2026
@czarcas7ic
czarcas7ic changed the base branch from adam/pczt-recompute-base to adam/ironwood-0.15.0-pre.1-base June 30, 2026 21:52
@czarcas7ic

Copy link
Copy Markdown
Author

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. You're on a roll.

Reviewed commit: 34c9c5047f

ℹ️ 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".

The soundness note on Spend::parse_for_signing described the required
prior verification in one consumer's UI terms; state the caller
obligation instead.
@czarcas7ic czarcas7ic closed this Jul 3, 2026
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