Develop and Download Open Source Software

Browse Subversion Repository

Annotation of /trunk/ttssh2/ttxssh/ttxssh.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 10254 - (hide annotations) (download) (as text)
Fri Sep 9 09:40:57 2022 UTC (19 months ago) by doda
File MIME type: text/x-chdr
File size: 11671 byte(s)
KexKeyLogFile設定をUnicode化した

ただし、現時点ではCP932に無い文字を使っているとセッションの複製時等に
ログが記録されなくなる。この問題は別途対応予定。

あわせて、相対パスで指定時はログ保存フォルダ基準に変更した。
1 maya 3227 /*
2 doda 6841 * Copyright (c) 1998-2001, Robert O'Callahan
3 nmaya 9048 * (C) 2004- TeraTerm Project
4 doda 6841 * 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 maya 3227
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 yutakapon 6286 /* 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 maya 3227 #include <winsock2.h>
51     #include <ws2tcpip.h>
52 zmatsuo 7479 #include <wspiapi.h>
53 maya 3227 /* 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 doda 6051 #include <stdarg.h>
64 maya 3227 #include <crtdbg.h>
65    
66     #include "i18n.h"
67 maya 3295 #include "ttlib.h"
68 maya 3227
69 doda 6801 typedef struct _TInstVar *PTInstVar;
70 maya 3227
71 doda 6834 #include "ttxssh-version.h"
72 maya 3227 #include "util.h"
73     #include "pkt.h"
74     #include "ssh.h"
75     #include "auth.h"
76     #include "crypt.h"
77 nmaya 9255 #include "cipher.h"
78     #include "comp.h"
79     #include "kex.h"
80     #include "hostkey.h"
81     #include "key.h"
82 maya 3227 #include "hosts.h"
83     #include "fwd.h"
84    
85     #include <openssl/dh.h>
86 maya 4314 #include <openssl/ec.h>
87 maya 3227 #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 maya 7773 #if defined(_MSC_VER) && !defined(_Printf_format_string_)
99     // ���`�������������������������������������`��������
100 zmatsuo 7648 #define _Printf_format_string_
101     #endif
102    
103 zmatsuo 8837 extern HANDLE hInst; /* Instance handle of TTXSSH.DLL */
104 maya 3227
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 maya 4330 #define ID_SSHDIFFERENTKEY 62503
115 maya 3227 #define ID_SSHASYNCMESSAGEBOX 62504
116 yutakapon 8093 #define ID_SSHDIFFERENT_TYPE_KEY 62505
117 maya 3227
118     #define OPTION_NONE 0
119     #define OPTION_CLEAR 1
120     #define OPTION_REPLACE 2
121    
122     /*
123 yutakapon 5620 * DisablePopupMessage �p���r�b�g���`
124     */
125     #define POPUP_MSG_default 0
126     #define POPUP_MSG_FWD_received_data (1 << 0)
127    
128 yutakapon 5849
129 yutakapon 5620 /*
130 zmatsuo 9429 * Host key rotation
131 yutakapon 5849 */
132 doda 5887 #define SSH_UPDATE_HOSTKEYS_NO 0
133     #define SSH_UPDATE_HOSTKEYS_YES 1
134     #define SSH_UPDATE_HOSTKEYS_ASK 2
135 yutakapon 5901 #define SSH_UPDATE_HOSTKEYS_MAX 3
136 yutakapon 5849
137 doda 5928 /*
138     * Server compatibility flag
139     */
140     #define SSH_BUG_DHGEX_LARGE 0x00000001
141 yutakapon 5849
142 doda 5928
143 yutakapon 5849 /*
144 maya 3227 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 zmatsuo 7632
151     int DefaultUserType; /* 0/1/2 = no input/DefaultUserName/Windows logon user */
152 maya 3227 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 doda 7455 char CipherOrder[SSH_CIPHER_MAX+2];
159 maya 3227
160     char KnownHostsFiles[2048];
161     int DefaultAuthMethod;
162     char DefaultRhostsLocalUserName[256];
163     char DefaultRhostsHostPrivateKeyFile[1024];
164     char DefaultRSAPrivateKeyFile[1024];
165    
166 doda 6831 char DefaultForwarding[4096];
167 maya 3227 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 maya 4229
186     // Confirm Agent forwarding
187     BOOL ForwardAgentConfirm;
188 yutakapon 4367
189 doda 6663 // Confirm Agent forwarding
190     BOOL ForwardAgentNotify;
191    
192 yutakapon 4367 // KEX order(derived from teraterm.ini)
193     char KexOrder[KEX_DH_MAX+1];
194 doda 10064 char HostKeyOrder[KEY_ALGO_MAX+1];
195 yutakapon 4367 char MacOrder[HMAC_MAX+1];
196     char CompOrder[COMP_MAX+1];
197 doda 4531
198     BOOL VerifyHostKeyDNS;
199 doda 5261
200     int IconID;
201 yutakapon 5620
202     int DisablePopupMessage;
203 doda 5793
204     char X11Display[128];
205 yutakapon 5839
206 yutakapon 5901 int UpdateHostkeys;
207 doda 5900
208     int GexMinimalGroupSize;
209 doda 7048
210     int AuthBanner;
211 doda 10247
212     BOOL KexKeyLogging;
213 doda 10254 wchar_t KexKeyLogFile[1024];
214 maya 3227 } TS_SSH;
215    
216     typedef struct _TInstVar {
217     PTTSet ts;
218     PComVar cv;
219    
220     /* shared memory for settings across instances. Basically it's
221     a cache for the INI file.*/
222 doda 6801 TS_SSH *ts_SSH;
223 maya 3227
224     int fatal_error;
225     int showing_err;
226 doda 6801 char *err_msg;
227 maya 3227
228     Tconnect Pconnect;
229     Trecv Precv;
230     Tsend Psend;
231     TWSAAsyncSelect PWSAAsyncSelect;
232     TWSAGetLastError PWSAGetLastError;
233    
234     PReadIniFile ReadIniFile;
235     PWriteIniFile WriteIniFile;
236     PParseParam ParseParam;
237    
238 doda 4463 HMENU FileMenu;
239    
240 maya 3227 SOCKET socket;
241     HWND NotificationWindow;
242     unsigned int notification_msg;
243     long notification_events;
244 nmaya 10009 HICON OldSmallIcon; // �g�p������
245     HICON OldLargeIcon; // �g�p������
246 maya 3227
247     BOOL hostdlg_activated;
248     BOOL hostdlg_Enabled;
249    
250     int protocol_major;
251     int protocol_minor;
252    
253     PKTState pkt_state;
254     SSHState ssh_state;
255     AUTHState auth_state;
256     CRYPTState crypt_state;
257     HOSTSState hosts_state;
258     FWDState fwd_state;
259    
260     /* The settings applied to the current session. The user may change
261     the settings but usually we don't want that to affect the session
262     in progress (race conditions). So user setup changes usually
263     modify the 'settings' field below. */
264     TS_SSH session_settings;
265    
266     /* our copy of the global settings. This is synced up with the shared
267     memory only when we do a ReadIniFile or WriteIniFile
268     (i.e. the user loads or saves setup) */
269     TS_SSH settings;
270    
271     // SSH2
272     DH *kexdh;
273     char server_version_string[128];
274     char client_version_string[128];
275     buffer_t *my_kex;
276     buffer_t *peer_kex;
277 maya 4378 kex_algorithm kex_type; // KEX algorithm
278 doda 10064 ssh_keyalgo hostkey_type;
279 nmaya 9255 const struct ssh2cipher *ciphers[MODE_MAX];
280     const struct SSH2Mac *macs[MODE_MAX];
281 maya 4378 compression_type ctos_compression;
282     compression_type stoc_compression;
283 maya 3227 int we_need;
284 doda 10073 int kex_status;
285 maya 3227 char *session_id;
286     int session_id_len;
287 doda 7001 SSHKeys ssh2_keys[MODE_MAX];
288 nmaya 9255 struct sshcipher_ctx *cc[MODE_MAX];
289 maya 3227 int userauth_success;
290     int shell_id;
291     int session_nego_status;
292     /*
293     unsigned int local_window;
294     unsigned int local_window_max;
295     unsigned int local_consumed;
296     unsigned int local_maxpacket;
297     unsigned int remote_window;
298     unsigned int remote_maxpacket;
299     */
300     int client_key_bits;
301     int server_key_bits;
302     int kexgex_min;
303     int kexgex_bits;
304     int kexgex_max;
305     int ssh2_autologin;
306     int ask4passwd;
307     SSHAuthMethod ssh2_authmethod;
308     char ssh2_username[MAX_PATH];
309     char ssh2_password[MAX_PATH];
310     char ssh2_keyfile[MAX_PATH];
311     time_t ssh_heartbeat_tick;
312     HANDLE ssh_heartbeat_thread;
313     int keyboard_interactive_password_input;
314     int userauth_retry_count;
315     buffer_t *decomp_buffer;
316 doda 7049 buffer_t *authbanner_buffer;
317 maya 3227 char *ssh2_authlist;
318     BOOL tryed_ssh2_authlist;
319     HWND ssh_hearbeat_dialog;
320    
321     /* Pageant �������M�p */
322     unsigned char *pageant_key;
323     unsigned char *pageant_curkey;
324     int pageant_keylistlen;
325     int pageant_keycount;
326     int pageant_keycurrent;
327     BOOL pageant_keyfinal;// SSH2 PK_OK ������������ TRUE ������
328    
329     // agent forward
330     BOOL agentfwd_enable;
331 doda 3579
332     BOOL origDisableTCPEchoCR;
333 yutakapon 3631
334     BOOL nocheck_known_hosts;
335 maya 4314
336     EC_KEY *ecdh_client_key;
337 doda 4559
338     int dns_key_check;
339 doda 5928
340     unsigned int server_compat_flag;
341 yutakapon 5931
342     void *hostkey_ctx;
343 doda 6717
344     BOOL use_subsystem;
345     char subsystem_name[256];
346 doda 7363
347     BOOL nosession;
348 zmatsuo 7714
349     // dialog resource
350     HFONT hFontFixed; // hosts.c�����_�C�A���O�p
351    
352 doda 10066 char *server_sig_algs;
353    
354 maya 3227 } TInstVar;
355    
356 doda 6834 // �o�[�W���������������������X�������B ��: TTSSH_2-81_TS_data
357     #define TTSSH_FILEMAPNAME "TTSSH_" TTSSH_VERSION_STR("-") "_TS_data"
358 doda 6830
359 maya 3227 #define LOG_LEVEL_FATAL 5
360     #define LOG_LEVEL_ERROR 10
361     #define LOG_LEVEL_WARNING 30
362 doda 6655 #define LOG_LEVEL_NOTICE 50
363 doda 5927 #define LOG_LEVEL_INFO 80
364 maya 3227 #define LOG_LEVEL_VERBOSE 100
365     #define LOG_LEVEL_SSHDUMP 200
366    
367     #define SSHv1(pvar) ((pvar)->protocol_major == 1)
368     #define SSHv2(pvar) ((pvar)->protocol_major == 2)
369    
370 doda 6823 #define LogLevel(pvar, level) ((pvar)->settings.LogLevel >= (level))
371 doda 6813
372 maya 3227 void notify_established_secure_connection(PTInstVar pvar);
373 doda 6801 void notify_closed_connection(PTInstVar pvar, char *send_msg);
374     void notify_nonfatal_error(PTInstVar pvar, char *msg);
375     void notify_fatal_error(PTInstVar pvar, char *msg, BOOL send_disconnect);
376 doda 6809 void logputs(int level, char *msg);
377 zmatsuo 7648 #if defined(_MSC_VER)
378     void logprintf(int level, _Printf_format_string_ const char *fmt, ...);
379     void logprintf_hexdump(int level, const char *data, int len, _Printf_format_string_ const char *fmt, ...);
380     #elif defined(__GNUC__)
381     void logprintf(int level, const char *fmt, ...) __attribute__ ((format (printf, 2, 3)));
382     void logprintf_hexdump(int level, const char *data, int len, const char *fmt, ...) __attribute__ ((format (printf, 4, 5)));
383     #else
384     void logprintf(int level, const char *fmt, ...);
385     void logprintf_hexdump(int level, const char *data, int len, const char *fmt, ...);
386     #endif
387 maya 3227
388 doda 6801 void get_teraterm_dir_relative_name(char *buf, int bufsize, char *basename);
389 zmatsuo 9429 wchar_t *get_teraterm_dir_relative_nameW(const wchar_t *basename);
390 doda 6801 int copy_teraterm_dir_relative_path(char *dest, int destsize, char *basename);
391 zmatsuo 9505 wchar_t *get_home_dir_relative_nameW(const wchar_t *basename);
392 nmaya 9707 wchar_t *get_log_dir_relative_nameW(const wchar_t *basename);
393 maya 3227 int uuencode(unsigned char *src, int srclen, unsigned char *target, int targsize);
394    
395     #endif

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