Performs the handshake with a peer that called us.
The goal is to obtain the public key of the peer, and split
the communication stream into two halves.
The peer needs to prove their identity by signing a randomly generated
challenge, but apart from that, the returned communication channels
will NOT be secured in any way. We assume that if the channel is
compromised after the handshake, the peer will establish another connection,
which will replace the current one.
Performs the handshake with a peer that we called. We assume that their
public key is known to us.
The goal is to authenticate ourselves, and split the communication stream
into two halves.
We need to prove our identity by signing a randomly generated
challenge, but apart from that, the returned communication channels
will NOT be secured in any way. We assume that if the channel is
compromised after the handshake, we will establish another connection,
which will replace the current one.
Wrapper that adds timeout to the function performing handshake.
Wrapper that adds timeout to the function performing handshake.