Skip to content

[DAP-18] TaskConf AAD Part 3: make AggregatorTask self-sufficient#4698

Draft
jcjones wants to merge 4 commits into
mainfrom
jcj/dap-17-taskconf-aad-part-3
Draft

[DAP-18] TaskConf AAD Part 3: make AggregatorTask self-sufficient#4698
jcjones wants to merge 4 commits into
mainfrom
jcj/dap-17-taskconf-aad-part-3

Conversation

@jcjones

@jcjones jcjones commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

DAP-18 binds the task's TaskConfiguration -- which contains both the leader and helper endpoints -- into the HPKE AADs for input and aggregate shares. AggregatorTask previously stored only peer_aggregator_endpoint, so a party could not reconstruct both endpoints from the task alone.

Add an own_aggregator_endpoint field (and DB column) alongside the peer endpoint:

  • API-provisioned tasks stamp it at creation from the aggregator's configured public_dap_url.
  • taskprov tasks populate it from the received TaskConfiguration's endpoint for this aggregator's role, which taskprov_opt_in previously discarded.

In the process, we move to the janus_messages::Url.

@jcjones jcjones force-pushed the jcj/dap-17-taskconf-aad-part-3 branch from 6ba01cf to 366760a Compare July 8, 2026 21:59
@jcjones jcjones changed the title [DAP-17] TaskConf AAD Part 3: make AggregatorTask self-sufficient [DAP-19] TaskConf AAD Part 3: make AggregatorTask self-sufficient Jul 8, 2026
@jcjones jcjones changed the title [DAP-19] TaskConf AAD Part 3: make AggregatorTask self-sufficient [DAP-18] TaskConf AAD Part 3: make AggregatorTask self-sufficient Jul 8, 2026
@jcjones jcjones force-pushed the jcj/dap-17-taskconf-aad-part-3 branch from 366760a to 9791414 Compare July 8, 2026 22:59
@jcjones jcjones added the allow-changed-migrations Override the ci-migrations check to allow migrations that have changed. label Jul 8, 2026
@jcjones jcjones force-pushed the jcj/dap-17-taskconf-aad-part-3 branch from 9791414 to 8052d68 Compare July 8, 2026 23:58
jcjones added 2 commits July 8, 2026 19:54
DAP-18 binds the task's TaskConfiguration -- which contains both the leader
and helper endpoints -- into the HPKE AADs for input and aggregate shares.
AggregatorTask previously stored only peer_aggregator_endpoint, so a party
could not reconstruct both endpoints from the task alone.

Add an own_aggregator_endpoint field (and DB column) alongside the peer
endpoint:

- API-provisioned tasks stamp it at creation from the aggregator's configured
  public_dap_url.
- taskprov tasks populate it from the received TaskConfiguration's endpoint for
  this aggregator's role, which taskprov_opt_in previously discarded.

In the process, we move to the janus_messages::Url.
Add the adapter that yields the canonical TaskConfiguration bound into HPKE
AADs, so the upcoming AAD sites can obtain it from the task alone.

For API-provisioned tasks it is synthesized via build_task_configuration,
pairing the task's own and peer endpoints into leader/helper by role.

For taskprov tasks it is the received wire configuration verbatim. Store that
configuration on the task (new nullable taskprov_task_config column, populated
in taskprov_opt_in). Re-synthesizing it from the stored parameters is not
byte-safe: the VdafConfig<->VdafInstance round trip drops DP strategies and
unknown task extensions would be lost, and any divergence breaks decryption.
@jcjones jcjones force-pushed the jcj/dap-17-taskconf-aad-part-3 branch from 8052d68 to 0f66551 Compare July 9, 2026 02:54
jcjones added 2 commits July 8, 2026 20:07
…rams

Add builder setters (with_task_info, with_min_batch_size, with_batch_config,
with_vdaf_config, with_task_interval) supplying the parameters the client needs
to reconstruct the task's canonical TaskConfiguration for HPKE AADs. The four
non-optional parameters are validated at build(), which fails fast rather than
deferring to the first upload's AAD construction.

ClientParameters::task_configuration() is the single construction path; it is
not yet AAD-load-bearing (wired in the flag day). In-tree builder callers
(tests, integration harness, interop client) are updated to supply the fields.
… params

Add builder setters (with_helper_endpoint, with_task_info, with_min_batch_size,
with_batch_config, with_vdaf_config, with_task_interval) supplying the parameters
the collector needs to reconstruct the task's canonical TaskConfiguration for
aggregate-share AADs. The collector had no helper endpoint before. Required fields
are validated at build(), which also fails fast on invalid endpoint bytes rather
than deferring to the first collection's AAD construction.

Collector::task_configuration() is the single construction path; it is not yet
AAD-load-bearing (wired in the flag day). Collector::new is removed (it bypassed
the setters and so could no longer build). In-tree callers (tests, integration
harness, interop collector, collect tool) are updated to supply the fields.
@jcjones jcjones force-pushed the jcj/dap-17-taskconf-aad-part-3 branch from 0f66551 to ecc6608 Compare July 9, 2026 03:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

allow-changed-migrations Override the ci-migrations check to allow migrations that have changed.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant