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 5678 - (show annotations) (download) (as text)
Sat Oct 4 03:39:24 2014 UTC (9 years, 6 months ago) by maya
Original Path: trunk/ttssh2/ttxssh/ttxssh.h
File MIME type: text/x-chdr
File size: 9282 byte(s)
SSH2 切断シーケンスの調整
・shell のチャネルが MSG_CHANNEL_CLOSE を受け取ったとき
  MSG_DISCONNECT を送り、MSG_CHANNEL_CLOSE を送り、socket を切断する
  ↓
  MSG_CHANNEL_CLOSE を送り、MSG_DISCONNECT を送り、socket を切断する
・認証中にユーザがキャンセルしたとき
  MSG_CHANNEL_CLOSE を送り、socket を切断する
  ↓
  MSG_DISCONNECT を送り、socket を切断する
・MSG_DISCONNECT を受け取ったとき
  MSG_CHANNEL_CLOSE を送り、socket を切断する
    ↓
  socket を切断する
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 #ifndef NO_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 /* NO_INET6 */
52 #include <stdlib.h>
53 #include <crtdbg.h>
54
55 #include "i18n.h"
56 #include "ttlib.h"
57
58 typedef struct _TInstVar FAR * PTInstVar;
59
60 #include "util.h"
61 #include "pkt.h"
62 #include "ssh.h"
63 #include "auth.h"
64 #include "crypt.h"
65 #include "hosts.h"
66 #include "fwd.h"
67
68 #include <openssl/dh.h>
69 #include <openssl/ec.h>
70 #include <openssl/evp.h>
71 #include "buffer.h"
72
73 /* tttypes.h �����`���������� EM �}�N���� openssl/rsa.h (OpenSSL 0.9.8)�������v���g�^�C�v������
74 * �������������d�����������������A�r���h�G���[�������B���L3�w�b�_��include���u�����L�����������B
75 * (2005.7.9 yutaka)
76 */
77 #include "teraterm.h"
78 #include "tttypes.h"
79 #include "ttplugin.h"
80
81 HANDLE hInst; /* Instance handle of TTXSSH.DLL */
82
83 #define ID_SSHSCPMENU 52110
84 #define ID_SSHSETUPMENU 52310
85 #define ID_SSHAUTHSETUPMENU 52320
86 #define ID_SSHFWDSETUPMENU 52330
87 #define ID_SSHKEYGENMENU 52340
88 #define ID_ABOUTMENU 52910
89
90 #define ID_SSHAUTH 62501
91 #define ID_SSHUNKNOWNHOST 62502
92 #define ID_SSHDIFFERENTKEY 62503
93 #define ID_SSHASYNCMESSAGEBOX 62504
94
95 #define OPTION_NONE 0
96 #define OPTION_CLEAR 1
97 #define OPTION_REPLACE 2
98
99 /*
100 * DisablePopupMessage �p���r�b�g���`
101 */
102 #define POPUP_MSG_default 0
103 #define POPUP_MSG_FWD_received_data (1 << 0)
104
105 /*
106 These are the fields that WOULD go in Tera Term's 'ts' structure, if
107 we could put them there.
108 */
109 typedef struct _TS_SSH {
110 BOOL Enabled;
111 int CompressionLevel; /* 0 = NONE, else 1-9 */
112 char DefaultUserName[256];
113
114 /* this next option is a string of digits. Each digit represents a
115 cipher. The first digit is the most preferred cipher, and so on.
116 The digit SSH_CIPHER_NONE signifies that any ciphers after it are
117 disabled. */
118 char CipherOrder[SSH_CIPHER_MAX+1];
119
120 char KnownHostsFiles[2048];
121 int DefaultAuthMethod;
122 char DefaultRhostsLocalUserName[256];
123 char DefaultRhostsHostPrivateKeyFile[1024];
124 char DefaultRSAPrivateKeyFile[1024];
125
126 char DefaultForwarding[2048];
127 BOOL TryDefaultAuth;
128
129 int LogLevel; /* 0 = NONE, 100 = Verbose */
130 int WriteBufferSize;
131
132 int ssh_protocol_version; // SSH version (2004.10.11 yutaka)
133 int ssh_heartbeat_overtime; // SSH heartbeat(keepalive) (2004.12.11 yutaka)
134 // whether password will permanently store on heap memory (2006.8.5 yutaka)
135 int remember_password;
136
137 // try auth with "none" method for disable unsupported on dialog (2007.9.24 maya)
138 BOOL CheckAuthListFirst;
139
140 // Enable connection to the server that has RSA key length less than 768 bit (2008.9.11 maya)
141 BOOL EnableRsaShortKeyServer;
142
143 // Enable Agent forwarding
144 BOOL ForwardAgent;
145
146 // Confirm Agent forwarding
147 BOOL ForwardAgentConfirm;
148
149 // KEX order(derived from teraterm.ini)
150 char KexOrder[KEX_DH_MAX+1];
151 char HostKeyOrder[KEY_MAX+1];
152 char MacOrder[HMAC_MAX+1];
153 char CompOrder[COMP_MAX+1];
154
155 BOOL VerifyHostKeyDNS;
156
157 int IconID;
158
159 int DisablePopupMessage;
160 } TS_SSH;
161
162 typedef struct _TInstVar {
163 PTTSet ts;
164 PComVar cv;
165
166 /* shared memory for settings across instances. Basically it's
167 a cache for the INI file.*/
168 TS_SSH FAR * ts_SSH;
169
170 int fatal_error;
171 int showing_err;
172 char FAR * err_msg;
173
174 Tconnect Pconnect;
175 Trecv Precv;
176 Tsend Psend;
177 TWSAAsyncSelect PWSAAsyncSelect;
178 TWSAGetLastError PWSAGetLastError;
179
180 PReadIniFile ReadIniFile;
181 PWriteIniFile WriteIniFile;
182 PParseParam ParseParam;
183
184 HMENU FileMenu;
185
186 SOCKET socket;
187 HWND NotificationWindow;
188 unsigned int notification_msg;
189 long notification_events;
190 HICON OldSmallIcon;
191 HICON OldLargeIcon;
192
193 BOOL hostdlg_activated;
194 BOOL hostdlg_Enabled;
195
196 int protocol_major;
197 int protocol_minor;
198
199 PKTState pkt_state;
200 SSHState ssh_state;
201 AUTHState auth_state;
202 CRYPTState crypt_state;
203 HOSTSState hosts_state;
204 FWDState fwd_state;
205
206 /* The settings applied to the current session. The user may change
207 the settings but usually we don't want that to affect the session
208 in progress (race conditions). So user setup changes usually
209 modify the 'settings' field below. */
210 TS_SSH session_settings;
211
212 /* our copy of the global settings. This is synced up with the shared
213 memory only when we do a ReadIniFile or WriteIniFile
214 (i.e. the user loads or saves setup) */
215 TS_SSH settings;
216
217 // SSH2
218 DH *kexdh;
219 char server_version_string[128];
220 char client_version_string[128];
221 buffer_t *my_kex;
222 buffer_t *peer_kex;
223 kex_algorithm kex_type; // KEX algorithm
224 ssh_keytype hostkey_type;
225 SSHCipher ctos_cipher;
226 SSHCipher stoc_cipher;
227 hmac_type ctos_hmac;
228 hmac_type stoc_hmac;
229 compression_type ctos_compression;
230 compression_type stoc_compression;
231 int we_need;
232 int key_done;
233 int rekeying;
234 char *session_id;
235 int session_id_len;
236 Newkeys ssh2_keys[MODE_MAX];
237 EVP_CIPHER_CTX evpcip[MODE_MAX];
238 int userauth_success;
239 int shell_id;
240 /*int remote_id;*/
241 int session_nego_status;
242 /*
243 unsigned int local_window;
244 unsigned int local_window_max;
245 unsigned int local_consumed;
246 unsigned int local_maxpacket;
247 unsigned int remote_window;
248 unsigned int remote_maxpacket;
249 */
250 int client_key_bits;
251 int server_key_bits;
252 int kexgex_min;
253 int kexgex_bits;
254 int kexgex_max;
255 int ssh2_autologin;
256 int ask4passwd;
257 SSHAuthMethod ssh2_authmethod;
258 char ssh2_username[MAX_PATH];
259 char ssh2_password[MAX_PATH];
260 char ssh2_keyfile[MAX_PATH];
261 time_t ssh_heartbeat_tick;
262 HANDLE ssh_heartbeat_thread;
263 int keyboard_interactive_password_input;
264 int userauth_retry_count;
265 buffer_t *decomp_buffer;
266 char *ssh2_authlist;
267 BOOL tryed_ssh2_authlist;
268 HWND ssh_hearbeat_dialog;
269
270 /* Pageant �������M�p */
271 unsigned char *pageant_key;
272 unsigned char *pageant_curkey;
273 int pageant_keylistlen;
274 int pageant_keycount;
275 int pageant_keycurrent;
276 BOOL pageant_keyfinal;// SSH2 PK_OK ������������ TRUE ������
277
278 // agent forward
279 BOOL agentfwd_enable;
280
281 BOOL origDisableTCPEchoCR;
282
283 BOOL nocheck_known_hosts;
284
285 EC_KEY *ecdh_client_key;
286
287 int dns_key_check;
288 } TInstVar;
289
290 #define LOG_LEVEL_FATAL 5
291 #define LOG_LEVEL_ERROR 10
292 #define LOG_LEVEL_URGENT 20
293 #define LOG_LEVEL_WARNING 30
294 #define LOG_LEVEL_VERBOSE 100
295 #define LOG_LEVEL_SSHDUMP 200
296
297 #define SSHv1(pvar) ((pvar)->protocol_major == 1)
298 #define SSHv2(pvar) ((pvar)->protocol_major == 2)
299
300 void notify_established_secure_connection(PTInstVar pvar);
301 void notify_closed_connection(PTInstVar pvar, char FAR * send_msg);
302 void notify_nonfatal_error(PTInstVar pvar, char FAR * msg);
303 void notify_fatal_error(PTInstVar pvar, char FAR * msg, BOOL send_disconnect);
304 void notify_verbose_message(PTInstVar pvar, char FAR * msg, int level);
305
306 void get_teraterm_dir_relative_name(char FAR * buf, int bufsize, char FAR * basename);
307 int copy_teraterm_dir_relative_path(char FAR * dest, int destsize, char FAR * basename);
308 void get_file_version(char *exefile, int *major, int *minor, int *release, int *build);
309 int uuencode(unsigned char *src, int srclen, unsigned char *target, int targsize);
310 void arc4random_buf(void *_buf, size_t n);
311
312 #endif

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