Skip to contents

Common base for CKKSMaster and ThresholdMaster (and the frozen legacy PaillierMaster). Concrete masters carry whatever context and public keys their cryptographic backend needs; the protocol body in master_aggregate() reaches sites through contribute() and recovers the total through the decrypt() generic, which dispatches on the concrete master class, so the same protocol runs over any backend.

Usage

Master(name = character(0), state = new.env(parent = emptyenv()))

Arguments

name

short identifier shown in printed output.

state

an environment for mutable bookkeeping.

Value

nothing — this class is abstract, so calling it raises an error instead of returning an object. It exists so that decrypt() and master_aggregate() dispatch on a common parent. Construct a concrete master with make_ckks_master() or make_threshold_master().

Details

A master never encrypts site data, and has no encryption entry point at all. Each party encrypts its own values with encrypt(), which for a Site takes nothing but the site itself: it encrypts with the public parameters it was handed when it was wired. The asymmetry is deliberate and worth reading off the API: decryption is privileged — it needs secret material, or the standing to convene every site — while encryption needs only public material and is available to anyone.