| 1765 |
prep_pty(pvar); |
prep_pty(pvar); |
| 1766 |
} |
} |
| 1767 |
|
|
| 1768 |
static void enable_compression(PTInstVar pvar) |
|
| 1769 |
|
// |
| 1770 |
|
// |
| 1771 |
|
// (2005.7.10 yutaka) |
| 1772 |
|
static void enable_send_compression(PTInstVar pvar) |
| 1773 |
{ |
{ |
| 1774 |
|
static int initialize = 0; |
| 1775 |
|
|
| 1776 |
|
if (initialize) { |
| 1777 |
|
deflateEnd(&pvar->ssh_state.compress_stream); |
| 1778 |
|
} |
| 1779 |
|
initialize = 1; |
| 1780 |
|
|
| 1781 |
pvar->ssh_state.compress_stream.zalloc = NULL; |
pvar->ssh_state.compress_stream.zalloc = NULL; |
| 1782 |
pvar->ssh_state.compress_stream.zfree = NULL; |
pvar->ssh_state.compress_stream.zfree = NULL; |
| 1783 |
pvar->ssh_state.compress_stream.opaque = NULL; |
pvar->ssh_state.compress_stream.opaque = NULL; |
| 1789 |
"The connection will close."); |
"The connection will close."); |
| 1790 |
return; |
return; |
| 1791 |
} else { |
} else { |
| 1792 |
pvar->ssh_state.compressing = TRUE; |
// SSH2では圧縮・展開処理をSSH1とは別に行うので、下記フラグは落としておく。(2005.7.9 yutaka) |
| 1793 |
|
if (SSHv2(pvar)) { |
| 1794 |
|
pvar->ssh_state.compressing = FALSE; |
| 1795 |
|
} else { |
| 1796 |
|
pvar->ssh_state.compressing = TRUE; |
| 1797 |
|
} |
| 1798 |
} |
} |
| 1799 |
|
} |
| 1800 |
|
|
| 1801 |
|
static void enable_recv_compression(PTInstVar pvar) |
| 1802 |
|
{ |
| 1803 |
|
static int initialize = 0; |
| 1804 |
|
|
| 1805 |
|
if (initialize) { |
| 1806 |
|
deflateEnd(&pvar->ssh_state.decompress_stream); |
| 1807 |
|
} |
| 1808 |
|
initialize = 1; |
| 1809 |
|
|
| 1810 |
pvar->ssh_state.decompress_stream.zalloc = NULL; |
pvar->ssh_state.decompress_stream.zalloc = NULL; |
| 1811 |
pvar->ssh_state.decompress_stream.zfree = NULL; |
pvar->ssh_state.decompress_stream.zfree = NULL; |
| 1817 |
"The connection will close."); |
"The connection will close."); |
| 1818 |
return; |
return; |
| 1819 |
} else { |
} else { |
| 1820 |
pvar->ssh_state.decompressing = TRUE; |
// SSH2では圧縮・展開処理をSSH1とは別に行うので、下記フラグは落としておく。(2005.7.9 yutaka) |
| 1821 |
|
if (SSHv2(pvar)) { |
| 1822 |
|
pvar->ssh_state.decompressing = FALSE; |
| 1823 |
|
} else { |
| 1824 |
|
pvar->ssh_state.decompressing = TRUE; |
| 1825 |
|
} |
| 1826 |
|
|
| 1827 |
buf_ensure_size(&pvar->ssh_state.postdecompress_inbuf, |
buf_ensure_size(&pvar->ssh_state.postdecompress_inbuf, |
| 1828 |
&pvar->ssh_state.postdecompress_inbuflen, 1000); |
&pvar->ssh_state.postdecompress_inbuflen, 1000); |
| 1829 |
} |
} |
| 1830 |
|
} |
| 1831 |
|
|
| 1832 |
|
static void enable_compression(PTInstVar pvar) |
| 1833 |
|
{ |
| 1834 |
|
enable_send_compression(pvar); |
| 1835 |
|
enable_recv_compression(pvar); |
| 1836 |
|
|
| 1837 |
// SSH2では圧縮・展開処理をSSH1とは別に行うので、下記フラグは落としておく。(2005.7.9 yutaka) |
// SSH2では圧縮・展開処理をSSH1とは別に行うので、下記フラグは落としておく。(2005.7.9 yutaka) |
| 1838 |
if (SSHv2(pvar)) { |
if (SSHv2(pvar)) { |
| 2573 |
buf_destroy(&pvar->ssh_state.postdecompress_inbuf, |
buf_destroy(&pvar->ssh_state.postdecompress_inbuf, |
| 2574 |
&pvar->ssh_state.postdecompress_inbuflen); |
&pvar->ssh_state.postdecompress_inbuflen); |
| 2575 |
|
|
| 2576 |
if (pvar->ssh_state.compressing) { |
if (pvar->ssh_state.compressing || pvar->ctos_compression) { // add SSH2 flag (2005.7.10 yutaka) |
| 2577 |
deflateEnd(&pvar->ssh_state.compress_stream); |
deflateEnd(&pvar->ssh_state.compress_stream); |
| 2578 |
pvar->ssh_state.compressing = FALSE; |
pvar->ssh_state.compressing = FALSE; |
| 2579 |
} |
} |
| 2580 |
if (pvar->ssh_state.decompressing) { |
if (pvar->ssh_state.decompressing || pvar->stoc_compression) { // add SSH2 flag (2005.7.10 yutaka) |
| 2581 |
inflateEnd(&pvar->ssh_state.decompress_stream); |
inflateEnd(&pvar->ssh_state.decompress_stream); |
| 2582 |
pvar->ssh_state.decompressing = FALSE; |
pvar->ssh_state.decompressing = FALSE; |
| 2583 |
} |
} |
| 4663 |
ssh2_set_newkeys(pvar, MODE_OUT); |
ssh2_set_newkeys(pvar, MODE_OUT); |
| 4664 |
pvar->ssh2_keys[MODE_OUT].mac.enabled = 1; |
pvar->ssh2_keys[MODE_OUT].mac.enabled = 1; |
| 4665 |
pvar->ssh2_keys[MODE_OUT].comp.enabled = 1; |
pvar->ssh2_keys[MODE_OUT].comp.enabled = 1; |
| 4666 |
|
enable_send_compression(pvar); |
| 4667 |
if (!CRYPT_start_encryption(pvar, 1, 0)) { |
if (!CRYPT_start_encryption(pvar, 1, 0)) { |
| 4668 |
// TODO: error |
// TODO: error |
| 4669 |
} |
} |
| 4977 |
ssh2_set_newkeys(pvar, MODE_OUT); |
ssh2_set_newkeys(pvar, MODE_OUT); |
| 4978 |
pvar->ssh2_keys[MODE_OUT].mac.enabled = 1; |
pvar->ssh2_keys[MODE_OUT].mac.enabled = 1; |
| 4979 |
pvar->ssh2_keys[MODE_OUT].comp.enabled = 1; |
pvar->ssh2_keys[MODE_OUT].comp.enabled = 1; |
| 4980 |
|
enable_send_compression(pvar); |
| 4981 |
if (!CRYPT_start_encryption(pvar, 1, 0)) { |
if (!CRYPT_start_encryption(pvar, 1, 0)) { |
| 4982 |
// TODO: error |
// TODO: error |
| 4983 |
} |
} |
| 5069 |
ssh2_set_newkeys(pvar, MODE_IN); |
ssh2_set_newkeys(pvar, MODE_IN); |
| 5070 |
pvar->ssh2_keys[MODE_IN].mac.enabled = 1; |
pvar->ssh2_keys[MODE_IN].mac.enabled = 1; |
| 5071 |
pvar->ssh2_keys[MODE_IN].comp.enabled = 1; |
pvar->ssh2_keys[MODE_IN].comp.enabled = 1; |
| 5072 |
|
enable_recv_compression(pvar); |
| 5073 |
if (!CRYPT_start_encryption(pvar, 0, 1)) { |
if (!CRYPT_start_encryption(pvar, 0, 1)) { |
| 5074 |
// TODO: error |
// TODO: error |
| 5075 |
} |
} |
| 6372 |
|
|
| 6373 |
/* |
/* |
| 6374 |
* $Log: not supported by cvs2svn $ |
* $Log: not supported by cvs2svn $ |
| 6375 |
|
* Revision 1.34 2005/07/09 17:08:47 yutakakn |
| 6376 |
|
* SSH2 packet compressionをサポートした。 |
| 6377 |
|
* |
| 6378 |
* Revision 1.33 2005/07/03 13:32:00 yutakakn |
* Revision 1.33 2005/07/03 13:32:00 yutakakn |
| 6379 |
* SSH2 port-forwardingの初期化タイミングを変更。 |
* SSH2 port-forwardingの初期化タイミングを変更。 |
| 6380 |
* |
* |