Two changes:
1) I made it possible to retrieve the decrypted (via passphrase) private key from an IdentityFile.
2) The Session _hostKey variable was never set, so I added a method to KeyExchange to make it retrievable, then I set the member variable after performing the key exchange.