Support an Authentication Message
0) Client sends authentication message encrypted using the KnockKey.
1) Server checks the handshake database for the IP address and decrypts the authentication data.
2) Server checks the user database to see if the user-name and hashed password match.
3) Server generates an AuthenticatedKey upon successful validation.
a) Key contains the user-name, length of validation, public key
b) Server stores the private key into the authentication database
c) Server sends the AuthenticatedKey
4) Client receives AuthenticatedKey and decrypts reply using the server's public key.
a) Reply has status (Authentication::Valid or Handshake::Invalid)