Skip to content

Commit 4cbbdb1

Browse files
committed
Update taskprov advertisement encoding for latest draft
1 parent 0859473 commit 4cbbdb1

File tree

15 files changed

+788
-559
lines changed

15 files changed

+788
-559
lines changed

crates/dapf/src/acceptance/mod.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -381,7 +381,10 @@ impl Test {
381381
lifetime: 60,
382382
min_batch_size: reports_per_batch.try_into().unwrap(),
383383
query: DapBatchMode::LeaderSelected {
384-
max_batch_size: NonZeroU32::new(reports_per_batch.try_into().unwrap()),
384+
draft09_max_batch_size: match version {
385+
DapVersion::Draft09 => NonZeroU32::new(reports_per_batch.try_into().unwrap()),
386+
DapVersion::Latest => None,
387+
},
385388
},
386389
vdaf: self.vdaf_config,
387390
..Default::default()

crates/dapf/src/cli_parsers.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ impl FromStr for CliDapBatchMode {
155155
Ok(Self(DapBatchMode::TimeInterval))
156156
} else if let Some(size) = s.strip_prefix("leader-selected") {
157157
Ok(Self(DapBatchMode::LeaderSelected {
158-
max_batch_size: if let Some(size) = size.strip_prefix("-") {
158+
draft09_max_batch_size: if let Some(size) = size.strip_prefix("-") {
159159
Some(
160160
size.parse()
161161
.map_err(|e| format!("{s} is an invalid max batch size: {e:?}"))?,

crates/dapf/src/main.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -845,7 +845,7 @@ async fn handle_test_routes(action: TestAction, http_client: HttpClient) -> anyh
845845
let CliDapBatchMode(query) = use_or_request_from_user_or_default(
846846
query,
847847
|| DapBatchMode::LeaderSelected {
848-
max_batch_size: None,
848+
draft09_max_batch_size: None,
849849
},
850850
"query",
851851
)?;
@@ -885,7 +885,9 @@ async fn handle_test_routes(action: TestAction, http_client: HttpClient) -> anyh
885885
)?,
886886
max_batch_size: match query {
887887
DapBatchMode::TimeInterval => None,
888-
DapBatchMode::LeaderSelected { max_batch_size } => max_batch_size,
888+
DapBatchMode::LeaderSelected {
889+
draft09_max_batch_size,
890+
} => draft09_max_batch_size,
889891
},
890892
time_precision: use_or_request_from_user_or_default(
891893
time_precision,

crates/daphne-server/src/roles/aggregator.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ impl DapAggregator for crate::App {
196196
num_agg_span_shards: global_config.default_num_agg_span_shards,
197197
})
198198
},
199-
Some(task_config.task_expiration),
199+
Some(task_config.not_after()),
200200
)
201201
.await
202202
.map_err(|e| match &*e {

crates/daphne-server/src/roles/mod.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -287,7 +287,9 @@ mod test_utils {
287287
err = "command failed: unexpected max batch size"
288288
))
289289
}
290-
(2, max_batch_size) => DapBatchMode::LeaderSelected { max_batch_size },
290+
(2, max_batch_size) => DapBatchMode::LeaderSelected {
291+
draft09_max_batch_size: max_batch_size,
292+
},
291293
_ => {
292294
return Err(fatal_error!(
293295
err = "command failed: unrecognized batch mode"

crates/daphne-server/src/router/extractor.rs

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -671,17 +671,25 @@ mod test {
671671
helper_url: daphne::messages::taskprov::UrlBytes {
672672
bytes: b"http://helper".into(),
673673
},
674-
query_config: daphne::messages::taskprov::QueryConfig {
675-
time_precision: 1,
676-
max_batch_query_count: 1,
677-
min_batch_size: 1,
678-
batch_mode: daphne::messages::taskprov::BatchMode::TimeInterval,
674+
time_precision: 1,
675+
min_batch_size: 1,
676+
query_config: daphne::messages::taskprov::QueryConfig::TimeInterval,
677+
lifetime: match version {
678+
DapVersion::Draft09 => {
679+
daphne::messages::taskprov::TaskLifetime::Draft09 { expiration: 1 }
680+
}
681+
DapVersion::Latest => daphne::messages::taskprov::TaskLifetime::Latest {
682+
start: 0,
683+
duration: 1,
684+
},
679685
},
680-
task_expiration: 1,
681-
vdaf_config: daphne::messages::taskprov::VdafConfig {
682-
dp_config: daphne::messages::taskprov::DpConfig::None,
683-
var: daphne::messages::taskprov::VdafTypeVar::Prio2 { dimension: 1 },
686+
vdaf_config: daphne::messages::taskprov::VdafConfig::Prio2 { dimension: 1 },
687+
extensions: Vec::new(),
688+
draft09_max_batch_query_count: match version {
689+
DapVersion::Draft09 => Some(1),
690+
DapVersion::Latest => None,
684691
},
692+
draft09_dp_config: Some(daphne::messages::taskprov::DpConfig::None),
685693
};
686694

687695
let req = test::<()>(

crates/daphne-server/tests/e2e/e2e.rs

Lines changed: 0 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -490,73 +490,6 @@ async fn leader_upload_taskprov() {
490490
.unwrap();
491491
}
492492

493-
async fn leader_upload_taskprov_wrong_version(version: DapVersion) {
494-
let wrong_version = match version {
495-
DapVersion::Draft09 => DapVersion::Latest,
496-
DapVersion::Latest => DapVersion::Draft09,
497-
};
498-
let method = match version {
499-
DapVersion::Draft09 => &http::Method::PUT,
500-
DapVersion::Latest => &http::Method::POST,
501-
};
502-
let t = TestRunner::default_with_version(version).await;
503-
let client = t.http_client();
504-
let hpke_config_list = t.get_hpke_configs(version, client).await.unwrap();
505-
506-
let (task_config, task_id, taskprov_advertisement) = DapTaskParameters {
507-
version,
508-
min_batch_size: 10,
509-
query: DapBatchMode::TimeInterval,
510-
leader_url: t.task_config.leader_url.clone(),
511-
helper_url: t.task_config.helper_url.clone(),
512-
..Default::default()
513-
}
514-
.to_config_with_taskprov(
515-
b"cool task".to_vec(),
516-
t.now,
517-
daphne::roles::aggregator::TaskprovConfig {
518-
hpke_collector_config: &t.taskprov_collector_hpke_receiver.config,
519-
vdaf_verify_key_init: &t.taskprov_vdaf_verify_key_init,
520-
},
521-
)
522-
.unwrap();
523-
524-
let report = task_config
525-
.vdaf
526-
.produce_report_with_extensions(
527-
&hpke_config_list,
528-
t.now,
529-
&task_id,
530-
DapMeasurement::U32Vec(vec![1; 10]),
531-
match version {
532-
DapVersion::Draft09 => None,
533-
DapVersion::Latest => Some(vec![]),
534-
},
535-
vec![Extension::Taskprov],
536-
version,
537-
)
538-
.unwrap();
539-
t.leader_request_expect_abort(
540-
client,
541-
None,
542-
&format!("tasks/{}/reports", task_id.to_base64url()),
543-
method,
544-
DapMediaType::Report,
545-
Some(
546-
&taskprov_advertisement
547-
.serialize_to_header_value(wrong_version)
548-
.unwrap(),
549-
),
550-
report.get_encoded_with_param(&version).unwrap(),
551-
400,
552-
"unrecognizedTask",
553-
)
554-
.await
555-
.unwrap();
556-
}
557-
558-
async_test_versions!(leader_upload_taskprov_wrong_version);
559-
560493
#[tokio::test]
561494
async fn leader_upload_taksprov_public_errors() {
562495
let version = DapVersion::Latest;

crates/daphne-server/tests/e2e/test_runner.rs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,10 @@ impl TestRunner {
6868
Self::with(
6969
version,
7070
&DapBatchMode::LeaderSelected {
71-
max_batch_size: Some(NonZeroU32::new(MAX_BATCH_SIZE).unwrap()),
71+
draft09_max_batch_size: match version {
72+
DapVersion::Draft09 => NonZeroU32::new(MAX_BATCH_SIZE),
73+
DapVersion::Latest => None,
74+
},
7275
},
7376
)
7477
.await
@@ -178,7 +181,9 @@ impl TestRunner {
178181

179182
let (batch_mode, max_batch_size) = match t.task_config.query {
180183
DapBatchMode::TimeInterval => (1, None),
181-
DapBatchMode::LeaderSelected { max_batch_size } => (2, Some(max_batch_size)),
184+
DapBatchMode::LeaderSelected {
185+
draft09_max_batch_size,
186+
} => (2, draft09_max_batch_size),
182187
};
183188

184189
const MAX_ATTEMPTS: usize = 10;

crates/daphne-worker/src/aggregator/roles/aggregator.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,7 @@ impl DapAggregator for App {
195195
num_agg_span_shards: global_config.default_num_agg_span_shards,
196196
})
197197
},
198-
Some(task_config.task_expiration),
198+
Some(task_config.not_after()),
199199
),
200200
)
201201
.await

crates/daphne-worker/src/aggregator/roles/mod.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -269,7 +269,9 @@ mod test_utils {
269269
err = "command failed: unexpected max batch size"
270270
))
271271
}
272-
(2, max_batch_size) => DapBatchMode::LeaderSelected { max_batch_size },
272+
(2, max_batch_size) => DapBatchMode::LeaderSelected {
273+
draft09_max_batch_size: max_batch_size,
274+
},
273275
_ => {
274276
return Err(fatal_error!(
275277
err = "command failed: unrecognized batch mode"

0 commit comments

Comments
 (0)