diff --git a/Recipe b/Recipe index 2b0669c2..5058dde2 100644 --- a/Recipe +++ b/Recipe @@ -262,7 +262,7 @@ SSHCRYPTO = ARITH sshmd5 sshsha sshsh256 sshsh512 + sshdes sshblowf sshaes sshccp ssharcf + sshdh sshcrc sshcrcda sshauxcrypt + sshhmac -SSHCOMMON = sshcommon sshprng sshrand SSHCRYPTO +SSHCOMMON = sshcommon sshutils sshprng sshrand SSHCRYPTO + sshverstring + sshpubk sshzlib + sshmac marshal nullplug diff --git a/sshcommon.c b/sshcommon.c index c19880b5..09ceb590 100644 --- a/sshcommon.c +++ b/sshcommon.c @@ -356,109 +356,6 @@ static bool zombiechan_want_close(Channel *chan, bool sent_eof, bool rcvd_eof) return true; } -/* ---------------------------------------------------------------------- - * Centralised standard methods for other channel implementations to - * borrow. - */ - -void chan_remotely_opened_confirmation(Channel *chan) -{ - unreachable("this channel type should never receive OPEN_CONFIRMATION"); -} - -void chan_remotely_opened_failure(Channel *chan, const char *errtext) -{ - unreachable("this channel type should never receive OPEN_FAILURE"); -} - -bool chan_default_want_close( - Channel *chan, bool sent_local_eof, bool rcvd_remote_eof) -{ - /* - * Default close policy: we start initiating the CHANNEL_CLOSE - * procedure as soon as both sides of the channel have seen EOF. - */ - return sent_local_eof && rcvd_remote_eof; -} - -bool chan_no_exit_status(Channel *chan, int status) -{ - return false; -} - -bool chan_no_exit_signal( - Channel *chan, ptrlen signame, bool core_dumped, ptrlen msg) -{ - return false; -} - -bool chan_no_exit_signal_numeric( - Channel *chan, int signum, bool core_dumped, ptrlen msg) -{ - return false; -} - -bool chan_no_run_shell(Channel *chan) -{ - return false; -} - -bool chan_no_run_command(Channel *chan, ptrlen command) -{ - return false; -} - -bool chan_no_run_subsystem(Channel *chan, ptrlen subsys) -{ - return false; -} - -bool chan_no_enable_x11_forwarding( - Channel *chan, bool oneshot, ptrlen authproto, ptrlen authdata, - unsigned screen_number) -{ - return false; -} - -bool chan_no_enable_agent_forwarding(Channel *chan) -{ - return false; -} - -bool chan_no_allocate_pty( - Channel *chan, ptrlen termtype, unsigned width, unsigned height, - unsigned pixwidth, unsigned pixheight, struct ssh_ttymodes modes) -{ - return false; -} - -bool chan_no_set_env(Channel *chan, ptrlen var, ptrlen value) -{ - return false; -} - -bool chan_no_send_break(Channel *chan, unsigned length) -{ - return false; -} - -bool chan_no_send_signal(Channel *chan, ptrlen signame) -{ - return false; -} - -bool chan_no_change_window_size( - Channel *chan, unsigned width, unsigned height, - unsigned pixwidth, unsigned pixheight) -{ - return false; -} - -void chan_no_request_response(Channel *chan, bool success) -{ - unreachable("this channel type should never send a want-reply request"); -} - /* ---------------------------------------------------------------------- * Common routines for handling SSH tty modes. */ @@ -1047,17 +944,3 @@ void ssh1_compute_session_id( put_data(hash, cookie, 8); ssh_hash_final(hash, session_id); } - -/* ---------------------------------------------------------------------- - * Other miscellaneous utility functions. - */ - -void free_rportfwd(struct ssh_rportfwd *rpf) -{ - if (rpf) { - sfree(rpf->log_description); - sfree(rpf->shost); - sfree(rpf->dhost); - sfree(rpf); - } -} diff --git a/sshutils.c b/sshutils.c new file mode 100644 index 00000000..dd8bf561 --- /dev/null +++ b/sshutils.c @@ -0,0 +1,131 @@ +/* + * Supporting routines used in common by all the various components of + * the SSH system. + */ + +#include +#include + +#include "putty.h" +#include "mpint.h" +#include "ssh.h" +#include "sshbpp.h" +#include "sshppl.h" +#include "sshchan.h" + +/* ---------------------------------------------------------------------- + * Centralised standard methods for other channel implementations to + * borrow. + */ + +void chan_remotely_opened_confirmation(Channel *chan) +{ + unreachable("this channel type should never receive OPEN_CONFIRMATION"); +} + +void chan_remotely_opened_failure(Channel *chan, const char *errtext) +{ + unreachable("this channel type should never receive OPEN_FAILURE"); +} + +bool chan_default_want_close( + Channel *chan, bool sent_local_eof, bool rcvd_remote_eof) +{ + /* + * Default close policy: we start initiating the CHANNEL_CLOSE + * procedure as soon as both sides of the channel have seen EOF. + */ + return sent_local_eof && rcvd_remote_eof; +} + +bool chan_no_exit_status(Channel *chan, int status) +{ + return false; +} + +bool chan_no_exit_signal( + Channel *chan, ptrlen signame, bool core_dumped, ptrlen msg) +{ + return false; +} + +bool chan_no_exit_signal_numeric( + Channel *chan, int signum, bool core_dumped, ptrlen msg) +{ + return false; +} + +bool chan_no_run_shell(Channel *chan) +{ + return false; +} + +bool chan_no_run_command(Channel *chan, ptrlen command) +{ + return false; +} + +bool chan_no_run_subsystem(Channel *chan, ptrlen subsys) +{ + return false; +} + +bool chan_no_enable_x11_forwarding( + Channel *chan, bool oneshot, ptrlen authproto, ptrlen authdata, + unsigned screen_number) +{ + return false; +} + +bool chan_no_enable_agent_forwarding(Channel *chan) +{ + return false; +} + +bool chan_no_allocate_pty( + Channel *chan, ptrlen termtype, unsigned width, unsigned height, + unsigned pixwidth, unsigned pixheight, struct ssh_ttymodes modes) +{ + return false; +} + +bool chan_no_set_env(Channel *chan, ptrlen var, ptrlen value) +{ + return false; +} + +bool chan_no_send_break(Channel *chan, unsigned length) +{ + return false; +} + +bool chan_no_send_signal(Channel *chan, ptrlen signame) +{ + return false; +} + +bool chan_no_change_window_size( + Channel *chan, unsigned width, unsigned height, + unsigned pixwidth, unsigned pixheight) +{ + return false; +} + +void chan_no_request_response(Channel *chan, bool success) +{ + unreachable("this channel type should never send a want-reply request"); +} + +/* ---------------------------------------------------------------------- + * Other miscellaneous utility functions. + */ + +void free_rportfwd(struct ssh_rportfwd *rpf) +{ + if (rpf) { + sfree(rpf->log_description); + sfree(rpf->shost); + sfree(rpf->dhost); + sfree(rpf); + } +}