Revision: 10071 https://osdn.net/projects/ttssh2/scm/svn/commits/10071 Author: doda Date: 2022-07-18 00:40:28 +0900 (Mon, 18 Jul 2022) Log Message: ----------- current_keys を kex.c から直接参照しないようにした。 current_keys をどこでセットしているか分かりづらかった為。 Modified Paths: -------------- trunk/ttssh2/ttxssh/kex.c trunk/ttssh2/ttxssh/kex.h trunk/ttssh2/ttxssh/ssh.c -------------- next part -------------- Modified: trunk/ttssh2/ttxssh/kex.c =================================================================== --- trunk/ttssh2/ttxssh/kex.c 2022-07-17 15:40:17 UTC (rev 10070) +++ trunk/ttssh2/ttxssh/kex.c 2022-07-17 15:40:28 UTC (rev 10071) @@ -64,9 +64,6 @@ }; -extern SSHKeys current_keys[MODE_MAX]; - - char* get_kex_algorithm_name(kex_algorithm kextype) { const struct ssh2_kex_algorithm_t *ptr = ssh2_kex_algorithms; @@ -683,8 +680,10 @@ return digest; } - -void kex_derive_keys(PTInstVar pvar, int need, u_char *hash, BIGNUM *shared_secret, +/* + * \x8C\xAE\x8C\xF0\x8A\xB7\x82̌\x8B\x89ʂ\xA9\x82\xE7\x8Ae\x8C\xAE\x82\xAC\x82\xB5 newkeys \x82ɃZ\x83b\x83g\x82\xB5\x82Ė߂\xB7\x81B + */ +void kex_derive_keys(PTInstVar pvar, SSHKeys *newkeys, int need, u_char *hash, BIGNUM *shared_secret, char *session_id, int session_id_len) { #define NKEYS 6 @@ -703,24 +702,13 @@ else ctos = 0; -#if 0 - // free already allocated buffer (2004.12.27 yutaka) - // \x83L\x81[\x8Dč쐬\x8E\x9E\x82\xC9MAC corrupt\x82ƂȂ\xE9\x82̂ō폜\x81B(2005.1.5 yutaka) - if (current_keys[mode].enc.iv != NULL) - free(current_keys[mode].enc.iv); - if (current_keys[mode].enc.key != NULL) - free(current_keys[mode].enc.key); - if (current_keys[mode].mac.key != NULL) - free(current_keys[mode].mac.key); -#endif - // setting - current_keys[mode].enc.iv = keys[ctos ? 0 : 1]; - current_keys[mode].enc.key = keys[ctos ? 2 : 3]; - current_keys[mode].mac.key = keys[ctos ? 4 : 5]; + newkeys[mode].enc.iv = keys[ctos ? 0 : 1]; + newkeys[mode].enc.key = keys[ctos ? 2 : 3]; + newkeys[mode].mac.key = keys[ctos ? 4 : 5]; - //debug_print(20 + mode*3, current_keys[mode]->enc.iv, 8); - //debug_print(21 + mode*3, current_keys[mode]->enc.key, 24); - //debug_print(22 + mode*3, current_keys[mode]->mac.key, 24); + //debug_print(20 + mode*3, newkeys[mode]->enc.iv, 8); + //debug_print(21 + mode*3, newkeys[mode]->enc.key, 24); + //debug_print(22 + mode*3, newkeys[mode]->mac.key, 24); } } Modified: trunk/ttssh2/ttxssh/kex.h =================================================================== --- trunk/ttssh2/ttxssh/kex.h 2022-07-17 15:40:17 UTC (rev 10070) +++ trunk/ttssh2/ttxssh/kex.h 2022-07-17 15:40:28 UTC (rev 10071) @@ -134,7 +134,7 @@ unsigned int *hashlen); int dh_pub_is_valid(DH *dh, BIGNUM *dh_pub); -void kex_derive_keys(PTInstVar pvar, int need, u_char *hash, BIGNUM *shared_secret, +void kex_derive_keys(PTInstVar pvar, SSHKeys *newkeys, int need, u_char *hash, BIGNUM *shared_secret, char *session_id, int session_id_len); #endif /* KEX_H */ Modified: trunk/ttssh2/ttxssh/ssh.c =================================================================== --- trunk/ttssh2/ttxssh/ssh.c 2022-07-17 15:40:17 UTC (rev 10070) +++ trunk/ttssh2/ttxssh/ssh.c 2022-07-17 15:40:28 UTC (rev 10071) @@ -4376,9 +4376,14 @@ #endif } -SSHKeys current_keys[MODE_MAX]; +/* + * \x8C\xAE\x8C\xF0\x8A\xB7\x82Ő\xB6\x90\xAC\x82\xB5\x82\xBD\x8C\xAE\x82̒u\x82\xAB\x8F\xEA\x81B\x8E\xC0\x8Dۂ̒ʐM\x82Ɏg\x82\xED\x82\xEA\x82\xE9\x82̂\xCDpvar->ssh2_keys[]\x82ł\xA0\x82\xE8\x81A\x82\xB1\x82\xB1\x82ɒu\x82\xA2\x82\xBD\x82\xBE\x82\xAF\x82ł͎g\x82\xED\x82\xEA\x82Ȃ\xA2\x81B + * \x97L\x8C\xF8\x82ɂ\xB7\x82\xE9\x83^\x83C\x83~\x83\x93\x83O\x82ŁApvar->ssh2_keys \x82ɃR\x83s\x81[\x82\xB7\x82\xE9\x81B + */ +static SSHKeys current_keys[MODE_MAX]; + #define write_buffer_file(buf,len) do_write_buffer_file(buf,len,__FILE__,__LINE__) @@ -5478,7 +5483,7 @@ } cont: - kex_derive_keys(pvar, pvar->we_need, hash, share_key, pvar->session_id, pvar->session_id_len); + kex_derive_keys(pvar, current_keys, pvar->we_need, hash, share_key, pvar->session_id, pvar->session_id_len); // KEX finish begin_send_packet(pvar, SSH2_MSG_NEWKEYS, 0);