Develop and Download Open Source Software

Browse Subversion Repository

Contents of /branches/ssh_chacha20poly1305/ttssh2/ttxssh/ttxssh.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2728 - (show annotations) (download) (as text)
Sun Nov 14 15:53:21 2004 UTC (19 years, 5 months ago) by yutakakn
Original Path: ttssh2/branches/avendor/ttxssh/ttxssh.h
File MIME type: text/x-chdr
File size: 6542 byte(s)
no message

1 /*
2 Copyright (c) 1998-2001, Robert O'Callahan
3 All rights reserved.
4
5 Redistribution and use in source and binary forms, with or without modification,
6 are permitted provided that the following conditions are met:
7
8 Redistributions of source code must retain the above copyright notice, this list of
9 conditions and the following disclaimer.
10
11 Redistributions in binary form must reproduce the above copyright notice, this list
12 of conditions and the following disclaimer in the documentation and/or other materials
13 provided with the distribution.
14
15 The name of Robert O'Callahan may not be used to endorse or promote products derived from
16 this software without specific prior written permission.
17
18 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND
19 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
20 OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
21 THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
22 EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24 HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
25 OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
26 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */
28
29 /*
30 This code is copyright (C) 1998-1999 Robert O'Callahan.
31 See LICENSE.TXT for the license.
32 */
33
34 #ifndef __TTXSSH_H
35 #define __TTXSSH_H
36
37 #pragma warning(3 : 4035)
38
39 #ifdef INET6
40 #include <winsock2.h>
41 #include <ws2tcpip.h>
42 /* actual body of in6addr_any and in6addr_loopback is disappeared?? */
43 #undef IN6_IS_ADDR_LOOPBACK
44 #define IN6_IS_ADDR_LOOPBACK(a) \
45 ((*(unsigned int *)(&(a)->s6_addr[0]) == 0) && \
46 (*(unsigned int *)(&(a)->s6_addr[4]) == 0) && \
47 (*(unsigned int *)(&(a)->s6_addr[8]) == 0) && \
48 (*(unsigned int *)(&(a)->s6_addr[12]) == ntohl(1)))
49 /* work around for MS Platform SDK Oct 2000 */
50 #include <malloc.h> /* prevent of conflict stdlib.h */
51 #endif /* INET6 */
52 #include <stdlib.h>
53 #include <crtdbg.h>
54
55 #include "teraterm.h"
56 #include "tttypes.h"
57 #include "ttplugin.h"
58
59 typedef struct _TInstVar FAR * PTInstVar;
60
61 #include "util.h"
62 #include "pkt.h"
63 #include "ssh.h"
64 #include "auth.h"
65 #include "crypt.h"
66 #include "hosts.h"
67 #include "fwd.h"
68
69 #include <openssl/dh.h>
70 #include <openssl/evp.h>
71 #include "buffer.h"
72
73 HANDLE hInst; /* Instance handle of TTXSSH.DLL */
74
75 #define ID_ABOUTMENU 62501
76 #define ID_SSHAUTH 62502
77 #define ID_SSHSETUPMENU 62503
78 #define ID_SSHUNKNOWNHOST 62504
79 #define ID_SSHDIFFERENTHOST 62505
80 #define ID_SSHAUTHSETUPMENU 62506
81 #define ID_SSHASYNCMESSAGEBOX 62507
82 #define ID_SSHFWDSETUPMENU 62508
83
84 /*
85 These are the fields that WOULD go in Teraterm's 'ts' structure, if
86 we could put them there.
87 */
88 typedef struct _TS_SSH {
89 BOOL Enabled;
90 int CompressionLevel; /* 0 = NONE, else 1-9 */
91 char DefaultUserName[256];
92
93 /* this next option is a string of digits. Each digit represents a
94 cipher. The first digit is the most preferred cipher, and so on.
95 The digit SSH_CIPHER_NONE signifies that any ciphers after it are
96 disabled. */
97 char CipherOrder[16];
98
99 char KnownHostsFiles[2048];
100 int DefaultAuthMethod;
101 char DefaultRhostsLocalUserName[256];
102 char DefaultRhostsHostPrivateKeyFile[1024];
103 char DefaultRSAPrivateKeyFile[1024];
104
105 char DefaultForwarding[2048];
106 BOOL TryDefaultAuth;
107
108 int LogLevel; /* 0 = NONE, 100 = Verbose */
109 int WriteBufferSize;
110 int LocalForwardingIdentityCheck;
111
112 int ssh_protocol_version; // SSH version (2004.10.11 yutaka)
113 } TS_SSH;
114
115 typedef struct _TInstVar {
116 PTTSet ts;
117 PComVar cv;
118
119 /* shared memory for settings across instances. Basically it's
120 a cache for the INI file.*/
121 TS_SSH FAR * ts_SSH;
122
123 int fatal_error;
124 int showing_err;
125 char FAR * err_msg;
126
127 Tconnect Pconnect;
128 Trecv Precv;
129 Tsend Psend;
130 TWSAAsyncSelect PWSAAsyncSelect;
131 TWSAGetLastError PWSAGetLastError;
132
133 PReadIniFile ReadIniFile;
134 PWriteIniFile WriteIniFile;
135 PParseParam ParseParam;
136
137 SOCKET socket;
138 HWND NotificationWindow;
139 unsigned int notification_msg;
140 long notification_events;
141 HICON OldSmallIcon;
142 HICON OldLargeIcon;
143
144 BOOL hostdlg_activated;
145 BOOL hostdlg_Enabled;
146
147 int protocol_major;
148 int protocol_minor;
149
150 PKTState pkt_state;
151 SSHState ssh_state;
152 AUTHState auth_state;
153 CRYPTState crypt_state;
154 HOSTSState hosts_state;
155 FWDState fwd_state;
156
157 /* The settings applied to the current session. The user may change
158 the settings but usually we don't want that to affect the session
159 in progress (race conditions). So user setup changes usually
160 modify the 'settings' field below. */
161 TS_SSH session_settings;
162
163 /* our copy of the global settings. This is synced up with the shared
164 memory only when we do a ReadIniFile or WriteIniFile
165 (i.e. the user loads or saves setup) */
166 TS_SSH settings;
167
168 // SSH2
169 DH *kexdh;
170 char server_version_string[128];
171 char client_version_string[128];
172 buffer_t *my_kex;
173 buffer_t *peer_kex;
174 enum kex_exchange kex_type; // KEX algorithm
175 enum hostkey_type hostkey_type;
176 SSHCipher ctos_cipher;
177 SSHCipher stoc_cipher;
178 int we_need;
179 int key_done;
180 int rekeying;
181 char *session_id;
182 int session_id_len;
183 Newkeys ssh2_keys[MODE_MAX];
184 EVP_CIPHER_CTX evpcip[MODE_MAX];
185 int userauth_success;
186 int remote_id;
187 int session_nego_status;
188 unsigned int local_window;
189 unsigned int local_window_max;
190 unsigned int local_consumed;
191 unsigned int local_maxpacket;
192 unsigned int remote_window;
193 unsigned int remote_maxpacket;
194 int client_key_bits;
195 int server_key_bits;
196 int kexgex_min;
197 int kexgex_bits;
198 int kexgex_max;
199
200 } TInstVar;
201
202 #define LOG_LEVEL_FATAL 5
203 #define LOG_LEVEL_ERROR 10
204 #define LOG_LEVEL_URGENT 20
205 #define LOG_LEVEL_WARNING 30
206 #define LOG_LEVEL_VERBOSE 100
207
208 #define SSHv1(pvar) ((pvar)->protocol_major == 1)
209 #define SSHv2(pvar) ((pvar)->protocol_major == 2)
210
211 void notify_established_secure_connection(PTInstVar pvar);
212 void notify_closed_connection(PTInstVar pvar);
213 void notify_nonfatal_error(PTInstVar pvar, char FAR * msg);
214 void notify_fatal_error(PTInstVar pvar, char FAR * msg);
215 void notify_verbose_message(PTInstVar pvar, char FAR * msg, int level);
216
217 void get_teraterm_dir_relative_name(char FAR * buf, int bufsize, char FAR * basename);
218 int copy_teraterm_dir_relative_path(char FAR * dest, int destsize, char FAR * basename);
219
220 #endif

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26