00001 /*************************************************************************** 00002 * Copyright (C) 2005-2007 by NetSieben Technologies INC * 00003 * Author: Andrew Useckas * 00004 * Email: andrew@netsieben.com * 00005 * * 00006 * Windows Port and bugfixes: Keef Aragon <keef@netsieben.com> * 00007 * * 00008 * This program may be distributed under the terms of the Q Public * 00009 * License as defined by Trolltech AS of Norway and appearing in the * 00010 * file LICENSE.QPL included in the packaging of this file. * 00011 * * 00012 * This program is distributed in the hope that it will be useful, * 00013 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 00014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * 00015 ***************************************************************************/ 00016 00017 #ifndef NE7SSH_KEX_H 00018 #define NE7SSH_KEX_H 00019 00020 #include "ne7ssh_types.h" 00021 #include "ne7ssh_session.h" 00022 #include "ne7ssh_string.h" 00023 #include "ne7ssh_transport.h" 00024 #include "crypt.h" 00025 00029 class ne7ssh_kex 00030 { 00031 private: 00032 ne7ssh_session* session; 00033 ne7ssh_string localKex; 00034 ne7ssh_string remotKex; 00035 ne7ssh_string hostKey; 00036 ne7ssh_string e; 00037 ne7ssh_string f; 00038 ne7ssh_string k; 00039 Botan::SecureVector<Botan::byte> Ciphers, Hmacs; 00040 00044 void constructLocalKex(); 00045 00050 void makeH (Botan::SecureVector<Botan::byte>& hVector); 00051 00052 public: 00057 ne7ssh_kex(ne7ssh_session* _session); 00058 00062 ~ne7ssh_kex(); 00063 00068 bool sendInit(); 00069 00075 bool handleInit(); 00076 00081 bool sendKexDHInit(); 00082 00088 bool handleKexDHReply(); 00089 00095 bool sendKexNewKeys(); 00096 00097 }; 00098 00099 #endif