@Override
  public Bytes encode() {
    final MutableBytes bytes = MutableBytes.create(MESSAGE_LENGTH);
    ephPublicKey.getEncodedBytes().copyTo(bytes, 0);
    nonce.copyTo(bytes, ECIESHandshaker.PUBKEY_LENGTH);
    Bytes.of((byte) (token ? 0x01 : 0x00))
        .copyTo(bytes, ECIESHandshaker.PUBKEY_LENGTH + ECIESHandshaker.NONCE_LENGTH);
    return bytes;
  }
The responder's handshake message.

<p>This message must be sent by the party who responded to the RLPX connection, in response to
the initiator message.

<h3>Message structure</h3>

The following describes the message structure:

<pre>
  authRecipient -&gt; E(remote-pubk,
                     remote-ephemeral-pubk
                     || nonce
                     || 0x0)
</pre>

@see <a href=
    "https://github.com/ethereum/devp2p/blob/master/rlpx.md#encrypted-handshake">Structure of the
    responder response</a>
ethereum/p2p/src/main/java/org/hyperledger/besu/ethereum/p2p/rlpx/handshake/ecies/ResponderHandshakeMessageV1.java