A list of strings representing the message authentication codes (hashes)
supported, in order from most-preferred to least. Both this and
supportedCiphers can include 'none' to use no encryption or authentication,
but that must be done manually,

Sends a packet. If it's been set up, compress the data, encrypt it, and
authenticate it before sending. If key exchange is in progress and the
message is not part of key exchange, queue it to be sent later.

The current protocol state with respect to key exchange. This is either
_KEY_EXCHANGE_NONE if no key exchange is in progress (and
returns to this value after any key exchange completqes),
_KEY_EXCHANGE_REQUESTED if this side of the connection
initiated a key exchange, and _KEY_EXCHANGE_PROGRESSING if the
other side of the connection initiated a key exchange.
_KEY_EXCHANGE_NONE is the initial value (however SSH
connections begin with key exchange, so it will quickly change to another
state).

Whenever _keyExchangeState is not
_KEY_EXCHANGE_NONE, this is a list of pending
messages which were passed to sendPacket
but could not be sent because it is not legal to send them while a key
exchange is in progress. When the key exchange completes, another attempt
is made to send these messages.

Called when we receive a MSG_KEXINIT message. For a description of the
packet, see SSHTransportBase.ssh_KEXINIT(). Additionally, this method
checks if a guessed key exchange packet was sent. If it was sent, and it
guessed incorrectly, the next key exchange packet MUST be ignored.

Called to handle the beginning of a diffie-hellman-group1-sha1 key
exchange.

Unlike other message types, this is not dispatched automatically. It is
called from ssh_KEX_DH_GEX_REQUEST_OLD because an extra check
is required to determine if this is really a KEXDH_INIT message or if it is
a KEX_DH_GEX_REQUEST_OLD message.

The KEXDH_INIT (for diffie-hellman-group1-sha1 exchanges) payload:

integer e (the client's Diffie-Hellman public key)
We send the KEXDH_REPLY with our host key and signature.

This represents two different key exchange methods that share the same
integer value. If the message is determined to be a KEXDH_INIT,
_ssh_KEXDH_INIT is called to handle it. Otherwise, for
KEX_DH_GEX_REQUEST_OLD (for diffie-hellman-group-exchange-sha1)
payload:

integer ideal (ideal size for the Diffie-Hellman prime)
We send the KEX_DH_GEX_GROUP message with the group that is
closest in size to ideal.

If we were told to ignore the next key exchange packet by ssh_KEXINIT,
drop it on the floor and return.