data class Handshake<out T>
Handshake(payload: T, publicKey: PublicKey, sessionID: Long)
val payload: T
val publicKey: PublicKey
val sessionID: Long