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 5824 by maya, Fri Mar 13 08:51:31 2015 UTC revision 5829 by yutakapon, Thu Mar 26 15:04:45 2015 UTC
# Line 100  static BOOL handle_SSH2_userauth_failure Line 100  static BOOL handle_SSH2_userauth_failure
100  static BOOL handle_SSH2_userauth_banner(PTInstVar pvar);  static BOOL handle_SSH2_userauth_banner(PTInstVar pvar);
101  static BOOL handle_SSH2_open_confirm(PTInstVar pvar);  static BOOL handle_SSH2_open_confirm(PTInstVar pvar);
102  static BOOL handle_SSH2_open_failure(PTInstVar pvar);  static BOOL handle_SSH2_open_failure(PTInstVar pvar);
103    static BOOL handle_SSH2_client_global_request(PTInstVar pvar);
104  static BOOL handle_SSH2_request_success(PTInstVar pvar);  static BOOL handle_SSH2_request_success(PTInstVar pvar);
105  static BOOL handle_SSH2_request_failure(PTInstVar pvar);  static BOOL handle_SSH2_request_failure(PTInstVar pvar);
106  static BOOL handle_SSH2_channel_success(PTInstVar pvar);  static BOOL handle_SSH2_channel_success(PTInstVar pvar);
# Line 1669  static void init_protocol(PTInstVar pvar Line 1670  static void init_protocol(PTInstVar pvar
1670                  enque_handler(pvar, SSH2_MSG_CHANNEL_WINDOW_ADJUST, handle_SSH2_window_adjust);                  enque_handler(pvar, SSH2_MSG_CHANNEL_WINDOW_ADJUST, handle_SSH2_window_adjust);
1671                  enque_handler(pvar, SSH2_MSG_CHANNEL_SUCCESS, handle_SSH2_channel_success);                  enque_handler(pvar, SSH2_MSG_CHANNEL_SUCCESS, handle_SSH2_channel_success);
1672                  enque_handler(pvar, SSH2_MSG_CHANNEL_FAILURE, handle_SSH2_channel_failure);                  enque_handler(pvar, SSH2_MSG_CHANNEL_FAILURE, handle_SSH2_channel_failure);
1673  //              enque_handler(pvar, SSH2_MSG_GLOBAL_REQUEST, handle_unimplemented);                  enque_handler(pvar, SSH2_MSG_GLOBAL_REQUEST, handle_SSH2_client_global_request);
1674                  enque_handler(pvar, SSH2_MSG_REQUEST_FAILURE, handle_SSH2_request_failure);                  enque_handler(pvar, SSH2_MSG_REQUEST_FAILURE, handle_SSH2_request_failure);
1675                  enque_handler(pvar, SSH2_MSG_REQUEST_SUCCESS, handle_SSH2_request_success);                  enque_handler(pvar, SSH2_MSG_REQUEST_SUCCESS, handle_SSH2_request_success);
1676    
# Line 6094  static void do_SSH2_dispatch_setup_for_t Line 6095  static void do_SSH2_dispatch_setup_for_t
6095          pvar->rekeying = 0;          pvar->rekeying = 0;
6096    
6097          SSH2_dispatch_init(6);          SSH2_dispatch_init(6);
6098          SSH2_dispatch_add_range_message(SSH2_MSG_REQUEST_SUCCESS, SSH2_MSG_CHANNEL_FAILURE);          SSH2_dispatch_add_range_message(SSH2_MSG_GLOBAL_REQUEST, SSH2_MSG_CHANNEL_FAILURE);
6099          SSH2_dispatch_add_message(SSH2_MSG_IGNORE); // XXX          SSH2_dispatch_add_message(SSH2_MSG_IGNORE); // XXX
6100          // OpenSSH 3.9ではデータ通信中のDH鍵交換要求が、サーバから送られてくることがある。          // OpenSSH 3.9ではデータ通信中のDH鍵交換要求が、サーバから送られてくることがある。
6101          SSH2_dispatch_add_message(SSH2_MSG_KEXINIT);          SSH2_dispatch_add_message(SSH2_MSG_KEXINIT);
# Line 7417  static BOOL handle_SSH2_open_failure(PTI Line 7418  static BOOL handle_SSH2_open_failure(PTI
7418    
7419          return TRUE;          return TRUE;
7420  }  }
7421    
7422    
7423    // SSH2_MSG_GLOBAL_REQUEST for OpenSSH 6.8
7424    static BOOL handle_SSH2_client_global_request(PTInstVar pvar)
7425    {
7426            int len;
7427            char *data;
7428            char *rtype;
7429            int want_reply;
7430            int success = 0;
7431            buffer_t *msg;
7432            unsigned char *outmsg;
7433            int type;
7434    
7435            notify_verbose_message(pvar, "SSH2_MSG_GLOBAL_REQUEST was received.", LOG_LEVEL_VERBOSE);
7436    
7437            // 6byte(サイズ+パディング+タイプ)を取り除いた以降のペイロード
7438            data = pvar->ssh_state.payload;
7439            // パケットサイズ - (パディングサイズ+1);真のパケットサイズ
7440            len = pvar->ssh_state.payloadlen;
7441    
7442            rtype = buffer_get_string(&data, NULL);
7443            want_reply = data[0];
7444    
7445            // OpenSSH 6.8では、サーバのホスト鍵が更新されると、下記の通知が来る。
7446            if (strcmp(rtype, "hostkeys-00@openssh.com") == 0) {
7447                    // TODO: 現状、Tera Termとしては未サポートなので、失敗で返す。
7448                    success = 0;
7449            }
7450            free(rtype);
7451    
7452            msg = buffer_init();
7453            if (msg) {
7454                    len = buffer_len(msg);
7455                    type = success ? SSH2_MSG_REQUEST_SUCCESS : SSH2_MSG_REQUEST_FAILURE;
7456                    outmsg = begin_send_packet(pvar, type, len);
7457                    memcpy(outmsg, buffer_ptr(msg), len);
7458                    finish_send_packet(pvar);
7459                    buffer_free(msg);
7460            }
7461    
7462            return TRUE;
7463    }
7464    
7465    
7466  // SSH2 port-forwarding (remote -> local)に対するリプライ(成功)  // SSH2 port-forwarding (remote -> local)に対するリプライ(成功)

Legend:
Removed from v.5824  
changed lines
  Added in v.5829

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