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 9210 - (show annotations) (download) (as text)
Sat Apr 17 08:36:59 2021 UTC (2 years, 10 months ago) by nmaya
File MIME type: text/x-chdr
File size: 11432 byte(s)
ファイルを分割・コードを移動・関数名を整理・新しい OpenSSH からインポート

- OpenSSH からインポート
  cipher-3des1.c from OpenSSH-7.5p1
  ssherr.c from OpenSSH-8.5p1
  ssherr.h from OpenSSH-8.5p1
1 /*
2 * Copyright (c) 1998-2001, Robert O'Callahan
3 * (C) 2004- 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 "cipher.h"
78 #include "comp.h"
79 #include "kex.h"
80 #include "hostkey.h"
81 #include "key.h"
82 #include "hosts.h"
83 #include "fwd.h"
84
85 #include <openssl/dh.h>
86 #include <openssl/ec.h>
87 #include <openssl/evp.h>
88 #include "buffer.h"
89
90 /* tttypes.h �����`���������� EM �}�N���� openssl/rsa.h (OpenSSL 0.9.8)�������v���g�^�C�v������
91 * �������������d�����������������A�r���h�G���[�������B���L3�w�b�_��include���u�����L�����������B
92 * (2005.7.9 yutaka)
93 */
94 #include "teraterm.h"
95 #include "tttypes.h"
96 #include "ttplugin.h"
97
98 #if defined(_MSC_VER) && !defined(_Printf_format_string_)
99 // ���`�������������������������������������`��������
100 #define _Printf_format_string_
101 #endif
102
103 extern HANDLE hInst; /* Instance handle of TTXSSH.DLL */
104
105 #define ID_SSHSCPMENU 52110
106 #define ID_SSHSETUPMENU 52310
107 #define ID_SSHAUTHSETUPMENU 52320
108 #define ID_SSHFWDSETUPMENU 52330
109 #define ID_SSHKEYGENMENU 52340
110 #define ID_ABOUTMENU 52910
111
112 #define ID_SSHAUTH 62501
113 #define ID_SSHUNKNOWNHOST 62502
114 #define ID_SSHDIFFERENTKEY 62503
115 #define ID_SSHASYNCMESSAGEBOX 62504
116 #define ID_SSHDIFFERENT_TYPE_KEY 62505
117
118 #define OPTION_NONE 0
119 #define OPTION_CLEAR 1
120 #define OPTION_REPLACE 2
121
122 /*
123 * DisablePopupMessage �p���r�b�g���`
124 */
125 #define POPUP_MSG_default 0
126 #define POPUP_MSG_FWD_received_data (1 << 0)
127
128
129 /*
130 * Host key rotation
131 */
132 #define SSH_UPDATE_HOSTKEYS_NO 0
133 #define SSH_UPDATE_HOSTKEYS_YES 1
134 #define SSH_UPDATE_HOSTKEYS_ASK 2
135 #define SSH_UPDATE_HOSTKEYS_MAX 3
136
137 /*
138 * Server compatibility flag
139 */
140 #define SSH_BUG_DHGEX_LARGE 0x00000001
141
142
143 /*
144 These are the fields that WOULD go in Tera Term's 'ts' structure, if
145 we could put them there.
146 */
147 typedef struct _TS_SSH {
148 BOOL Enabled;
149 int CompressionLevel; /* 0 = NONE, else 1-9 */
150
151 int DefaultUserType; /* 0/1/2 = no input/DefaultUserName/Windows logon user */
152 char DefaultUserName[256];
153
154 /* this next option is a string of digits. Each digit represents a
155 cipher. The first digit is the most preferred cipher, and so on.
156 The digit SSH_CIPHER_NONE signifies that any ciphers after it are
157 disabled. */
158 char CipherOrder[SSH_CIPHER_MAX+2];
159
160 char KnownHostsFiles[2048];
161 int DefaultAuthMethod;
162 char DefaultRhostsLocalUserName[256];
163 char DefaultRhostsHostPrivateKeyFile[1024];
164 char DefaultRSAPrivateKeyFile[1024];
165
166 char DefaultForwarding[4096];
167 BOOL TryDefaultAuth;
168
169 int LogLevel; /* 0 = NONE, 100 = Verbose */
170 int WriteBufferSize;
171
172 int ssh_protocol_version; // SSH version (2004.10.11 yutaka)
173 int ssh_heartbeat_overtime; // SSH heartbeat(keepalive) (2004.12.11 yutaka)
174 // whether password will permanently store on heap memory (2006.8.5 yutaka)
175 int remember_password;
176
177 // try auth with "none" method for disable unsupported on dialog (2007.9.24 maya)
178 BOOL CheckAuthListFirst;
179
180 // Enable connection to the server that has RSA key length less than 768 bit (2008.9.11 maya)
181 BOOL EnableRsaShortKeyServer;
182
183 // Enable Agent forwarding
184 BOOL ForwardAgent;
185
186 // Confirm Agent forwarding
187 BOOL ForwardAgentConfirm;
188
189 // Confirm Agent forwarding
190 BOOL ForwardAgentNotify;
191
192 // KEX order(derived from teraterm.ini)
193 char KexOrder[KEX_DH_MAX+1];
194 char HostKeyOrder[KEY_MAX+1];
195 char MacOrder[HMAC_MAX+1];
196 char CompOrder[COMP_MAX+1];
197
198 BOOL VerifyHostKeyDNS;
199
200 int IconID;
201
202 int DisablePopupMessage;
203
204 char X11Display[128];
205
206 int UpdateHostkeys;
207
208 int GexMinimalGroupSize;
209
210 int AuthBanner;
211 } TS_SSH;
212
213 typedef struct _TInstVar {
214 PTTSet ts;
215 PComVar cv;
216
217 /* shared memory for settings across instances. Basically it's
218 a cache for the INI file.*/
219 TS_SSH *ts_SSH;
220
221 int fatal_error;
222 int showing_err;
223 char *err_msg;
224
225 Tconnect Pconnect;
226 Trecv Precv;
227 Tsend Psend;
228 TWSAAsyncSelect PWSAAsyncSelect;
229 TWSAGetLastError PWSAGetLastError;
230
231 PReadIniFile ReadIniFile;
232 PWriteIniFile WriteIniFile;
233 PParseParam ParseParam;
234
235 HMENU FileMenu;
236
237 SOCKET socket;
238 HWND NotificationWindow;
239 unsigned int notification_msg;
240 long notification_events;
241 HICON OldSmallIcon;
242 HICON OldLargeIcon;
243
244 BOOL hostdlg_activated;
245 BOOL hostdlg_Enabled;
246
247 int protocol_major;
248 int protocol_minor;
249
250 PKTState pkt_state;
251 SSHState ssh_state;
252 AUTHState auth_state;
253 CRYPTState crypt_state;
254 HOSTSState hosts_state;
255 FWDState fwd_state;
256
257 /* The settings applied to the current session. The user may change
258 the settings but usually we don't want that to affect the session
259 in progress (race conditions). So user setup changes usually
260 modify the 'settings' field below. */
261 TS_SSH session_settings;
262
263 /* our copy of the global settings. This is synced up with the shared
264 memory only when we do a ReadIniFile or WriteIniFile
265 (i.e. the user loads or saves setup) */
266 TS_SSH settings;
267
268 // SSH2
269 DH *kexdh;
270 char server_version_string[128];
271 char client_version_string[128];
272 buffer_t *my_kex;
273 buffer_t *peer_kex;
274 kex_algorithm kex_type; // KEX algorithm
275 ssh_keytype hostkey_type;
276 const struct ssh2cipher *ciphers[MODE_MAX];
277 const struct SSH2Mac *macs[MODE_MAX];
278 compression_type ctos_compression;
279 compression_type stoc_compression;
280 int we_need;
281 int key_done;
282 int rekeying;
283 char *session_id;
284 int session_id_len;
285 SSHKeys ssh2_keys[MODE_MAX];
286 EVP_CIPHER_CTX *evpcip[MODE_MAX];
287 int userauth_success;
288 int shell_id;
289 int session_nego_status;
290 /*
291 unsigned int local_window;
292 unsigned int local_window_max;
293 unsigned int local_consumed;
294 unsigned int local_maxpacket;
295 unsigned int remote_window;
296 unsigned int remote_maxpacket;
297 */
298 int client_key_bits;
299 int server_key_bits;
300 int kexgex_min;
301 int kexgex_bits;
302 int kexgex_max;
303 int ssh2_autologin;
304 int ask4passwd;
305 SSHAuthMethod ssh2_authmethod;
306 char ssh2_username[MAX_PATH];
307 char ssh2_password[MAX_PATH];
308 char ssh2_keyfile[MAX_PATH];
309 time_t ssh_heartbeat_tick;
310 HANDLE ssh_heartbeat_thread;
311 int keyboard_interactive_password_input;
312 int userauth_retry_count;
313 buffer_t *decomp_buffer;
314 buffer_t *authbanner_buffer;
315 char *ssh2_authlist;
316 BOOL tryed_ssh2_authlist;
317 HWND ssh_hearbeat_dialog;
318
319 /* Pageant �������M�p */
320 unsigned char *pageant_key;
321 unsigned char *pageant_curkey;
322 int pageant_keylistlen;
323 int pageant_keycount;
324 int pageant_keycurrent;
325 BOOL pageant_keyfinal;// SSH2 PK_OK ������������ TRUE ������
326
327 // agent forward
328 BOOL agentfwd_enable;
329
330 BOOL origDisableTCPEchoCR;
331
332 BOOL nocheck_known_hosts;
333
334 EC_KEY *ecdh_client_key;
335
336 int dns_key_check;
337
338 unsigned int server_compat_flag;
339
340 void *hostkey_ctx;
341
342 BOOL use_subsystem;
343 char subsystem_name[256];
344
345 BOOL nosession;
346
347 // dialog resource
348 HFONT hFontFixed; // hosts.c�����_�C�A���O�p
349
350 bottom_half_known_hosts_t contents_after_known_hosts;
351
352 } TInstVar;
353
354 // �o�[�W���������������������X�������B ��: TTSSH_2-81_TS_data
355 #define TTSSH_FILEMAPNAME "TTSSH_" TTSSH_VERSION_STR("-") "_TS_data"
356
357 #define LOG_LEVEL_FATAL 5
358 #define LOG_LEVEL_ERROR 10
359 #define LOG_LEVEL_WARNING 30
360 #define LOG_LEVEL_NOTICE 50
361 #define LOG_LEVEL_INFO 80
362 #define LOG_LEVEL_VERBOSE 100
363 #define LOG_LEVEL_SSHDUMP 200
364
365 #define SSHv1(pvar) ((pvar)->protocol_major == 1)
366 #define SSHv2(pvar) ((pvar)->protocol_major == 2)
367
368 #define LogLevel(pvar, level) ((pvar)->settings.LogLevel >= (level))
369
370 void notify_established_secure_connection(PTInstVar pvar);
371 void notify_closed_connection(PTInstVar pvar, char *send_msg);
372 void notify_nonfatal_error(PTInstVar pvar, char *msg);
373 void notify_fatal_error(PTInstVar pvar, char *msg, BOOL send_disconnect);
374 void logputs(int level, char *msg);
375 #if defined(_MSC_VER)
376 void logprintf(int level, _Printf_format_string_ const char *fmt, ...);
377 void logprintf_hexdump(int level, const char *data, int len, _Printf_format_string_ const char *fmt, ...);
378 #elif defined(__GNUC__)
379 void logprintf(int level, const char *fmt, ...) __attribute__ ((format (printf, 2, 3)));
380 void logprintf_hexdump(int level, const char *data, int len, const char *fmt, ...) __attribute__ ((format (printf, 4, 5)));
381 #else
382 void logprintf(int level, const char *fmt, ...);
383 void logprintf_hexdump(int level, const char *data, int len, const char *fmt, ...);
384 #endif
385
386 void get_teraterm_dir_relative_name(char *buf, int bufsize, char *basename);
387 int copy_teraterm_dir_relative_path(char *dest, int destsize, char *basename);
388 int uuencode(unsigned char *src, int srclen, unsigned char *target, int targsize);
389
390 #endif

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