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 7479 - (show annotations) (download) (as text)
Wed Mar 13 15:32:17 2019 UTC (5 years ago) by zmatsuo
Original Path: trunk/ttssh2/ttxssh/ttxssh.h
File MIME type: text/x-chdr
File size: 10438 byte(s)
wspiapi.h を include した
ws2_32.dll関連でエラーが出ないバイナリがビルドできるようになった
従来は _WIN32_WINNT のdefine具合よってWindows95でエラーが出るバイナリとなっていた
1 /*
2 * Copyright (c) 1998-2001, Robert O'Callahan
3 * (C) 2004-2019 TeraTerm Project
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:
9 *
10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution.
15 * 3. The name of the author may not be used to endorse or promote products
16 * derived from this software without specific prior written permission.
17 *
18 * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
19 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
20 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
21 * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT,
22 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
23 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
27 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 */
29
30 /*
31 This code is copyright (C) 1998-1999 Robert O'Callahan.
32 See LICENSE.TXT for the license.
33 */
34
35 #ifndef __TTXSSH_H
36 #define __TTXSSH_H
37
38 #pragma warning(3 : 4035)
39
40 /* VS2015(VC14.0)�����AWSASocketA(), inet_ntoa() ������API��deprecated��������
41 * �x�������������A�x�����}�~�����B�����������u���������AVS2005(VC8.0)���r���h
42 * �����������������A�x�����}�~���������������B
43 */
44 #if _MSC_VER >= 1800 // VSC2013(VC12.0) or later
45 #ifndef _WINSOCK_DEPRECATED_NO_WARNINGS
46 #define _WINSOCK_DEPRECATED_NO_WARNINGS
47 #endif
48 #endif
49
50 #include <winsock2.h>
51 #include <ws2tcpip.h>
52 #include <wspiapi.h>
53 /* actual body of in6addr_any and in6addr_loopback is disappeared?? */
54 #undef IN6_IS_ADDR_LOOPBACK
55 #define IN6_IS_ADDR_LOOPBACK(a) \
56 ((*(unsigned int *)(&(a)->s6_addr[0]) == 0) && \
57 (*(unsigned int *)(&(a)->s6_addr[4]) == 0) && \
58 (*(unsigned int *)(&(a)->s6_addr[8]) == 0) && \
59 (*(unsigned int *)(&(a)->s6_addr[12]) == ntohl(1)))
60 /* work around for MS Platform SDK Oct 2000 */
61 #include <malloc.h> /* prevent of conflict stdlib.h */
62 #include <stdlib.h>
63 #include <stdarg.h>
64 #include <crtdbg.h>
65
66 #include "i18n.h"
67 #include "ttlib.h"
68
69 typedef struct _TInstVar *PTInstVar;
70
71 #include "ttxssh-version.h"
72 #include "util.h"
73 #include "pkt.h"
74 #include "ssh.h"
75 #include "auth.h"
76 #include "crypt.h"
77 #include "hosts.h"
78 #include "fwd.h"
79
80 #include <openssl/dh.h>
81 #include <openssl/ec.h>
82 #include <openssl/evp.h>
83 #include "buffer.h"
84
85 /* tttypes.h �����`���������� EM �}�N���� openssl/rsa.h (OpenSSL 0.9.8)�������v���g�^�C�v������
86 * �������������d�����������������A�r���h�G���[�������B���L3�w�b�_��include���u�����L�����������B
87 * (2005.7.9 yutaka)
88 */
89 #include "teraterm.h"
90 #include "tttypes.h"
91 #include "ttplugin.h"
92
93 HANDLE hInst; /* Instance handle of TTXSSH.DLL */
94
95 #define ID_SSHSCPMENU 52110
96 #define ID_SSHSETUPMENU 52310
97 #define ID_SSHAUTHSETUPMENU 52320
98 #define ID_SSHFWDSETUPMENU 52330
99 #define ID_SSHKEYGENMENU 52340
100 #define ID_ABOUTMENU 52910
101
102 #define ID_SSHAUTH 62501
103 #define ID_SSHUNKNOWNHOST 62502
104 #define ID_SSHDIFFERENTKEY 62503
105 #define ID_SSHASYNCMESSAGEBOX 62504
106
107 #define OPTION_NONE 0
108 #define OPTION_CLEAR 1
109 #define OPTION_REPLACE 2
110
111 /*
112 * DisablePopupMessage �p���r�b�g���`
113 */
114 #define POPUP_MSG_default 0
115 #define POPUP_MSG_FWD_received_data (1 << 0)
116
117
118 /*
119 * Host key rotation
120 */
121 #define SSH_UPDATE_HOSTKEYS_NO 0
122 #define SSH_UPDATE_HOSTKEYS_YES 1
123 #define SSH_UPDATE_HOSTKEYS_ASK 2
124 #define SSH_UPDATE_HOSTKEYS_MAX 3
125
126 /*
127 * Server compatibility flag
128 */
129 #define SSH_BUG_DHGEX_LARGE 0x00000001
130
131
132 /*
133 These are the fields that WOULD go in Tera Term's 'ts' structure, if
134 we could put them there.
135 */
136 typedef struct _TS_SSH {
137 BOOL Enabled;
138 int CompressionLevel; /* 0 = NONE, else 1-9 */
139 char DefaultUserName[256];
140
141 /* this next option is a string of digits. Each digit represents a
142 cipher. The first digit is the most preferred cipher, and so on.
143 The digit SSH_CIPHER_NONE signifies that any ciphers after it are
144 disabled. */
145 char CipherOrder[SSH_CIPHER_MAX+2];
146
147 char KnownHostsFiles[2048];
148 int DefaultAuthMethod;
149 char DefaultRhostsLocalUserName[256];
150 char DefaultRhostsHostPrivateKeyFile[1024];
151 char DefaultRSAPrivateKeyFile[1024];
152
153 char DefaultForwarding[4096];
154 BOOL TryDefaultAuth;
155
156 int LogLevel; /* 0 = NONE, 100 = Verbose */
157 int WriteBufferSize;
158
159 int ssh_protocol_version; // SSH version (2004.10.11 yutaka)
160 int ssh_heartbeat_overtime; // SSH heartbeat(keepalive) (2004.12.11 yutaka)
161 // whether password will permanently store on heap memory (2006.8.5 yutaka)
162 int remember_password;
163
164 // try auth with "none" method for disable unsupported on dialog (2007.9.24 maya)
165 BOOL CheckAuthListFirst;
166
167 // Enable connection to the server that has RSA key length less than 768 bit (2008.9.11 maya)
168 BOOL EnableRsaShortKeyServer;
169
170 // Enable Agent forwarding
171 BOOL ForwardAgent;
172
173 // Confirm Agent forwarding
174 BOOL ForwardAgentConfirm;
175
176 // Confirm Agent forwarding
177 BOOL ForwardAgentNotify;
178
179 // KEX order(derived from teraterm.ini)
180 char KexOrder[KEX_DH_MAX+1];
181 char HostKeyOrder[KEY_MAX+1];
182 char MacOrder[HMAC_MAX+1];
183 char CompOrder[COMP_MAX+1];
184
185 BOOL VerifyHostKeyDNS;
186
187 int IconID;
188
189 int DisablePopupMessage;
190
191 char X11Display[128];
192
193 int UpdateHostkeys;
194
195 int GexMinimalGroupSize;
196
197 int AuthBanner;
198 } TS_SSH;
199
200 typedef struct _TInstVar {
201 PTTSet ts;
202 PComVar cv;
203
204 /* shared memory for settings across instances. Basically it's
205 a cache for the INI file.*/
206 TS_SSH *ts_SSH;
207
208 int fatal_error;
209 int showing_err;
210 char *err_msg;
211
212 Tconnect Pconnect;
213 Trecv Precv;
214 Tsend Psend;
215 TWSAAsyncSelect PWSAAsyncSelect;
216 TWSAGetLastError PWSAGetLastError;
217
218 PReadIniFile ReadIniFile;
219 PWriteIniFile WriteIniFile;
220 PParseParam ParseParam;
221
222 HMENU FileMenu;
223
224 SOCKET socket;
225 HWND NotificationWindow;
226 unsigned int notification_msg;
227 long notification_events;
228 HICON OldSmallIcon;
229 HICON OldLargeIcon;
230
231 BOOL hostdlg_activated;
232 BOOL hostdlg_Enabled;
233
234 int protocol_major;
235 int protocol_minor;
236
237 PKTState pkt_state;
238 SSHState ssh_state;
239 AUTHState auth_state;
240 CRYPTState crypt_state;
241 HOSTSState hosts_state;
242 FWDState fwd_state;
243
244 /* The settings applied to the current session. The user may change
245 the settings but usually we don't want that to affect the session
246 in progress (race conditions). So user setup changes usually
247 modify the 'settings' field below. */
248 TS_SSH session_settings;
249
250 /* our copy of the global settings. This is synced up with the shared
251 memory only when we do a ReadIniFile or WriteIniFile
252 (i.e. the user loads or saves setup) */
253 TS_SSH settings;
254
255 // SSH2
256 DH *kexdh;
257 char server_version_string[128];
258 char client_version_string[128];
259 buffer_t *my_kex;
260 buffer_t *peer_kex;
261 kex_algorithm kex_type; // KEX algorithm
262 ssh_keytype hostkey_type;
263 SSH2Cipher *ciphers[MODE_MAX];
264 SSH2Mac *macs[MODE_MAX];
265 compression_type ctos_compression;
266 compression_type stoc_compression;
267 int we_need;
268 int key_done;
269 int rekeying;
270 char *session_id;
271 int session_id_len;
272 SSHKeys ssh2_keys[MODE_MAX];
273 EVP_CIPHER_CTX evpcip[MODE_MAX];
274 int userauth_success;
275 int shell_id;
276 /*int remote_id;*/
277 int session_nego_status;
278 /*
279 unsigned int local_window;
280 unsigned int local_window_max;
281 unsigned int local_consumed;
282 unsigned int local_maxpacket;
283 unsigned int remote_window;
284 unsigned int remote_maxpacket;
285 */
286 int client_key_bits;
287 int server_key_bits;
288 int kexgex_min;
289 int kexgex_bits;
290 int kexgex_max;
291 int ssh2_autologin;
292 int ask4passwd;
293 SSHAuthMethod ssh2_authmethod;
294 char ssh2_username[MAX_PATH];
295 char ssh2_password[MAX_PATH];
296 char ssh2_keyfile[MAX_PATH];
297 time_t ssh_heartbeat_tick;
298 HANDLE ssh_heartbeat_thread;
299 int keyboard_interactive_password_input;
300 int userauth_retry_count;
301 buffer_t *decomp_buffer;
302 buffer_t *authbanner_buffer;
303 char *ssh2_authlist;
304 BOOL tryed_ssh2_authlist;
305 HWND ssh_hearbeat_dialog;
306
307 /* Pageant �������M�p */
308 unsigned char *pageant_key;
309 unsigned char *pageant_curkey;
310 int pageant_keylistlen;
311 int pageant_keycount;
312 int pageant_keycurrent;
313 BOOL pageant_keyfinal;// SSH2 PK_OK ������������ TRUE ������
314
315 // agent forward
316 BOOL agentfwd_enable;
317
318 BOOL origDisableTCPEchoCR;
319
320 BOOL nocheck_known_hosts;
321
322 EC_KEY *ecdh_client_key;
323
324 int dns_key_check;
325
326 unsigned int server_compat_flag;
327
328 void *hostkey_ctx;
329
330 BOOL use_subsystem;
331 char subsystem_name[256];
332
333 BOOL nosession;
334 } TInstVar;
335
336 // �o�[�W���������������������X�������B ��: TTSSH_2-81_TS_data
337 #define TTSSH_FILEMAPNAME "TTSSH_" TTSSH_VERSION_STR("-") "_TS_data"
338
339 #define LOG_LEVEL_FATAL 5
340 #define LOG_LEVEL_ERROR 10
341 #define LOG_LEVEL_WARNING 30
342 #define LOG_LEVEL_NOTICE 50
343 #define LOG_LEVEL_INFO 80
344 #define LOG_LEVEL_VERBOSE 100
345 #define LOG_LEVEL_SSHDUMP 200
346
347 #define SSHv1(pvar) ((pvar)->protocol_major == 1)
348 #define SSHv2(pvar) ((pvar)->protocol_major == 2)
349
350 #define LogLevel(pvar, level) ((pvar)->settings.LogLevel >= (level))
351
352 void notify_established_secure_connection(PTInstVar pvar);
353 void notify_closed_connection(PTInstVar pvar, char *send_msg);
354 void notify_nonfatal_error(PTInstVar pvar, char *msg);
355 void notify_fatal_error(PTInstVar pvar, char *msg, BOOL send_disconnect);
356 void logputs(int level, char *msg);
357 void logprintf(int level, char *fmt, ...);
358 void logprintf_hexdump(int level, char *data, int len, char *fmt, ...);
359
360 void get_teraterm_dir_relative_name(char *buf, int bufsize, char *basename);
361 int copy_teraterm_dir_relative_path(char *dest, int destsize, char *basename);
362 int uuencode(unsigned char *src, int srclen, unsigned char *target, int targsize);
363
364 #endif

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