Beispiel #1
0
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
Beispiel #2
0
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