Develop and Download Open Source Software

Browse Subversion Repository

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 7479 - (hide 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 maya 3227 /*
2 doda 6841 * Copyright (c) 1998-2001, Robert O'Callahan
3 zmatsuo 7479 * (C) 2004-2019 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     #include "hosts.h"
78     #include "fwd.h"
79    
80     #include <openssl/dh.h>
81 maya 4314 #include <openssl/ec.h>
82 maya 3227 #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 maya 4330 #define ID_SSHDIFFERENTKEY 62503
105 maya 3227 #define ID_SSHASYNCMESSAGEBOX 62504
106    
107     #define OPTION_NONE 0
108     #define OPTION_CLEAR 1
109     #define OPTION_REPLACE 2
110    
111     /*
112 yutakapon 5620 * DisablePopupMessage �p���r�b�g���`
113     */
114     #define POPUP_MSG_default 0
115     #define POPUP_MSG_FWD_received_data (1 << 0)
116    
117 yutakapon 5849
118 yutakapon 5620 /*
119 yutakapon 5849 * Host key rotation
120     */
121 doda 5887 #define SSH_UPDATE_HOSTKEYS_NO 0
122     #define SSH_UPDATE_HOSTKEYS_YES 1
123     #define SSH_UPDATE_HOSTKEYS_ASK 2
124 yutakapon 5901 #define SSH_UPDATE_HOSTKEYS_MAX 3
125 yutakapon 5849
126 doda 5928 /*
127     * Server compatibility flag
128     */
129     #define SSH_BUG_DHGEX_LARGE 0x00000001
130 yutakapon 5849
131 doda 5928
132 yutakapon 5849 /*
133 maya 3227 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 doda 7455 char CipherOrder[SSH_CIPHER_MAX+2];
146 maya 3227
147     char KnownHostsFiles[2048];
148     int DefaultAuthMethod;
149     char DefaultRhostsLocalUserName[256];
150     char DefaultRhostsHostPrivateKeyFile[1024];
151     char DefaultRSAPrivateKeyFile[1024];
152    
153 doda 6831 char DefaultForwarding[4096];
154 maya 3227 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 maya 4229
173     // Confirm Agent forwarding
174     BOOL ForwardAgentConfirm;
175 yutakapon 4367
176 doda 6663 // Confirm Agent forwarding
177     BOOL ForwardAgentNotify;
178    
179 yutakapon 4367 // 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 doda 4531
185     BOOL VerifyHostKeyDNS;
186 doda 5261
187     int IconID;
188 yutakapon 5620
189     int DisablePopupMessage;
190 doda 5793
191     char X11Display[128];
192 yutakapon 5839
193 yutakapon 5901 int UpdateHostkeys;
194 doda 5900
195     int GexMinimalGroupSize;
196 doda 7048
197     int AuthBanner;
198 maya 3227 } 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 doda 6801 TS_SSH *ts_SSH;
207 maya 3227
208     int fatal_error;
209     int showing_err;
210 doda 6801 char *err_msg;
211 maya 3227
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 doda 4463 HMENU FileMenu;
223    
224 maya 3227 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 maya 4378 kex_algorithm kex_type; // KEX algorithm
262     ssh_keytype hostkey_type;
263 doda 7004 SSH2Cipher *ciphers[MODE_MAX];
264 doda 7006 SSH2Mac *macs[MODE_MAX];
265 maya 4378 compression_type ctos_compression;
266     compression_type stoc_compression;
267 maya 3227 int we_need;
268     int key_done;
269     int rekeying;
270     char *session_id;
271     int session_id_len;
272 doda 7001 SSHKeys ssh2_keys[MODE_MAX];
273 maya 3227 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 doda 7049 buffer_t *authbanner_buffer;
303 maya 3227 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 doda 3579
318     BOOL origDisableTCPEchoCR;
319 yutakapon 3631
320     BOOL nocheck_known_hosts;
321 maya 4314
322     EC_KEY *ecdh_client_key;
323 doda 4559
324     int dns_key_check;
325 doda 5928
326     unsigned int server_compat_flag;
327 yutakapon 5931
328     void *hostkey_ctx;
329 doda 6717
330     BOOL use_subsystem;
331     char subsystem_name[256];
332 doda 7363
333     BOOL nosession;
334 maya 3227 } TInstVar;
335    
336 doda 6834 // �o�[�W���������������������X�������B ��: TTSSH_2-81_TS_data
337     #define TTSSH_FILEMAPNAME "TTSSH_" TTSSH_VERSION_STR("-") "_TS_data"
338 doda 6830
339 maya 3227 #define LOG_LEVEL_FATAL 5
340     #define LOG_LEVEL_ERROR 10
341     #define LOG_LEVEL_WARNING 30
342 doda 6655 #define LOG_LEVEL_NOTICE 50
343 doda 5927 #define LOG_LEVEL_INFO 80
344 maya 3227 #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 doda 6823 #define LogLevel(pvar, level) ((pvar)->settings.LogLevel >= (level))
351 doda 6813
352 maya 3227 void notify_established_secure_connection(PTInstVar pvar);
353 doda 6801 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 doda 6809 void logputs(int level, char *msg);
357 doda 6808 void logprintf(int level, char *fmt, ...);
358     void logprintf_hexdump(int level, char *data, int len, char *fmt, ...);
359 maya 3227
360 doda 6801 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 maya 3227 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