Develop and Download Open Source Software

Browse Subversion Repository

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

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

revision 2870 by yutakakn, Tue Jun 13 15:21:00 2006 UTC revision 2873 by yutakakn, Fri Jun 23 13:57:24 2006 UTC
# Line 640  static int prep_packet(PTInstVar pvar, c Line 640  static int prep_packet(PTInstVar pvar, c
640    
641          } else {          } else {
642                  // support of SSH2 packet compression (2005.7.9 yutaka)                  // support of SSH2 packet compression (2005.7.9 yutaka)
643                  if (pvar->stoc_compression && pvar->ssh2_keys[MODE_IN].comp.enabled) { // compression enabled                  // support of "Compression delayed" (2006.6.23 maya)
644                    if ((pvar->stoc_compression == COMP_ZLIB ||
645                             pvar->stoc_compression == COMP_DELAYED && pvar->userauth_success) &&
646                            pvar->ssh2_keys[MODE_IN].comp.enabled) { // compression enabled
647                          int ret;                          int ret;
648    
649                          if (pvar->decomp_buffer == NULL) {                          if (pvar->decomp_buffer == NULL) {
# Line 806  static void finish_send_packet_special(P Line 809  static void finish_send_packet_special(P
809                     len = ssh_state.outgoing_packet_len = payload size                     len = ssh_state.outgoing_packet_len = payload size
810                   */                   */
811                  // パケット圧縮が有効の場合、パケットを圧縮してから送信パケットを構築する。(2005.7.9 yutaka)                  // パケット圧縮が有効の場合、パケットを圧縮してから送信パケットを構築する。(2005.7.9 yutaka)
812                  if (pvar->ctos_compression && pvar->ssh2_keys[MODE_OUT].comp.enabled) {                  // support of "Compression delayed" (2006.6.23 maya)
813                    if ((pvar->ctos_compression == COMP_ZLIB ||
814                             pvar->ctos_compression == COMP_DELAYED && pvar->userauth_success) &&
815                            pvar->ssh2_keys[MODE_OUT].comp.enabled) {
816                          // このバッファは packet-length(4) + padding(1) + payload(any) を示す。                          // このバッファは packet-length(4) + padding(1) + payload(any) を示す。
817                          msg = buffer_init();                          msg = buffer_init();
818                          if (msg == NULL) {                          if (msg == NULL) {
# Line 2494  void SSH_get_compression_info(PTInstVar Line 2500  void SSH_get_compression_info(PTInstVar
2500          char buf2[1024];          char buf2[1024];
2501    
2502          // added support of SSH2 packet compression (2005.7.10 yutaka)          // added support of SSH2 packet compression (2005.7.10 yutaka)
2503          if (pvar->ssh_state.compressing || pvar->ctos_compression) {          // support of "Compression delayed" (2006.6.23 maya)
2504            if (pvar->ssh_state.compressing ||
2505                    pvar->ctos_compression == COMP_ZLIB ||
2506                    pvar->ctos_compression == COMP_DELAYED && pvar->userauth_success) {
2507                  unsigned long total_in = pvar->ssh_state.compress_stream.total_in;                  unsigned long total_in = pvar->ssh_state.compress_stream.total_in;
2508                  unsigned long total_out =                  unsigned long total_out =
2509                          pvar->ssh_state.compress_stream.total_out;                          pvar->ssh_state.compress_stream.total_out;
# Line 2513  void SSH_get_compression_info(PTInstVar Line 2522  void SSH_get_compression_info(PTInstVar
2522          }          }
2523          buf[sizeof(buf) - 1] = 0;          buf[sizeof(buf) - 1] = 0;
2524    
2525          if (pvar->ssh_state.decompressing || pvar->stoc_compression) {          // support of "Compression delayed" (2006.6.23 maya)
2526            if (pvar->ssh_state.decompressing ||
2527                    pvar->stoc_compression == COMP_ZLIB ||
2528                    pvar->stoc_compression == COMP_DELAYED && pvar->userauth_success) {
2529                  unsigned long total_in =                  unsigned long total_in =
2530                          pvar->ssh_state.decompress_stream.total_in;                          pvar->ssh_state.decompress_stream.total_in;
2531                  unsigned long total_out =                  unsigned long total_out =
# Line 2587  void SSH_end(PTInstVar pvar) Line 2599  void SSH_end(PTInstVar pvar)
2599          buf_destroy(&pvar->ssh_state.postdecompress_inbuf,          buf_destroy(&pvar->ssh_state.postdecompress_inbuf,
2600                                  &pvar->ssh_state.postdecompress_inbuflen);                                  &pvar->ssh_state.postdecompress_inbuflen);
2601    
2602          if (pvar->ssh_state.compressing || pvar->ctos_compression) { // add SSH2 flag (2005.7.10 yutaka)          // support of "Compression delayed" (2006.6.23 maya)
2603            if (pvar->ssh_state.compressing ||
2604                    pvar->ctos_compression == COMP_ZLIB || // add SSH2 flag (2005.7.10 yutaka)
2605                    pvar->ctos_compression == COMP_DELAYED && pvar->userauth_success) {
2606                  deflateEnd(&pvar->ssh_state.compress_stream);                  deflateEnd(&pvar->ssh_state.compress_stream);
2607                  pvar->ssh_state.compressing = FALSE;                  pvar->ssh_state.compressing = FALSE;
2608          }          }
2609          if (pvar->ssh_state.decompressing || pvar->stoc_compression) { // add SSH2 flag (2005.7.10 yutaka)          // support of "Compression delayed" (2006.6.23 maya)
2610            if (pvar->ssh_state.decompressing ||
2611                    pvar->stoc_compression == COMP_ZLIB || // add SSH2 flag (2005.7.10 yutaka)
2612                    pvar->stoc_compression == COMP_DELAYED && pvar->userauth_success) {
2613                  inflateEnd(&pvar->ssh_state.decompress_stream);                  inflateEnd(&pvar->ssh_state.decompress_stream);
2614                  pvar->ssh_state.decompressing = FALSE;                  pvar->ssh_state.decompressing = FALSE;
2615          }          }
# Line 3124  static char *myproposal[PROPOSAL_MAX] = Line 3142  static char *myproposal[PROPOSAL_MAX] =
3142  //      "hmac-sha1,hmac-md5",  //      "hmac-sha1,hmac-md5",
3143  //      "hmac-sha1",  //      "hmac-sha1",
3144  //      "hmac-sha1",  //      "hmac-sha1",
3145          "none,zlib",          KEX_DEFAULT_COMP,
3146          "none,zlib",          KEX_DEFAULT_COMP,
3147          "",          "",
3148          "",          "",
3149  };  };
# Line 3137  static char *myproposal[PROPOSAL_MAX] = Line 3155  static char *myproposal[PROPOSAL_MAX] =
3155          "3des-cbc,aes128-cbc",          "3des-cbc,aes128-cbc",
3156          "hmac-sha1,hmac-md5",          "hmac-sha1,hmac-md5",
3157          "hmac-sha1,hmac-md5",          "hmac-sha1,hmac-md5",
3158          "none,zlib",          KEX_DEFAULT_COMP,
3159          "none,zlib",          KEX_DEFAULT_COMP,
3160          "",          "",
3161          "",          "",
3162  };  };
# Line 3296  void SSH2_update_compression_myproposal( Line 3314  void SSH2_update_compression_myproposal(
3314          // 圧縮レベルに応じて、myproposal[]を書き換える。(2005.7.9 yutaka)          // 圧縮レベルに応じて、myproposal[]を書き換える。(2005.7.9 yutaka)
3315          buf[0] = '\0';          buf[0] = '\0';
3316          if (pvar->ts_SSH->CompressionLevel > 0) {          if (pvar->ts_SSH->CompressionLevel > 0) {
3317                  _snprintf(buf, sizeof(buf), "zlib,none");                  // 将来的に圧縮アルゴリズムの優先度をユーザが変えられるようにする。
3318                    _snprintf(buf, sizeof(buf), "zlib@openssh.com,zlib,none");
3319          }          }
3320          if (buf[0] != '\0') {          if (buf[0] != '\0') {
3321                  myproposal[PROPOSAL_COMP_ALGS_CTOS] = buf;  // Client To Server                  myproposal[PROPOSAL_COMP_ALGS_CTOS] = buf;  // Client To Server
# Line 3401  static enum hmac_type choose_SSH2_hmac_a Line 3420  static enum hmac_type choose_SSH2_hmac_a
3420  static int choose_SSH2_compression_algorithm(char *server_proposal, char *my_proposal)  static int choose_SSH2_compression_algorithm(char *server_proposal, char *my_proposal)
3421  {  {
3422          char tmp[1024], *ptr, *q, *index;          char tmp[1024], *ptr, *q, *index;
3423          int ret = -1;          int ret = COMP_UNKNOWN;
3424    
3425          // OpenSSH 4.3では遅延パケット圧縮("zlib@openssh.com")が新規追加されているため、          // OpenSSH 4.3では遅延パケット圧縮("zlib@openssh.com")が新規追加されているため、
3426          // マッチしないように修正した。          // マッチしないように修正した。
3427          // 現TeraTermでは遅延パケット圧縮は将来的にサポートする予定。          // 現TeraTermでは遅延パケット圧縮は将来的にサポートする予定。
3428          // (2006.6.14 yutaka)          // (2006.6.14 yutaka)
3429            // 遅延パケット圧縮に対応。
3430            // (2006.6.23 maya)
3431    
3432          _snprintf(tmp, sizeof(tmp), my_proposal);          _snprintf(tmp, sizeof(tmp), my_proposal);
3433          ptr = strtok(tmp, ","); // not thread-safe          ptr = strtok(tmp, ","); // not thread-safe
# Line 3424  static int choose_SSH2_compression_algor Line 3445  static int choose_SSH2_compression_algor
3445          }          }
3446    
3447  found:  found:
3448          if (strstr(ptr, "zlib")) {          // support of "Compression delayed" (2006.6.23 maya)
3449                  ret = 1; // packet compression enabled          if (strstr(ptr, "zlib@openssh.com")) {
3450                    ret = COMP_DELAYED;
3451            } else if (strstr(ptr, "zlib")) {
3452                    ret = COMP_ZLIB; // packet compression enabled
3453          } else if (strstr(ptr, "none")) {          } else if (strstr(ptr, "none")) {
3454                  ret = 0; // packet compression disabled                  ret = COMP_NONE; // packet compression disabled
3455          }          }
3456    
3457          return (ret);          return (ret);
# Line 3719  static BOOL handle_SSH2_kexinit(PTInstVa Line 3743  static BOOL handle_SSH2_kexinit(PTInstVa
3743          buf[i] = 0;          buf[i] = 0;
3744          offset += size;          offset += size;
3745          pvar->ctos_compression = choose_SSH2_compression_algorithm(buf, myproposal[PROPOSAL_COMP_ALGS_CTOS]);          pvar->ctos_compression = choose_SSH2_compression_algorithm(buf, myproposal[PROPOSAL_COMP_ALGS_CTOS]);
3746          if (pvar->ctos_compression == -1) { // not match          if (pvar->ctos_compression == COMP_UNKNOWN) { // not match
3747                  strcpy(tmp, "unknown Packet Compression algorithm: ");                  strcpy(tmp, "unknown Packet Compression algorithm: ");
3748                  strcat(tmp, buf);                  strcat(tmp, buf);
3749                  msg = tmp;                  msg = tmp;
# Line 3734  static BOOL handle_SSH2_kexinit(PTInstVa Line 3758  static BOOL handle_SSH2_kexinit(PTInstVa
3758          buf[i] = 0;          buf[i] = 0;
3759          offset += size;          offset += size;
3760          pvar->stoc_compression = choose_SSH2_compression_algorithm(buf, myproposal[PROPOSAL_COMP_ALGS_STOC]);          pvar->stoc_compression = choose_SSH2_compression_algorithm(buf, myproposal[PROPOSAL_COMP_ALGS_STOC]);
3761          if (pvar->stoc_compression == -1) { // not match          if (pvar->stoc_compression == COMP_UNKNOWN) { // not match
3762                  strcpy(tmp, "unknown Packet Compression algorithm: ");                  strcpy(tmp, "unknown Packet Compression algorithm: ");
3763                  strcat(tmp, buf);                  strcat(tmp, buf);
3764                  msg = tmp;                  msg = tmp;
# Line 6828  static BOOL handle_SSH2_window_adjust(PT Line 6852  static BOOL handle_SSH2_window_adjust(PT
6852    
6853  /*  /*
6854   * $Log: not supported by cvs2svn $   * $Log: not supported by cvs2svn $
6855     * Revision 1.45  2006/06/13 15:21:00  yutakakn
6856     * OpenSSH 4.3以降で遅延パケット圧縮が設定されている場合、従来のパケット圧縮を有効にした状態でのサーバへの接続ができないバグを修正した。
6857     *
6858   * Revision 1.44  2006/04/07 13:24:16  yutakakn   * Revision 1.44  2006/04/07 13:24:16  yutakakn
6859   * HP-UXにおいてX11 fowardingが失敗した場合に、SSH2セッションが切断されないようにした。   * HP-UXにおいてX11 fowardingが失敗した場合に、SSH2セッションが切断されないようにした。
6860   *   *

Legend:
Removed from v.2870  
changed lines
  Added in v.2873

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