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 10064 - (hide annotations) (download) (as text)
Sun Jul 17 15:39:09 2022 UTC (20 months, 3 weeks ago) by doda
File MIME type: text/x-chdr
File size: 11661 byte(s)
公開鍵形式と公開鍵署名アルゴリズムを分離した

rsa-sha2-256/512(署名形式)では公開鍵形式としてssh-rsaを使うため。
pvar->hostkey_type は署名アルゴリズムが格納されるようになる。
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 maya 3227 } 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 doda 6801 TS_SSH *ts_SSH;
220 maya 3227
221     int fatal_error;
222     int showing_err;
223 doda 6801 char *err_msg;
224 maya 3227
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 doda 4463 HMENU FileMenu;
236    
237 maya 3227 SOCKET socket;
238     HWND NotificationWindow;
239     unsigned int notification_msg;
240     long notification_events;
241 nmaya 10009 HICON OldSmallIcon; // �g�p������
242     HICON OldLargeIcon; // �g�p������
243 maya 3227
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 maya 4378 kex_algorithm kex_type; // KEX algorithm
275 doda 10064 ssh_keyalgo hostkey_type;
276 nmaya 9255 const struct ssh2cipher *ciphers[MODE_MAX];
277     const struct SSH2Mac *macs[MODE_MAX];
278 maya 4378 compression_type ctos_compression;
279     compression_type stoc_compression;
280 maya 3227 int we_need;
281     int key_done;
282     int rekeying;
283     char *session_id;
284     int session_id_len;
285 doda 7001 SSHKeys ssh2_keys[MODE_MAX];
286 nmaya 9255 struct sshcipher_ctx *cc[MODE_MAX];
287 maya 3227 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 doda 7049 buffer_t *authbanner_buffer;
315 maya 3227 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 doda 3579
330     BOOL origDisableTCPEchoCR;
331 yutakapon 3631
332     BOOL nocheck_known_hosts;
333 maya 4314
334     EC_KEY *ecdh_client_key;
335 doda 4559
336     int dns_key_check;
337 doda 5928
338     unsigned int server_compat_flag;
339 yutakapon 5931
340     void *hostkey_ctx;
341 doda 6717
342     BOOL use_subsystem;
343     char subsystem_name[256];
344 doda 7363
345     BOOL nosession;
346 zmatsuo 7714
347     // dialog resource
348     HFONT hFontFixed; // hosts.c�����_�C�A���O�p
349    
350 yutakapon 8093 bottom_half_known_hosts_t contents_after_known_hosts;
351    
352 maya 3227 } TInstVar;
353    
354 doda 6834 // �o�[�W���������������������X�������B ��: TTSSH_2-81_TS_data
355     #define TTSSH_FILEMAPNAME "TTSSH_" TTSSH_VERSION_STR("-") "_TS_data"
356 doda 6830
357 maya 3227 #define LOG_LEVEL_FATAL 5
358     #define LOG_LEVEL_ERROR 10
359     #define LOG_LEVEL_WARNING 30
360 doda 6655 #define LOG_LEVEL_NOTICE 50
361 doda 5927 #define LOG_LEVEL_INFO 80
362 maya 3227 #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 doda 6823 #define LogLevel(pvar, level) ((pvar)->settings.LogLevel >= (level))
369 doda 6813
370 maya 3227 void notify_established_secure_connection(PTInstVar pvar);
371 doda 6801 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 doda 6809 void logputs(int level, char *msg);
375 zmatsuo 7648 #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 maya 3227
386 doda 6801 void get_teraterm_dir_relative_name(char *buf, int bufsize, char *basename);
387 zmatsuo 9429 wchar_t *get_teraterm_dir_relative_nameW(const wchar_t *basename);
388 doda 6801 int copy_teraterm_dir_relative_path(char *dest, int destsize, char *basename);
389 zmatsuo 9505 wchar_t *get_home_dir_relative_nameW(const wchar_t *basename);
390 nmaya 9707 wchar_t *get_log_dir_relative_nameW(const wchar_t *basename);
391 maya 3227 int uuencode(unsigned char *src, int srclen, unsigned char *target, int targsize);
392    
393     #endif

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