def protobuf_session_deserializer(proto: MPCSession_PB) -> Session: id_session = UUID(bytes=proto.uuid) rank = proto.rank conf_dict = Dict._proto2object(proto=proto.config) _conf_dict = {key: value for key, value in conf_dict.items()} conf = Config(**_conf_dict) ring_size = int.from_bytes(proto.ring_size, "big") nr_parties = int.from_bytes(proto.nr_parties, "big") protocol_deserialized = proto.protocol.decode() session = Session( config=conf, uuid=id_session, ring_size=ring_size, protocol=protocol_deserialized, ) session.rank = rank session.crypto_store = CryptoStore() session.nr_parties = nr_parties if "session" in globals(): warning("Overwritting session for MPC") globals()["session"] = session return session
def protobuf_session_deserializer(proto: MPCSession_PB) -> Session: id_session: Optional[str] = None if proto.uuid: id_session = proto.uuid saved_session = sympc.session.get_session(id_session) if saved_session and id_session == str(saved_session.uuid): return saved_session rank = proto.rank conf_dict = Dict._proto2object(proto=proto.config) _conf_dict = {key: value for key, value in conf_dict.items()} conf = Config(**_conf_dict) ring_size = int.from_bytes(proto.ring_size, "big") nr_parties = int.from_bytes(proto.nr_parties, "big") protocol_deserialized = Protocol.registered_protocols[ proto.protocol.name]() protocol_deserialized.security_type = proto.protocol.security_type session = Session( config=conf, ring_size=ring_size, protocol=protocol_deserialized, ) session.rank = rank session.crypto_store = CryptoStore() session.nr_parties = nr_parties if id_session is not None: session.uuid = UUID(id_session) if saved_session and id_session != str(saved_session.uuid): warning("Changing already set session") sympc.session.set_session(session) return session