Repository navigation
feat(threshold): add ceremony HPKE dealings; Details: TC-2220 - #486
Merged
Merged
Conversation
Details: TC-2220
samgbafa
force-pushed
the
skgbafa/tc-2220-threshold-seal
branch
from
October 29, 2026 22:30
75d966f to
5998383
Compare
Contributor
Author
|
Actual-main lineage update:
Details: TC-2220 |
Contributor
Author
|
Closed and reopened only to trigger CI after the retarget to main. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Scope
Adds ceremony-scoped recipient keys and bounded sealed-dealing envelopes using RFC 9180 base mode: DHKEM(X25519, HKDF-SHA256), HKDF-SHA256 and ChaCha20Poly1305.
The envelope is
01 || enc:32 || lp(ciphertext), with a 64 KiB complete-message cap. The wrapper binds ceremony digest, round and member indices ininfo, and the commitment hash in AAD. Transport helpers remain crate-private. This is TC-2220 HPKE transport prework; the DKG state machine and node integration are separate work.Verification
Final-head acceptance
Exact head
75d966f9ca777a3638b2d071e5a957f37ae88f6fon parent31d2b2c3866483b119501e4a5041a0d0a104737c, after the single owned-only final restack, fresh integrator wiring and tree-identical identity correction:cargo test --locked -p tinycloud-threshold: 55 passed, including all 10 seal tests;PROPTEST_CASES=1024; exit 0.cargo clippy --locked -p tinycloud-threshold --all-targets -- -D warnings: exit 0.cargo fmt -p tinycloud-threshold -- --check: exit 0.cargo deny --manifest-path tinycloud-threshold/Cargo.toml --locked --config tinycloud-threshold/deny.toml check licenses bans advisories sources: pinned 0.20.2, verified binary checksum, exit 0; advisories, bans, licenses and sources all passed.Checks used Rust 1.97.1, two Cargo build jobs and fresh isolated homes/target. No product files changed during final acceptance.
Construction evidence
Construction-head evidence at
bff93fa2cf548d593518d40ddb00fd285021e80a:cargo test --locked -p tinycloud-threshold: 55 passed, including 10 sealed-dealing tests;PROPTEST_CASES=1024.-D warnings, scoped formatting and the pinned cargo-deny 0.20.2 policy passed.Storage lifecycle
The wrapper-owned 32-byte key storage uses Zeroize/ZeroizeOnDrop; internal plaintext/candidate buffers and returned plaintext use Zeroizing. Borrowed caller plaintext is not cleared by the module. This description covers accessible owned buffers, not hpke0.12 PrivateKey/AeadCtxS/AeadCtxR internal storage.
Final-parent stack
31d2b2c3866483b119501e4a5041a0d0a104737c.75d966f9ca777a3638b2d071e5a957f37ae88f6f.a3d665c68abf74e6104038e2c3c59bbdfafde5d2,841acd6dcc79d12280783309d6fbdfcd872be4ab,4dc201e4488065015ffca7ea01db7ca68f67245e.8312f0800404d250748b73b3b4cce573ed4afd0b, canonical metadata replacement75d966f9ca777a3638b2d071e5a957f37ae88f6f.Construction stack
d91c16c8e9e4b43006f1a8942952f935a7005c51.d1aa10234d9ef0f596af09f7fb518d4152432ce2.0aee31eaca22921bce6cdcf5f0ef72d6f39506ae.58cd01e8523a8a342ea6b2c6d26213fc88be4585.bff93fa2cf548d593518d40ddb00fd285021e80a.Provenance and dependencies
x25519feature selection.rand_core0.6.4 boundary.Added dependency:
hpke = "=0.12.0", defaults disabled,x25519only, MIT OR Apache-2.0. Existingrand_core,zeroizeand the selected dependency closure use permissive licenses checked by the scoped policy. No dependency implementation source was consulted.Details: TC-2220