跳转至

peer_client

PeerClient(server_addr, party_name, peer_cert=None)

Bases: base_client.BaseClient

The client for peer party communication.

Source code in iflearner/communication/peer/peer_client.py
def __init__(self, server_addr: str, party_name: str, peer_cert: str = None) -> None:
    super().__init__(server_addr, peer_cert)
    self._party_name = party_name

get_DH_public_key()

Get Diffie-Hellman public key from specified server.

Returns:

Type Description
List

The public key.

Source code in iflearner/communication/peer/peer_client.py
def get_DH_public_key(self) -> List:
    """Get Diffie-Hellman public key from specified server.

    Returns:
        The public key.
    """

    while True:
        try:
            req = base_pb2.BaseRequest(
                party_name=self._party_name,
                type=message_type.MSG_DH_PUBLIC_KEY,
                data=DiffieHellmanInst.generate_public_key(),
            )
            resp = self._send(req)
            public_key = resp.data

            logger.info(f"Public key: {public_key}")
            return public_key
        except Exception as e:
            logger.info(e)
            time.sleep(3)

get_SMPC_random_key(key)

Get random value from the other party.

Returns:

Type Description
float

A float value.

Source code in iflearner/communication/peer/peer_client.py
def get_SMPC_random_key(self, key: str) -> float:
    """Get random value from the other party.

    Returns:
        A float value.
    """

    req = base_pb2.BaseRequest(
        party_name=self._party_name, type=message_type.MSG_SMPC_RANDOM_KEY
    )
    resp = self._send(req)

    random_float = float(aes.AESCipher(key).decrypt(resp.data))
    logger.info(f"Random float: {random_float}")

    return random_float