Add ExportRaw() and ImportRaw() serialization helpers for Prio3 share…#573
Open
test-sum wants to merge 1 commit intocloudflare:mainfrom
Open
Add ExportRaw() and ImportRaw() serialization helpers for Prio3 share…#573test-sum wants to merge 1 commit intocloudflare:mainfrom
test-sum wants to merge 1 commit intocloudflare:mainfrom
Conversation
Contributor
|
it looks like this PR needs to be rebase on top of the current main branch |
0b6611d to
70ac16c
Compare
Author
|
Thank you, @armfazh ....you’re right. I’ve rebased on the latest main and pushed again. |
armfazh
requested changes
Oct 26, 2025
Contributor
armfazh
left a comment
There was a problem hiding this comment.
Could you please verify whether MarshalBinary already produces the same encoding?
| } | ||
|
|
||
| // ExportRaw serializes the vector as a sequence of raw field elements | ||
| func (v Vec) ExportRaw() ([]byte, error) { |
Contributor
There was a problem hiding this comment.
This looks like the same encoding as the one provided by the Marshal function?
https://github.com/cloudflare/circl/blob/main/vdaf/prio3/arith/fp64/fp.go#L41
| } | ||
|
|
||
| // ExportBytes returns the portable binary encoding of the OutShare. | ||
| func (s *OutShare[V, E]) ExportBytes() ([]byte, error) { |
Contributor
There was a problem hiding this comment.
This is equivalent to calling s.MarshalBinary directly. So no need to have the ExportBytes and ImportBytes methods.
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.
Summary
This PR adds minimal, backward-compatible serialization helpers for CIRCL’s Prio3 types to support cross-process and distributed deployments of Verifiable Distributed Aggregation Functions (VDAFs).
Background
The current CIRCL VDAF implementation assumes that all aggregators and the collector operate within a single process.
Serialization helpers (e.g., for
InputShare,PrepShare,OutShare) are defined undervdaf/prio3/internal/prio3, which cannot be accessed externally due to Go’sinternal/package visibility rules.This makes distributed deployments — where aggregators and the collector run on distinct hosts — infeasible without modifying CIRCL.
Our patch exposes a minimal public serialization interface to enable share transmission between processes while preserving CIRCL’s internal cryptographic semantics.
Changes Introduced