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 4374 by doda, Tue Mar 8 01:00:58 2011 UTC revision 4378 by maya, Tue Mar 8 14:19:03 2011 UTC
# Line 102  static TInstVar FAR *pvar; Line 102  static TInstVar FAR *pvar;
102  typedef struct {  typedef struct {
103          int cnt;          int cnt;
104          HWND dlg;          HWND dlg;
105          enum ssh_keytype type;          ssh_keytype type;
106  } cbarg_t;  } cbarg_t;
107    
108    /* WIN32 allows multiple instances of a DLL */    /* WIN32 allows multiple instances of a DLL */
# Line 178  static void PASCAL FAR TTXInit(PTTSet ts Line 178  static void PASCAL FAR TTXInit(PTTSet ts
178          init_TTSSH(pvar);          init_TTSSH(pvar);
179  }  }
180    
181    static void normalize_generic_order(char *buf, char default_strings[], int default_strings_len)
182    {
183            char listed[max(KEX_DH_MAX,max(SSH_CIPHER_MAX,max(KEY_MAX,max(HMAC_MAX,COMP_MAX)))) + 1];
184            char allowed[max(KEX_DH_MAX,max(SSH_CIPHER_MAX,max(KEY_MAX,max(HMAC_MAX,COMP_MAX)))) + 1];
185            int i, j;
186    
187            memset(listed, 0, sizeof(listed));
188            memset(allowed, 0, sizeof(allowed));
189            for (i = 0; i < default_strings_len ; i++) {
190                    allowed[default_strings[i]] = 1;
191            }
192    
193            for (i = 0; buf[i] != 0; i++) {
194                    int num = buf[i] - '0';
195    
196                    if (num < 0 || num > default_strings_len
197                            || !allowed[num]
198                            || listed[num]) {
199                            memmove(buf + i, buf + i + 1, strlen(buf + i + 1) + 1);
200                            i--;
201                    } else {
202                            listed[num] = 1;
203                    }
204            }
205    
206            for (j = 0; j < default_strings_len ; j++) {
207                    int num = default_strings[j];
208    
209                    if (!listed[num]) {
210                            buf[i] = num + '0';
211                            i++;
212                    }
213            }
214    
215            buf[i] = 0;
216    }
217    
218  /*  /*
219   * Remove unsupported cipher or duplicated cipher.   * Remove unsupported cipher or duplicated cipher.
220   * Add unspecified ciphers at the end of list.   * Add unspecified ciphers at the end of list.
221   */   */
222  static void normalize_cipher_order(char FAR * buf)  static void normalize_cipher_order(char FAR * buf)
223  {  {
         char ciphers_listed[SSH_CIPHER_MAX + 1];  
         char ciphers_allowed[SSH_CIPHER_MAX + 1];  
         int i, j;  
   
224          /* SSH_CIPHER_NONE means that all ciphers below that one are disabled.          /* SSH_CIPHER_NONE means that all ciphers below that one are disabled.
225             We *never* allow no encryption. */             We *never* allow no encryption. */
226  #if 0  #if 0
227          static char default_ciphers[] = {          static char default_strings[] = {
228                  SSH_CIPHER_3DES,                  SSH_CIPHER_3DES,
229                  SSH_CIPHER_NONE,                  SSH_CIPHER_NONE,
230                  SSH_CIPHER_DES, SSH_CIPHER_BLOWFISH                  SSH_CIPHER_DES, SSH_CIPHER_BLOWFISH
231          };          };
232  #else  #else
233          // for SSH2(yutaka)          // for SSH2(yutaka)
234          static char default_ciphers[] = {          static char default_strings[] = {
235                  SSH2_CIPHER_AES256_CTR,                  SSH2_CIPHER_AES256_CTR,
236                  SSH2_CIPHER_AES256_CBC,                  SSH2_CIPHER_AES256_CBC,
237                  SSH2_CIPHER_AES192_CTR,                  SSH2_CIPHER_AES192_CTR,
# Line 221  static void normalize_cipher_order(char Line 254  static void normalize_cipher_order(char
254          };          };
255  #endif  #endif
256    
257          memset(ciphers_listed, 0, sizeof(ciphers_listed));          normalize_generic_order(buf, default_strings, NUM_ELEM(default_strings));
   
         memset(ciphers_allowed, 0, sizeof(ciphers_allowed));  
         for (i = 0; i < NUM_ELEM(default_ciphers); i++) {  
                 ciphers_allowed[default_ciphers[i]] = 1;  
         }  
   
         for (i = 0; buf[i] != 0; i++) {  
                 int cipher_num = buf[i] - '0';  
   
                 if (cipher_num < 0 || cipher_num > SSH_CIPHER_MAX  
                         || !ciphers_allowed[cipher_num]  
                         || ciphers_listed[cipher_num]) {  
                         memmove(buf + i, buf + i + 1, strlen(buf + i + 1) + 1);  
                         i--;  
                 } else {  
                         ciphers_listed[cipher_num] = 1;  
                 }  
         }  
   
         for (j = 0; j < NUM_ELEM(default_ciphers); j++) {  
                 int cipher_num = default_ciphers[j];  
   
                 if (!ciphers_listed[cipher_num]) {  
                         buf[i] = cipher_num + '0';  
                         i++;  
                 }  
         }  
   
         buf[i] = 0;  
 }  
   
 static void normalize_generic_order(char *buf, char default_strings[], int default_strings_len)  
 {  
         char listed[KEX_DH_MAX + 1];  
         char allowed[KEX_DH_MAX + 1];  
         int i, j;  
   
         memset(listed, 0, sizeof(listed));  
         memset(allowed, 0, sizeof(allowed));  
         for (i = 0; i < default_strings_len ; i++) {  
                 allowed[default_strings[i]] = 1;  
         }  
   
         for (i = 0; buf[i] != 0; i++) {  
                 int num = buf[i] - '0';  
   
                 if (num < 0 || num > default_strings_len  
                         || !allowed[num]  
                         || listed[num]) {  
                         memmove(buf + i, buf + i + 1, strlen(buf + i + 1) + 1);  
                         i--;  
                 } else {  
                         listed[num] = 1;  
                 }  
         }  
   
         for (j = 0; j < default_strings_len ; j++) {  
                 int num = default_strings[j];  
   
                 if (!listed[num]) {  
                         buf[i] = num + '0';  
                         i++;  
                 }  
         }  
   
         buf[i] = 0;  
258  }  }
259    
260  static void normalize_kex_order(char FAR * buf)  static void normalize_kex_order(char FAR * buf)
# Line 336  static void normalize_comp_order(char FA Line 303  static void normalize_comp_order(char FA
303          static char default_strings[] = {          static char default_strings[] = {
304                  COMP_DELAYED,                  COMP_DELAYED,
305                  COMP_ZLIB,                  COMP_ZLIB,
306                    COMP_NOCOMP,
307                  COMP_NONE,                  COMP_NONE,
308          };          };
309    
# Line 2355  static void init_about_dlg(PTInstVar pva Line 2323  static void init_about_dlg(PTInstVar pva
2323                          UTIL_get_lang_msg("DLG_ABOUT_PROTOCOL", pvar, "Using protocol:");                          UTIL_get_lang_msg("DLG_ABOUT_PROTOCOL", pvar, "Using protocol:");
2324                          append_about_text(dlg, pvar->ts->UIMsg, buf);                          append_about_text(dlg, pvar->ts->UIMsg, buf);
2325    
2326                          append_about_text(dlg, "KEX:", ssh2_kex_algorithms[pvar->kex_type].name);                          append_about_text(dlg, "KEX:", get_kex_algorithm_name(pvar->kex_type));
2327    
2328                          strncpy_s(buf, sizeof(buf), get_sshname_from_keytype(pvar->hostkey_type), _TRUNCATE);                          strncpy_s(buf, sizeof(buf), get_ssh_keytype_name(pvar->hostkey_type), _TRUNCATE);
2329                          UTIL_get_lang_msg("DLG_ABOUT_HOSTKEY", pvar, "Host Key:");                          UTIL_get_lang_msg("DLG_ABOUT_HOSTKEY", pvar, "Host Key:");
2330                          append_about_text(dlg, pvar->ts->UIMsg, buf);                          append_about_text(dlg, pvar->ts->UIMsg, buf);
2331    
2332                          // add HMAC algorithm (2004.12.17 yutaka)                          // add HMAC algorithm (2004.12.17 yutaka)
2333                          buf[0] = '\0';                          buf[0] = '\0';
2334                          strncat_s(buf, sizeof(buf), ssh2_macs[pvar->ctos_hmac].name , _TRUNCATE);                          strncat_s(buf, sizeof(buf), get_ssh2_mac_name(pvar->ctos_hmac) , _TRUNCATE);
2335                          UTIL_get_lang_msg("DLG_ABOUT_TOSERVER", pvar, " to server,");                          UTIL_get_lang_msg("DLG_ABOUT_TOSERVER", pvar, " to server,");
2336                          strncat_s(buf, sizeof(buf), pvar->ts->UIMsg, _TRUNCATE);                          strncat_s(buf, sizeof(buf), pvar->ts->UIMsg, _TRUNCATE);
2337                          strncat_s(buf, sizeof(buf), ssh2_macs[pvar->stoc_hmac].name , _TRUNCATE);                          strncat_s(buf, sizeof(buf), get_ssh2_mac_name(pvar->stoc_hmac) , _TRUNCATE);
2338                          UTIL_get_lang_msg("DLG_ABOUT_FROMSERVER", pvar, " from server");                          UTIL_get_lang_msg("DLG_ABOUT_FROMSERVER", pvar, " from server");
2339                          strncat_s(buf, sizeof(buf), pvar->ts->UIMsg, _TRUNCATE);                          strncat_s(buf, sizeof(buf), pvar->ts->UIMsg, _TRUNCATE);
2340                          append_about_text(dlg, "HMAC:", buf);                          append_about_text(dlg, "HMAC:", buf);
# Line 2980  typedef struct { Line 2948  typedef struct {
2948          RSA *rsa;          RSA *rsa;
2949          DSA *dsa;          DSA *dsa;
2950          EC_KEY *ecdsa;          EC_KEY *ecdsa;
2951          enum ssh_keytype type;          ssh_keytype type;
2952  } ssh_private_key_t;  } ssh_private_key_t;
2953    
2954  static ssh_private_key_t private_key = {NULL, NULL, NULL, KEY_UNSPEC};  static ssh_private_key_t private_key = {NULL, NULL, NULL, KEY_UNSPEC};
# Line 2989  typedef struct { Line 2957  typedef struct {
2957          RSA *rsa;          RSA *rsa;
2958          DSA *dsa;          DSA *dsa;
2959          EC_KEY *ecdsa;          EC_KEY *ecdsa;
2960          enum ssh_keytype type;          ssh_keytype type;
2961  } ssh_public_key_t;  } ssh_public_key_t;
2962    
2963  static ssh_public_key_t public_key = {NULL, NULL, NULL, KEY_UNSPEC};  static ssh_public_key_t public_key = {NULL, NULL, NULL, KEY_UNSPEC};
# Line 3016  static void free_ssh_key(void) Line 2984  static void free_ssh_key(void)
2984          public_key.type = KEY_UNSPEC;          public_key.type = KEY_UNSPEC;
2985  }  }
2986    
2987  static BOOL generate_ssh_key(enum ssh_keytype type, int bits, void (*cbfunc)(int, int, void *), void *cbarg)  static BOOL generate_ssh_key(ssh_keytype type, int bits, void (*cbfunc)(int, int, void *), void *cbarg)
2988  {  {
2989          // if SSH key already is generated, should free the resource.          // if SSH key already is generated, should free the resource.
2990          free_ssh_key();          free_ssh_key();
# Line 3605  static void keygen_progress(int phase, i Line 3573  static void keygen_progress(int phase, i
3573  static BOOL CALLBACK TTXKeyGenerator(HWND dlg, UINT msg, WPARAM wParam,  static BOOL CALLBACK TTXKeyGenerator(HWND dlg, UINT msg, WPARAM wParam,
3574                                       LPARAM lParam)                                       LPARAM lParam)
3575  {  {
3576          static enum ssh_keytype key_type;          static ssh_keytype key_type;
3577          static int saved_key_bits;          static int saved_key_bits;
3578          char uimsg[MAX_UIMSG];          char uimsg[MAX_UIMSG];
3579          LOGFONT logfont;          LOGFONT logfont;
# Line 3962  static BOOL CALLBACK TTXKeyGenerator(HWN Line 3930  static BOOL CALLBACK TTXKeyGenerator(HWN
3930                                  case KEY_ECDSA256: // ECDSA                                  case KEY_ECDSA256: // ECDSA
3931                                  case KEY_ECDSA384:                                  case KEY_ECDSA384:
3932                                  case KEY_ECDSA521:                                  case KEY_ECDSA521:
3933                                          keyname = get_sshname_from_keytype(public_key.type);                                          keyname = get_ssh_keytype_name(public_key.type);
3934                                          buffer_put_string(b, keyname, strlen(keyname));                                          buffer_put_string(b, keyname, strlen(keyname));
3935                                          s = curve_keytype_to_name(public_key.type);                                          s = curve_keytype_to_name(public_key.type);
3936                                          buffer_put_string(b, s, strlen(s));                                          buffer_put_string(b, s, strlen(s));

Legend:
Removed from v.4374  
changed lines
  Added in v.4378

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