Draft: draft-gpew-priv-ppm

Commentary: Minor changes / clarifications : Clarify how to handle empty Transition sequences Handle repeated nonces by aborting . While at it , this changes how the helper handles unrecognized nonces to be consistent with how the leader handles unrecognized nonces . Move task / job ID to top of AggregateReq
Paragraph (version A):
The message contains the PPM task ID, the aggregation job ID assigned
by the leader, an opaque, VDAF-specific aggregation parameter, and
the helper's report shares.
Paragraph (version B):
The message contains an opaque, VDAF-specific aggregation parameter
and the helper's report shares.
Paragraph (version A):
Next, the leader extracts its own report shares and computes the
initial preparation state for each as described in prep-start.  It
then removes from the report sequence any report for which the
transition state is FAILED.
Paragraph (version B):
Next, the leader extracts its own report shares and computes the
initial preparation state for each as described in prep-start.  It
then removes from the report sequence any report for which the
transition state is FAILED.  If the resulting sequence is empty, then
the leader halts without issuing a request.
Paragraph (version A):
Next, it checks that the sequence of Transition messages corresponds
to the ReportShare sequence of the AggregateInitReq.  If any message
appears out of order or is missing, or a transition has an
unrecognized nonce, then the leader MUST abort with error
"unrecognizedMessage".
Paragraph (version B):
Next, it checks that the sequence of Transition messages corresponds
to the ReportShare sequence of the AggregateInitReq.  If any message
appears out of order, is missing, has an unrecognized nonce, or if
two messages have the same nonce, then the leader MUST abort with
error "unrecognizedMessage".
Paragraph (version A):
Finally, the leader removes from the report sequence any report for
which the corresponding state is FAILED and proceeds as described in
the next section.
Paragraph (version B):
Finally, the leader removes from the report sequence any report for
which the corresponding state is FAILED and proceeds as described in
the next section, even if the sequence is empty.
Paragraph (version A):
The contents are the PPM task ID, the aggregation job ID, and the
sequence of Transition messages corresponding to the report sequence
being aggregated.  The sequences MUST have the same order.
Paragraph (version A):
After verifying the authentication tag as described in aggregate-
message-auth, the helper processes the AggregateContinueReq as
follows.  It first scans "AggregateContinueReq.seq" to check for any
reports that may have been dropped by the leader in the previous
step.
Paragraph (version A):
Next, the helper processes the Transition messages from the leader.
If any leader Transition contains an unrecognized nonce, the Helper
sends a Transition with "tran_type = failed" and "TransitionError =
unrecognized-nonce".  [CP: It may be better to go to abort rather
than just fail, since this s tentamount to sending a malformed
aggregate request.]  If any Transition appears out-of-order, the
helper MUST abort with error "unrecognizedMessage".
Paragraph (version A):
Next, it constructs a transition as described in prep-helper.  If any
state transition results in INVALID, the helper MUST abort with error
"unrecognizedMessage".
Paragraph (version A):
Next, the helper constructs an AggregateResp containing its next
flight of Transition messages and it updated state.  The messages
MUST appear in the same order as "AggregateContinueReq.seq".  The
helper's response is an HTTP 200 OK whose body is the AggregateResp.
Paragraph (version B):
The message consists of a sequence of Transition messages
corresponding to the report sequence being aggregated.  The sequences
MUST have the same order.
Paragraph (version B):
After verifying the authentication tag as described in aggregate-
message-auth, the helper begins by scanning
"AggregateContinueReq.seq" to check for any reports that may have
been dropped by the leader in the previous step.
Paragraph (version B):
Next, the helper processes the Transition messages from the leader.
If any message appears out of order or has an unrecognized nonce, or
if any two messages have the same nonce, then the helper MUST abort
with error "unrecognizedMessage".
Paragraph (version B):
Next, the helper processes each Transition as described in prep-
helper.  If any state transition results in INVALID, the helper MUST
abort with error "unrecognizedMessage".
Paragraph (version B):
Next, the helper constructs an AggregateResp containing its next
flight of Transition messages and its updated state.  The messages
MUST appear in the same order as "AggregateContinueReq.seq".  The
helper's response is an HTTP 200 OK whose body is the AggregateResp.
The leader processes this message as described in aggregate-init-
request.