text: #pragma once
  
  #include "../types/SocketPrimitives.h"
  
  struct CBEncrReq {
      SocketString ServerID; // Appears to be empty
      SocketVarInt PublicKeyLen; // Length of Public Key
      std::unique_ptr<char[]> PublicKey;
      SocketVarInt VerifyKeyLen; // Length of Verify Token. Always 4 for Notchian servers.
      std::unique_ptr<char[]> VerifyKey; // A sequence of random bytes generated by the server
  
      friend SocketOStream& operator<<(SocketOStream& sock, const CBEncrReq& out) {
          sock << out.ServerID << out.PublicKeyLen;
          sock.Write(out.PublicKey.get(), out.PublicKeyLen.Value);
          sock << out.VerifyKeyLen;
          sock.Write(out.VerifyKey.get(), out.VerifyKeyLen.Value);
          return sock;
      }
  };