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 5900 - (show annotations) (download) (as text)
Tue Jun 2 09:07:33 2015 UTC (8 years, 10 months ago) by doda
Original Path: trunk/ttssh2/ttxssh/ttxssh.h
File MIME type: text/x-chdr
File size: 9504 byte(s)
DH-GEXで要求するgroupサイズの最小値を指定できるようにした。

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 /*
107 * Host key rotation
108 */
109 #define SSH_UPDATE_HOSTKEYS_NO 0
110 #define SSH_UPDATE_HOSTKEYS_YES 1
111 #define SSH_UPDATE_HOSTKEYS_ASK 2
112
113
114 /*
115 These are the fields that WOULD go in Tera Term's 'ts' structure, if
116 we could put them there.
117 */
118 typedef struct _TS_SSH {
119 BOOL Enabled;
120 int CompressionLevel; /* 0 = NONE, else 1-9 */
121 char DefaultUserName[256];
122
123 /* this next option is a string of digits. Each digit represents a
124 cipher. The first digit is the most preferred cipher, and so on.
125 The digit SSH_CIPHER_NONE signifies that any ciphers after it are
126 disabled. */
127 char CipherOrder[SSH_CIPHER_MAX+1];
128
129 char KnownHostsFiles[2048];
130 int DefaultAuthMethod;
131 char DefaultRhostsLocalUserName[256];
132 char DefaultRhostsHostPrivateKeyFile[1024];
133 char DefaultRSAPrivateKeyFile[1024];
134
135 char DefaultForwarding[2048];
136 BOOL TryDefaultAuth;
137
138 int LogLevel; /* 0 = NONE, 100 = Verbose */
139 int WriteBufferSize;
140
141 int ssh_protocol_version; // SSH version (2004.10.11 yutaka)
142 int ssh_heartbeat_overtime; // SSH heartbeat(keepalive) (2004.12.11 yutaka)
143 // whether password will permanently store on heap memory (2006.8.5 yutaka)
144 int remember_password;
145
146 // try auth with "none" method for disable unsupported on dialog (2007.9.24 maya)
147 BOOL CheckAuthListFirst;
148
149 // Enable connection to the server that has RSA key length less than 768 bit (2008.9.11 maya)
150 BOOL EnableRsaShortKeyServer;
151
152 // Enable Agent forwarding
153 BOOL ForwardAgent;
154
155 // Confirm Agent forwarding
156 BOOL ForwardAgentConfirm;
157
158 // KEX order(derived from teraterm.ini)
159 char KexOrder[KEX_DH_MAX+1];
160 char HostKeyOrder[KEY_MAX+1];
161 char MacOrder[HMAC_MAX+1];
162 char CompOrder[COMP_MAX+1];
163
164 BOOL VerifyHostKeyDNS;
165
166 int IconID;
167
168 int DisablePopupMessage;
169
170 char X11Display[128];
171
172 BOOL UpdateHostkeys;
173
174 int GexMinimalGroupSize;
175 } TS_SSH;
176
177 typedef struct _TInstVar {
178 PTTSet ts;
179 PComVar cv;
180
181 /* shared memory for settings across instances. Basically it's
182 a cache for the INI file.*/
183 TS_SSH FAR * ts_SSH;
184
185 int fatal_error;
186 int showing_err;
187 char FAR * err_msg;
188
189 Tconnect Pconnect;
190 Trecv Precv;
191 Tsend Psend;
192 TWSAAsyncSelect PWSAAsyncSelect;
193 TWSAGetLastError PWSAGetLastError;
194
195 PReadIniFile ReadIniFile;
196 PWriteIniFile WriteIniFile;
197 PParseParam ParseParam;
198
199 HMENU FileMenu;
200
201 SOCKET socket;
202 HWND NotificationWindow;
203 unsigned int notification_msg;
204 long notification_events;
205 HICON OldSmallIcon;
206 HICON OldLargeIcon;
207
208 BOOL hostdlg_activated;
209 BOOL hostdlg_Enabled;
210
211 int protocol_major;
212 int protocol_minor;
213
214 PKTState pkt_state;
215 SSHState ssh_state;
216 AUTHState auth_state;
217 CRYPTState crypt_state;
218 HOSTSState hosts_state;
219 FWDState fwd_state;
220
221 /* The settings applied to the current session. The user may change
222 the settings but usually we don't want that to affect the session
223 in progress (race conditions). So user setup changes usually
224 modify the 'settings' field below. */
225 TS_SSH session_settings;
226
227 /* our copy of the global settings. This is synced up with the shared
228 memory only when we do a ReadIniFile or WriteIniFile
229 (i.e. the user loads or saves setup) */
230 TS_SSH settings;
231
232 // SSH2
233 DH *kexdh;
234 char server_version_string[128];
235 char client_version_string[128];
236 buffer_t *my_kex;
237 buffer_t *peer_kex;
238 kex_algorithm kex_type; // KEX algorithm
239 ssh_keytype hostkey_type;
240 SSHCipher ctos_cipher;
241 SSHCipher stoc_cipher;
242 hmac_type ctos_hmac;
243 hmac_type stoc_hmac;
244 compression_type ctos_compression;
245 compression_type stoc_compression;
246 int we_need;
247 int key_done;
248 int rekeying;
249 char *session_id;
250 int session_id_len;
251 Newkeys ssh2_keys[MODE_MAX];
252 EVP_CIPHER_CTX evpcip[MODE_MAX];
253 int userauth_success;
254 int shell_id;
255 /*int remote_id;*/
256 int session_nego_status;
257 /*
258 unsigned int local_window;
259 unsigned int local_window_max;
260 unsigned int local_consumed;
261 unsigned int local_maxpacket;
262 unsigned int remote_window;
263 unsigned int remote_maxpacket;
264 */
265 int client_key_bits;
266 int server_key_bits;
267 int kexgex_min;
268 int kexgex_bits;
269 int kexgex_max;
270 int ssh2_autologin;
271 int ask4passwd;
272 SSHAuthMethod ssh2_authmethod;
273 char ssh2_username[MAX_PATH];
274 char ssh2_password[MAX_PATH];
275 char ssh2_keyfile[MAX_PATH];
276 time_t ssh_heartbeat_tick;
277 HANDLE ssh_heartbeat_thread;
278 int keyboard_interactive_password_input;
279 int userauth_retry_count;
280 buffer_t *decomp_buffer;
281 char *ssh2_authlist;
282 BOOL tryed_ssh2_authlist;
283 HWND ssh_hearbeat_dialog;
284
285 /* Pageant �������M�p */
286 unsigned char *pageant_key;
287 unsigned char *pageant_curkey;
288 int pageant_keylistlen;
289 int pageant_keycount;
290 int pageant_keycurrent;
291 BOOL pageant_keyfinal;// SSH2 PK_OK ������������ TRUE ������
292
293 // agent forward
294 BOOL agentfwd_enable;
295
296 BOOL origDisableTCPEchoCR;
297
298 BOOL nocheck_known_hosts;
299
300 EC_KEY *ecdh_client_key;
301
302 int dns_key_check;
303 } TInstVar;
304
305 #define LOG_LEVEL_FATAL 5
306 #define LOG_LEVEL_ERROR 10
307 #define LOG_LEVEL_URGENT 20
308 #define LOG_LEVEL_WARNING 30
309 #define LOG_LEVEL_VERBOSE 100
310 #define LOG_LEVEL_SSHDUMP 200
311
312 #define SSHv1(pvar) ((pvar)->protocol_major == 1)
313 #define SSHv2(pvar) ((pvar)->protocol_major == 2)
314
315 void notify_established_secure_connection(PTInstVar pvar);
316 void notify_closed_connection(PTInstVar pvar, char FAR * send_msg);
317 void notify_nonfatal_error(PTInstVar pvar, char FAR * msg);
318 void notify_fatal_error(PTInstVar pvar, char FAR * msg, BOOL send_disconnect);
319 void notify_verbose_message(PTInstVar pvar, char FAR * msg, int level);
320
321 void get_teraterm_dir_relative_name(char FAR * buf, int bufsize, char FAR * basename);
322 int copy_teraterm_dir_relative_path(char FAR * dest, int destsize, char FAR * basename);
323 void get_file_version(char *exefile, int *major, int *minor, int *release, int *build);
324 int uuencode(unsigned char *src, int srclen, unsigned char *target, int targsize);
325 void arc4random_buf(void *_buf, size_t n);
326
327 #endif

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