extend `SecaggRequest` message with `job_id`
Content of MR
This MR partially implements #355 (closed):
- extend the
SecaggRequest
message withjob_id
field + adapt node/server side handling of secagg context setup. This is a needed step to save/load secagg context on node side.
This MR also covers:
- partial rewrite of secagg implementation to implement additional rule: secagg server key context element is specific to a
job_id
, while secagg biprime context element is common to all jobs (emptyjob_id
or nojob_id
parameter, depending on the class) - partial rewrite of node side secagg implementation to better check the content of
SecaggRequest
message (move fromNode()
toSecaggSetup()
, useValidate()
, additional checks on content) - fix error in
SecaggRequest
message handling on node side: catch more bad message cases, send reply message in case of error
Guidelines for MR review
You may use the notebooks/general-tutorial-secagg.ipynb
. At least this notebook should work (tested in my env).
General:
- give a glance to DoD
- note: added full unit test coverage for additions
- check coding rules and coding style
- check docstrings (eg run
tests/docstrings/check_docstrings
)- note: done, it builds
Specific to some cases:
- update all conda envs consistently (
development
andvpn
, Linux and MacOS)- note: does not apply, no conda update needed for this MR
- if modified researcher (eg new attributes in classes) check if breakpoint needs update (
breakpoint
/load_breakpoint
inExperiment()
,save_state
/load_state
in aggregators, strategies, secagg, etc.)- note: tested saving/loading breakpoint, see secagg tutorial notebook and unit tests