A previous commit f8cedf129c0dfb6a3461b33f90717fcf88cc534b, the DpConfig structure was replaced with an opaque byte string that the parties are meant to ignore. We don't want the parties to ignore unrecognized parameters: they should opt out instead. This change specifies that the content should be a DpConfig. We also remove the length prefix from that structure, since it's no longer needed.
The same commit removed the length prefixes from VdafConfig and QueryConfig. This is a regression because it means the encoding of the TaskConfig is no longer self-describing. In particular, it forces to conflate opt-out due to unrecognized variants (an unimplemented VDAF, say) with serialization errors. Solve this making the vdaf_config and query_config fields of the TaskConfig struct opaque, in the same way that dp_config is opaque.
Option 2.
A previous commit f8cedf129c0dfb6a3461b33f90717fcf88cc534b, the
DpConfig
structure was replaced with an opaque byte string that the parties are meant to ignore. We don't want the parties to ignore unrecognized parameters: they should opt out instead. This change specifies that the content should be aDpConfig
. We also remove the length prefix from that structure, since it's no longer needed.The same commit removed the length prefixes from
VdafConfig
andQueryConfig
. This is a regression because it means the encoding of theTaskConfig
is no longer self-describing. In particular, it forces to conflate opt-out due to unrecognized variants (an unimplemented VDAF, say) with serialization errors. Solve this making thevdaf_config
andquery_config
fields of theTaskConfig
struct opaque, in the same way thatdp_config
is opaque.