Skip to content

feat(core): implement missing signing host fn#288

Open
pgherveou wants to merge 17 commits into
mainfrom
feat/signing-host-ring-vrf
Open

feat(core): implement missing signing host fn#288
pgherveou wants to merge 17 commits into
mainfrom
feat/signing-host-ring-vrf

Conversation

@pgherveou

Copy link
Copy Markdown
Collaborator

Summary

  • implement direct signing-host RFC-0004 alias and Bandersnatch ring-VRF proof generation
  • mirror Nova full/lite person-key derivation and membership selection
  • resolve Members pallet storage at one pinned finalized block, including ring pages, exponent, index, and revision
  • use the Parity verifiable revision shared by the mobile implementation

Reference implementations:

Validation

  • cargo +nightly fmt --check
  • RUSTFLAGS="-D warnings" cargo build --workspace --all-targets --all-features
  • cargo +nightly clippy --workspace --all-targets --all-features -- -D warnings
  • cargo test --workspace --all-features
  • RUSTFLAGS="-D warnings" cargo check -p truapi-server --target wasm32-unknown-unknown
  • cargo deny check licenses

@pgherveou
pgherveou requested a review from a team July 17, 2026 17:09
pgherveou added a commit that referenced this pull request Jul 21, 2026
Preserve headless SSO resource allocation while aligning Ring-VRF wire variants and confirmation policy with the iOS host.

Refs #264, #288
@pgherveou pgherveou changed the title feat(core): implement ring-vrf signing feat(core): implement missing signing host fn Jul 23, 2026
/// payload with a product-derived account.
///
/// Built from [`HostSignPayloadRequest`] but kept as a dedicated wire type
/// Built from [`truapi::v01::HostSignPayloadRequest`] but kept as a dedicated wire type

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

we should cleanup this inconsistency post-merge

@TarikGul

Copy link
Copy Markdown
Member

Summary of what I added in the above:

  • Statement-store proof signing now uses its own StatementStoreProductSignReview the confirmation matches the unwrapped statement payload that actually gets signed, instead of borrowing the raw-message (<Bytes>-wrapped) review.
  • Resource-allocation confirmation now names the beneficiary product via ResourceAllocationReview.calling_product_id, so approving a delegated allowance key shows which product it's going to.
  • SSO responder replay-dedup is now bounded (fixed capacity, evicts oldest) so a paired peer holding the session open can't grow it without bound on the signing device.

NOTE: the two review types change UserConfirmationReview, so host confirmation UIs (iOS/dotli) need to render the new/updated variants, and the codegen golden is refreshed to match. One of the commits also re-blesses a pre-existing stale golden (the AccountAccess variant) that was already red on a clean checkout unrelated to these fixes.

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.

2 participants