summaryrefslogtreecommitdiff
path: root/src/protocol/fqterm_ssh_socket.cpp
diff options
context:
space:
mode:
authorIru Cai <mytbk920423@gmail.com>2018-04-28 21:50:54 +0800
committerIru Cai <mytbk920423@gmail.com>2018-04-30 15:20:28 +0800
commitef70cc73c69d04e93c9af5fb49c5d762ba226801 (patch)
tree2f96375bb6047f1a6161c00f659e222711db3cd7 /src/protocol/fqterm_ssh_socket.cpp
parentbec678f312d282cd467a4d13dbf29c37ea111ce7 (diff)
downloadfqterm-ef70cc73c69d04e93c9af5fb49c5d762ba226801.tar.xz
Add a connection info field in FQTermSocket
- the connection info record contains the name of the cipher and MAC algorithms, and the key hash - after doing a key exchange, the connection info will be filled
Diffstat (limited to 'src/protocol/fqterm_ssh_socket.cpp')
-rw-r--r--src/protocol/fqterm_ssh_socket.cpp17
1 files changed, 14 insertions, 3 deletions
diff --git a/src/protocol/fqterm_ssh_socket.cpp b/src/protocol/fqterm_ssh_socket.cpp
index 20612bf..c48fc51 100644
--- a/src/protocol/fqterm_ssh_socket.cpp
+++ b/src/protocol/fqterm_ssh_socket.cpp
@@ -161,11 +161,22 @@ void FQTermSSHSocket::init(int ssh_version) {
key_exchanger_->initKex(packet_receiver_, packet_sender_);
}
+
+ conn_info.proto = PROTO_SSH;
+ conn_info.ssh_proto_info.proto_version = ssh_version;
}
-void FQTermSSHSocket::kexOK() {
- FQ_TRACE("sshsocket", 3) << "Key exchange completed!";
- authentication_->initAuth(packet_receiver_, packet_sender_);
+void FQTermSSHSocket::kexOK()
+{
+ FQ_TRACE("sshsocket", 3) << "Key exchange completed!";
+ conn_info.ssh_proto_info.c2s_cipher = packet_sender_->cipher->name;
+ conn_info.ssh_proto_info.s2c_cipher = packet_receiver_->cipher->name;
+ if (packet_sender_->mac)
+ conn_info.ssh_proto_info.c2s_mac = packet_sender_->mac->name;
+ if (packet_receiver_->mac)
+ conn_info.ssh_proto_info.s2c_mac = packet_receiver_->mac->name;
+ key_exchanger_->hostKeyHash(conn_info.ssh_proto_info.hash);
+ authentication_->initAuth(packet_receiver_, packet_sender_);
}
void FQTermSSHSocket::authOK() {