Develop and Download Open Source Software

Browse Subversion Repository

Diff of /branches/ssh_chacha20poly1305/ttssh2/ttxssh/ttxssh.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 4334 by maya, Thu Feb 24 03:38:07 2011 UTC revision 4367 by yutakapon, Sat Mar 5 14:52:45 2011 UTC
# Line 253  static void normalize_cipher_order(char Line 253  static void normalize_cipher_order(char
253          buf[i] = 0;          buf[i] = 0;
254  }  }
255    
256    static void normalize_generic_order(char *buf, char default_strings[], int default_strings_len)
257    {
258            char listed[KEX_DH_MAX + 1];
259            char allowed[KEX_DH_MAX + 1];
260            int i, j;
261    
262            memset(listed, 0, sizeof(listed));
263            memset(allowed, 0, sizeof(allowed));
264            for (i = 0; i < default_strings_len ; i++) {
265                    allowed[default_strings[i]] = 1;
266            }
267    
268            for (i = 0; buf[i] != 0; i++) {
269                    int num = buf[i] - '0';
270    
271                    if (num < 0 || num > default_strings_len
272                            || !allowed[num]
273                            || listed[num]) {
274                            memmove(buf + i, buf + i + 1, strlen(buf + i + 1) + 1);
275                            i--;
276                    } else {
277                            listed[num] = 1;
278                    }
279            }
280    
281            for (j = 0; j < default_strings_len ; j++) {
282                    int num = default_strings[j];
283    
284                    if (!listed[num]) {
285                            buf[i] = num + '0';
286                            i++;
287                    }
288            }
289    
290            buf[i] = 0;
291    }
292    
293    static void normalize_kex_order(char FAR * buf)
294    {
295            static char default_strings[] = {
296                    KEX_ECDH_SHA2_256,
297                    KEX_ECDH_SHA2_384,
298                    KEX_ECDH_SHA2_521,
299                    KEX_DH_GEX_SHA256,
300                    KEX_DH_GEX_SHA1,
301                    KEX_DH_GRP14_SHA1,
302                    KEX_DH_GRP1_SHA1,
303                    KEX_DH_NONE,
304            };
305    
306            normalize_generic_order(buf, default_strings, NUM_ELEM(default_strings));
307    }
308    
309    static void normalize_host_key_order(char FAR * buf)
310    {
311            static char default_strings[] = {
312                    KEY_ECDSA256,
313                    KEY_ECDSA384,
314                    KEY_ECDSA521,
315                    KEY_RSA,
316                    KEY_DSA,
317                    KEY_NONE,
318            };
319    
320            normalize_generic_order(buf, default_strings, NUM_ELEM(default_strings));
321    }
322    
323    static void normalize_mac_order(char FAR * buf)
324    {
325            static char default_strings[] = {
326                    HMAC_SHA1,
327                    HMAC_MD5,
328                    HMAC_NONE,
329            };
330    
331            normalize_generic_order(buf, default_strings, NUM_ELEM(default_strings));
332    }
333    
334    static void normalize_comp_order(char FAR * buf)
335    {
336            static char default_strings[] = {
337                    COMP_NONE,
338                    COMP_ZLIB,
339                    COMP_DELAYED,
340            };
341    
342            normalize_generic_order(buf, default_strings, NUM_ELEM(default_strings));
343    }
344    
345    
346  /* Remove local settings from the shared memory block. */  /* Remove local settings from the shared memory block. */
347  static void clear_local_settings(PTInstVar pvar)  static void clear_local_settings(PTInstVar pvar)
348  {  {
# Line 310  static void read_ssh_options(PTInstVar p Line 400  static void read_ssh_options(PTInstVar p
400          READ_STD_STRING_OPTION(CipherOrder);          READ_STD_STRING_OPTION(CipherOrder);
401          normalize_cipher_order(settings->CipherOrder);          normalize_cipher_order(settings->CipherOrder);
402    
403            // KEX order
404            READ_STD_STRING_OPTION(KexOrder);
405            normalize_kex_order(settings->KexOrder);
406            // Host Key algorithm order
407            READ_STD_STRING_OPTION(HostKeyOrder);
408            normalize_host_key_order(settings->HostKeyOrder);
409            // H-MAC order
410            READ_STD_STRING_OPTION(MacOrder);
411            normalize_mac_order(settings->MacOrder);
412            // Compression algorithm order
413            READ_STD_STRING_OPTION(CompOrder);
414            normalize_comp_order(settings->CompOrder);
415    
416          read_string_option(fileName, "KnownHostsFiles", "ssh_known_hosts",          read_string_option(fileName, "KnownHostsFiles", "ssh_known_hosts",
417                             settings->KnownHostsFiles,                             settings->KnownHostsFiles,
418                             sizeof(settings->KnownHostsFiles));                             sizeof(settings->KnownHostsFiles));
# Line 392  static void write_ssh_options(PTInstVar Line 495  static void write_ssh_options(PTInstVar
495          WritePrivateProfileString("TTSSH", "CipherOrder",          WritePrivateProfileString("TTSSH", "CipherOrder",
496                                    settings->CipherOrder, fileName);                                    settings->CipherOrder, fileName);
497    
498            WritePrivateProfileString("TTSSH", "KexOrder",
499                                      settings->KexOrder, fileName);
500    
501            WritePrivateProfileString("TTSSH", "HostKeyOrder",
502                                      settings->HostKeyOrder, fileName);
503    
504            WritePrivateProfileString("TTSSH", "MacOrder",
505                                      settings->MacOrder, fileName);
506    
507            WritePrivateProfileString("TTSSH", "CompOrder",
508                                      settings->CompOrder, fileName);
509    
510          WritePrivateProfileString("TTSSH", "KnownHostsFiles",          WritePrivateProfileString("TTSSH", "KnownHostsFiles",
511                                    settings->KnownHostsFiles, fileName);                                    settings->KnownHostsFiles, fileName);
512    
# Line 825  static void PASCAL FAR TTXOpenTCP(TTXSoc Line 940  static void PASCAL FAR TTXOpenTCP(TTXSoc
940    
941                  // 設定を myproposal に反映するのは、接続直前のここだけ。 (2006.6.26 maya)                  // 設定を myproposal に反映するのは、接続直前のここだけ。 (2006.6.26 maya)
942                  SSH2_update_cipher_myproposal(pvar);                  SSH2_update_cipher_myproposal(pvar);
943                    SSH2_update_kex_myproposal(pvar);
944                    SSH2_update_host_key_myproposal(pvar);
945                    SSH2_update_hmac_myproposal(pvar);
946                  SSH2_update_compression_myproposal(pvar);                  SSH2_update_compression_myproposal(pvar);
947          }          }
948  }  }

Legend:
Removed from v.4334  
changed lines
  Added in v.4367

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