2001-02-04  Niels Mller  <nisse@lysator.liu.se>

	* Released lsh-1.1.6.

	* src/ssh-conv (SSH_CONV): Got rid of the bash:isms "if !" and
	"&>".

2001-02-04  Niels Mller  <nisse@cuckoo.localdomain>

	* doc/lsh.texinfo (Action options): Edited the description of the
	-g, not calling it "gateway mode", as the word "gateway" is
	associated with the '-G' option.
	(Invoking lshd): Documented --kerberos-passwords,
	--password-helper and --login-shell.
	Changed UPDATED-FOR to 1.1.6.

	* configure.in: Bumped version to 1.1.6.

	* src/testsuite/Makefile.am (TS_SH, TS_MORE_SH): Added a few more
	tests. 

	* src/testsuite/functions.sh: New variable HOSTKEY for configuring
	which hostkey to use.

	* src/unix_user.c (unix_user_db): New attribute login_shell.
	(do_lookup_user): Let self->login_shell, if non-NULL, override the
	login shell in the passwd database.
	(make_unix_user_db): New argument login_shell.

	* src/rsa_keygen.c (rsa_generate_key): Changed "e not invertible"
	message from werror() to debug().

	* src/lshd.c (main_options): New option --login-shell.

	* src/lsh-keygen.c (main): When generating an rsa key, display a
	better message before trying again.

	* src/client_keyexchange.c (do_handle_dh_reply): If the server's
	signature doesn't verify, display a warning message before
	disconnecting.

	* src/rsa.c (parse_ssh_rsa_public): Call rsa_check_size, to make
	sure that the ->size attribute is initialized.

	* src/testsuite/key-2.private: Created an RSA testkey.

	* src/testsuite/write-key-1-test, src/testsuite/write-key-2-test:
	Renamed keygen-test and keygen-2-test. 

	* src/testsuite/conv-2-test: New test for reading an openssh rsa
	key.

	* src/testsuite/conv-1-test: Renamed conv-test.

2001-01-31  Niels Mller  <nisse@ehand.com>

	* src/server_publickey.c (do_authenticate): Include algorithm atom
	in "Unknown publickey algorithm"-message.

	* src/process_atoms (table): Fixed first reverse entry, {
	"UNKNOWN", 7}.

	* src/lsh-authorize: Redirect output from the type command to
	/dev/null. 

	* src/server_password.c (do_authenticate): Don't free the username
	twice.

	* src/server_authorization.c (do_key_lookup): Support ssh-rsa
	keys.

	* src/lshd.c (main_argp_parser): Support RSA keys for publickey
	userauth.

	* src/io.c (io_iter): Changed POLLHUP handling some more. Now
	POLLHUP && !POLLIN is treated as EOF.

2001-01-31  Niels Mller  <nisse@cuckoo.localdomain>

	* src/testsuite/lsh-cat-test: Use compare_output.

	* src/testsuite/lsh-1-test: Use test_success. 
	* src/testsuite/lsh-2-test: Likewise. 
	* src/testsuite/lsh-3-test: Likewise. 
	* src/testsuite/lsh-4-test: Likewise. 
	* src/testsuite/tcpip-local-test: Likewise. 
	* src/testsuite/tcpip-remote-test: Likewise. 

	* src/testsuite/keygen-2-test: Use functions.sh and test_success. 
	* src/testsuite/keygen-test: Likewise.

	* src/testsuite/functions.sh (at_exit): Fixed the at_exit
	mechanism. The previous code always exited successfully.
	(test_result): New variable for keeping the desired exit status. 
	(test_fail): New function.
	(test_success): Likewise.
	(compare_output): Likewise.

	* src/testsuite/Makefile.am (TS_SH): Added conv-test.

	* src/testsuite/conv-test: New test program.

	* src/unix_random.c (background_poll): Changed werror() to debug().
	(start_background_poll): Changed werror() to verbose().

	* src/tcpforward.c (do_tcpip_eof): Removed channel close logic,
	now in channel.c, channel_of_handler.

	* src/ssh-conv: Don't look for lsh-decode-key in the current
	directory. Added command line options --help, --usage,
	--decode-with. 

	* src/server_session.c (do_eof): Removed channel close logic, now
	in channel.c, channel_of_handler.
	(do_exit_shell): Added a verbose() message.

	* src/lsh-decode-key.c: Include rsa.h. Added program name prefix
	to the diagnostic messages.

	* src/io.c (do_buffered_read, do_consuming_read): Don't call
	read() if fd->hanged_up is set.
	(init_file): Initialize hanged_up.

2001-01-30  Niels Mller  <nisse@cuckoo.localdomain>

	* src/io.c (io_iter): Improved handling of POLLHUP. Set the
	fd->hanged_up flag before calling FD_READ().

	* src/io.h (lsh_fd): New attribute hanged_up.

	* src/client.c (do_exit_status): Added a verbose() message.

	* src/channel.c (channel_read_close_callback): Call channel_eof, not
	channel_close. 
	(channel_eof_handler): Moved the channel close decision here.

2001-01-29  Niels Mller  <nisse@cuckoo.localdomain>

	* src/ssh-conv: Support ssh-rsa keys.

	* src/lsh-decode-key.c (do_decode_key): Support ssh-rsa keys.

2001-01-24  Niels Mller  <nisse@cuckoo.localdomain>

	* src/spki_commands.c (parse_private_key): Generate keypairs with
	algorithms ATOM_SSH_RSA, ATOM_SPKI_SIGN_RSA and ATOM_SPKI_SIGN_DSS.

	* src/rsa.c (do_rsa_verify): Replaced ATOM_RSA_PKCS1_SHA1 with
	ATOM_SSH_RSA, and replaced ATOM_SPKI with ATOM_SPKI_SIGN_RSA and
	ATOM_SPKI_SIGN_DSS.
	(do_rsa_sign): Likewise.
	(parse_ssh_rsa_public): New function.
	(make_ssh_rsa_verifier): New function.

	* src/pkcs5-test.c: Include both unistd.h and stdlib.h, do get a
	declaration of getopt().

	* src/lsh.c (do_lsh_lookup): Handle ATOM_SSH_RSA.
	(do_lsh_lookup): Replace ATOM_SPKI with ATOM_SPKI_SIGN_RSA and
	ATOM_SPKI_SIGN_DSS.

	* src/dsa.c (do_dsa_verify): Check that there's no trailing
	garbage.
	(do_dsa_verify): Replace ATOM_SPKI with ATOM_SPKI_SIGN_RSA and
	ATOM_SPKI_SIGN_DSS.
	(do_dsa_sign): Likewise.

	* src/atoms.in: Updated algorithm names to match
	draft-ietf-secsh-transport-09.txt. 

	* src/algorithms.c (algorithms_argp_parser): Replace ATOM_SPKI
	with ATOM_SPKI_SIGN_RSA and ATOM_SPKI_SIGN_DSS.
	(lookup_hostkey_algorithm): Likewise.

	* src/Makefile.am.in: Removed $(srcdir) prefixes from targets.
	* src/testsuite/Makefile.am (%.c): Likewise.

	* configure.in (PREFIX): Replace NONE with $ac_default_prefix.
	(SBINDIR): MAke a #define from sbindin. Currently broken. 

	* acconfig.h: Added SBINDIR.

2001-01-23  Niels Mller  <nisse@ehand.com>

	* src/tcpforward.c (do_tcpip_eof): Call shutdown(socket, SHUT_WR),
	to signal to the local peer that there's no more data.

2001-01-18  Niels Mller  <nisse@cuckoo.localdomain>

	* src/lshd.c (KERBEROS_HELPER): Added /sbin/ between PREFIX and the
	program name. Note that PREFIX seems to get a bogus value "NONE"
	if the default prefix is used.

	* src/sftp: New directory. Not compiled or used by default.

2001-01-17  Niels Mller  <nisse@cuckoo.localdomain>

	* src/lsh_types.h: Improved formatting.

	* src/channel.c (alloc_channel): Use UINT32, not int, for
	new_size. 

2001-01-15  Niels Mller  <nisse@ehand.com>

	* misc/bootstrap.sh: Fixed comment.

	* src/argp/argp.h: #define PRINTF_STYLE, and use it instead of
	using __attribute__ directly.

	* src/lsh-keygen.c (main_argp_parser): Don't use optarg (reported
	by jps).

	* Added Markus Friedl's sftp-server.c to contrib, for some random
	hacking. 

2001-01-10  Niels Mller  <nisse@lysator.liu.se>

	* src/pkcs5-test.c: Include stdlib.h instead of getopt.h. 

2001-01-10  Niels Mller  <nisse@cuckoo.localdomain>

	* Released lsh-1.1.5.

	* configure.in: Bumped version to 1.1.5.

2001-01-09  Niels Mller  <nisse@cuckoo.localdomain>

	* src/rsync/send.c: Deleted old code.

	* src/rsync/send.c (rsync_send_init): Rewrote. Allocates a
	slightly larger buffer.
	(rsync_send_eof): New function.
	(rsync_send_copy_in): Deleted th dst argument. Update sum_md5 and
	size.
	(rsync_send_read): New function.
	(rsync_send_search): New function.
	(rsync_send_flush): New function.
	(rsync_send_write): New function.
	(rsync_send): Rewrote and simplified. Now uses fewer states,
	simpler eof handling, and calls several smaller functions.

	* src/rsync/rsync.h (RSYNC_SUM_SIZE): Rename RSYNC_SUM_LENGTH.
	(rsync_result_t): New enum for return types.
	(struct rsync_receive_state): Renamed attribute full_sum to
	sum_md5. 
	(struct rsync_receive_state): Made the state attribute an enum.
	Moved the constants from receive.c, and renamed them to use a
	RSYNC_RECIEVE_-prefix. 
	(struct rsync_send_state): Changed state and buffering.

	* src/rsync/generate.c, src/rsync/receive.c, src/rsync/send.c,
	src/rsync/rsync.h: Changed return types from int to enum
	rsync_result_t.

	* src/rsync/checksum.c (rsync_search): Renamed argument FOUND to
	DONE, and set it properly for both successful and unsuccessful
	searches.

	* src/rsync/receive.c (rsync_receive_mode): Use an enum instead of
	defines.
	(rsync_update): Hash data on output.
	(rsync_receive) STATE_LITERAL: Update avail_in and next_in after calling rsync_update.

2001-01-07  Niels Mller  <nisse@cuckoo.localdomain>

	* src/argp/argp.h: Added _argp_short_program_name and
	__argp_short_program_name. 

	* src/argp/argp-parse.c (parser_init): Use
	argp_short_program_name. 
	(parser_parse_next): Removed old permutation handling code. 

2001-01-06  Niels Mller  <nisse@cuckoo.localdomain>

	* src/argp/argp-namefrob.h: Added _argp_short_program_name.

2001-01-02  Niels Mller  <nisse@cuckoo.localdomain>

	* src/argp/argp-help.c (hol_entry_help): Avoid using a
	non-constant struct initializer.
	(UNUSED): Define as a macro expanding to __attribute__ ..., if
	compiling with gcc.

	* src/argp/argp-fmtstream.h (PRINTF_STYLE): Define this macro,
	to expand to __attribute__ ... if compiling with gcc.

	* src/argp/argp-fmtstream.c (__argp_fmtstream_write,
	__argp_fmtstream_puts, __argp_fmtstream_putc): Duplicate the
	inline definitions in argp-fmtstream.h, for compilers that don't
	do inlining.

	* src/unix_random.c (random_sources): Fixed bug in initialization
	of the HAS_ALTERNATIVE fields. Noted by jps.

2000-12-28  Niels Mller  <nisse@cuckoo.localdomain>

	* src/lsh.c: Don't include unistd.h.
	(main_argp_parser): Fixed bogus references to optarg (reported by
	jps). 

	* src/argp/argp-help.c (fill_in_uparams): Use unsigned char * for
	VAR and ARG. Fixed calls of isalnum, isspace and friends, reported
	by Kalle Olavi Niemitalo.
	(canon_doc_option): Fixed calls of isalnum, isspace and friends,
	reported by Kalle Olavi Niemitalo.
	(hol_entry_cmp): Fixed calls of tolower, reported by Kalle Olavi
	Niemitalo.

2000-12-23  Niels Mller  <nisse@cuckoo.localdomain>

	* Released lsh-1.1.4.

2000-12-23  Niels Mller  <nisse@lysator.liu.se>

	* src/argp/acinclude.m4: New file. 
	* src/argp/acinclude.m4: Reverted the definition of AC_CHECK_VAR
	to take includes as argument, and renamed it to ARGP_CHECK_VAR.

2000-12-23  Niels Mller  <nisse@cuckoo.localdomain>

	* src/Makefile.am.in (EXTRA_DIST): Removed references to the
	getopt files getopt.c, getopt.h and getopt1.c.

	* configure.in: Removed getopt-related tests (previously just
	commented out).

2000-12-23  Niels Mller  <nisse@lysator.liu.se>

	* src/getopt.c, src/getopt1.c, src/getopt.h: Removed.

2000-12-22  Niels Mller  <nisse@lysator.liu.se>

	* src/testsuite/Makefile.am (LDADD): Link with libargp.
	($(srcdir)/%.c): Fix $(srcdir)-handling.

	* src/Makefile.am.in (bootstrap): New target, replaces the
	post-configure work previously done by misc/bootstrap.sh

	* Makefile.am.in (bootstrap): New target.

2000-12-11  Niels Mller  <nisse@cuckoo.localdomain>

	* Removed getopt.c, getopt.h and getopt1.c from the src/argp
	directory. 

	* src/lsh.c (do_options2identities): Pass two alists to
	make_spki_read_userkeys (reported by jps).

	* src/spki_commands.c (make_spki_read_userkeys): Use separate
	alists for symmetric algorithms and signature algorithms (reported
	by jps).

	* src/abstract_crypto.c (crypt_string_unpad): Adjust length
	properly (reported by jps).

	* src/argp/argp-parse.c (match_option, ARGP_COMPLETE): #if:ed out
	completion code for long options.

2000-12-09  Niels Mller  <nisse@cuckoo.localdomain>

	* src/Makefile.am.in (LDADD, lshg_LDADD): Use @LIBARGP@

	* misc/bootstrap.sh: Use set -e. Bootstrap in the src/argp
	subdirectory. 

2000-11-30  Niels Mller  <nisse@cuckoo.localdomain>

	* src/argp/argp-parse.c (match_option): Better abbreviations.
	Replaced try_getopt with args_only, changed calling convention for
	parser_parse_arg. 

	* src/argp/configure.in: Don't check for getopt.

	* src/argp/argp.h: Don't include getopt.h.

	* src/argp/argp-parse.c (calc_sizes): Updated comment.

2000-11-29  Niels Mller  <nisse@cuckoo.localdomain>

	* src/argp/configure.in: Use AC_REPLACE_FUNCS for mempcpy, strndup
	and strchrnul.
	(AC_CHECK_VAR): Changed second argument to take the type of the
	variable. 

	* src/argp/argp-parse.c (struct parser): New fields
	posixly_correct and ordering.
	(parser_init): Choose ordering.
	(enum arg_type): New value ARG_LONG_ONLY.
	(parser_parse_next): Added error messages similar to getopt's. 

	* src/argp/argp-help.c (STRNDUP): New macro to refer to strndup
	or __strndup, as appropriate.
	(STRERROR): Define this macro as a wrapper for strerror or
	sys_errlist. 
	(__argp_basename): New function.

	* src/argp/argp-namefrob.h (__argp_basename): Added
	__argp_basename. 

	* src/argp/Makefile.am (libargp_a_LIBADD): Include LIBOBJS in
	libargp.a. 

	* src/argp/argp.h: Added prototype for _argp_basename and
	__argp_basename. 

	* src/argp/strndup.c, src/argp/strchrnul.c src/argp/mempcpy.c:
	Moved replacement functions to separate files.

2000-11-28  Niels Mller  <nisse@cuckoo.localdomain>

	* src/argp/argp-parse.c: Deleted getopt-related code.
	(struct parser): New field nextchar. Deleted fields try_getotp and long_opts.
	(find_short_option): New function.
	(match_option): New function.
	(find_long_option): New function.
	(struct parser_convert_state): Deleted field long_end.
	(convert_options): Don't build getopt_long-style option array. 
	(parser_convert): Deleted FLAGS arument.
	(struct parser_sizes): Deleted field long_len.
	(parser_init): Set short_opts to NULL, unless ARGP_LONG_ONLY is
	used. 
	(classify_arg): New function.
	(parser_parse_next): Don't use getopt_long().

2000-11-27  Niels Mller  <nisse@cuckoo.localdomain>

	* configure.in: Use AC_LIB_ARGP.

	* acinclude.m4 (AC_LIB_ARGP): New test.

	* src/argp/argp-help.c (argp_doc): Use the name strndup, not
	__strndup. That probably breaks glibc builds.

2000-11-27  Niels Mller  <nisse@lysator.liu.se>

	* src/argp/argp-test.c (asprintf): Bug fix.

	* src/argp/argp.h: Dummy definition of __THROW.

	* src/argp/argp-test.c: Fixed asprintf implementation.

	* src/argp/argp-parse.c (__argp_usage, __option_is_short,
	__option_is_end): Define these function, in case the user isn't
	inlining them.

	* src/argp/argp-help.c: #define __mempcpy if needed. Use unsigned
	arguments to the ctype macros. Handle systems where
	program_invocation_name and program_invocation_short_name doesn't
	exist.
	* src/argp/argp-help.c (short_program_name): New function.

	* src/argp/Makefile.am: Use @LIBOBJS@ when building test program. 

	* src/argp/configure.in: Check for getopt_long. Substitute
	LIBOBJS. Add -I$srcdir to CPPFLAGS.

	* src/argp: Added getopt.h, getopt.c and getopt1.c, which are
	needed for separate compilation of argp.

2000-11-27  Niels Mller  <nisse@cuckoo.localdomain>

	* Updated argp from glibc-2.2.

	* Released lsh-1.1.3.

	* src/client.c (client_argp_parser): Handle remote_forward
	properly, and install a channel_open_forwarded_tcpip handler if
	needed (recovered from an earlier lsh.c). Some other cleanup.

	* src/abstract_crypto.h: Some cleanup.
	* src/abstract_io.h: Likewise.
	* src/channel.c: Likewise.
	* src/channel.h: Likewise.
	* src/channel_commands.h: Likewise.
	* src/connection.h: Likewise.
	* src/connection_commands.c: Likewise.
	* src/dh_exchange.c: Likewise.
	* src/exception.h: Likewise.
	* src/gateway.c: Likewise.
	* src/gateway_channel.c: Likewise.
	* src/gateway_commands.c: Likewise.
	* src/handshake.c: Likewise.
	* src/handshake.h: Likewise.
	* src/io.h: Likewise.
	* src/io_commands.c: Likewise.
	* src/io_commands.h: Likewise.
	* src/keyexchange.h: Likewise.
	* src/lsh.c: Likewise.
	* src/lsh_proxy.c: Likewise.
	* src/lshg.c: Likewise.
	* src/publickey_crypto.h: Likewise.
	* src/randomness.c: Likewise.
	* src/randomness.h: Likewise.
	* src/read_packet.c: Likewise.
	* src/rsa.c: Likewise.
	* src/server_pty.h: Likewise.
	* src/server_session.c: Likewise.
	* src/sexp.h: Likewise.
	* src/sexp_parser.c: Likewise.
	* src/sexp_streamed_parser.c: Likewise.
	* src/sexp_test.c: Likewise.
	* src/spki_commands.c: Likewise.
	* src/spki_commands.h: Likewise.
	* src/ssh1_fallback.c: Likewise.
	* src/tcpforward.c: Likewise.
	* src/unix_random.c: Likewise.
	* src/zlib.c: Likewise.

2000-11-26  Niels Mller  <nisse@cuckoo.localdomain>

	* src/parse.c (parse_rest, parse_rest_copy): Renamed parse_rest to
	parse_rest_copy. New function parse_rest.

	* src/gateway_channel.c (do_gateway_channel_request): Use
	format_channel_request_i(). 
	(gateway_channel_open_continuation): New attribute fallback.
	(do_gateway_channel_open_continuation): Set the target channel's
	request_fallback pointer.
	(do_channel_open_forward): Set the origin channel's
	request_fallback pointer.

	* src/channel.h (ssh_channel): Added request_fallback attribute.
	(channel_request_info): New struct.
	(channel_request): Use a channel_request_info argument.

	* src/channel.c (parse_channel_request): New function.
	(DEFINE_PACKET_HANDLER): Use parse_channel_request. Invoke request
	fallback if appropriate.
	(init_channel): Initialize request_fallback = NULL.
	(format_channel_open_s): Use a struct lsh_string for the type
	argument. 
	(format_channel_request_i): New function.

	* src/spki_commands.c (spki_read_userkeys): Try to decrypt the key.
	(make_spki_read_userkeys): New argument tty. If supplied, try to
	decrypt password protected keys.

	* src/proxy_agentforward.c (do_proxy_open_auth_agent): Updated to
	use struct channel_open_info.
	* src/proxy_x11forward.c (do_proxy_open_x11): Likewise.
	* src/proxy_tcpforward.c (do_proxy_open_direct_tcpip): Likewise.
	* src/proxy_session.c (do_proxy_open_session): Likewise.
	* src/server_session.c (do_open_session): Likewise.
	* src/tcpforward.c: Likewise.

	* src/parse.c (parse_rest): New function.

	* src/lshg.c: Use new client.c option parsing.

	* src/lsh_proxy.c: Adapted to stricter alist typing.
	* src/lshd.c: Likewise.
	* src/reaper.c: Likewise.
	* src/server_publickey.c: Likewise.
	* src/spki.c: Likewise.

	* src/lsh.c: Moved some of the option parsing to client.c.

	* src/gateway_commands.c (gateway_make_connection): Install an
	open_fallback. 

	* src/gateway_channel.c (gateway_channel_open_command): Use a
	string instead of an atom to represent the chennel type. 
	(do_gateway_channel_open): Use format_channel_opn_s(). 
	(make_gateway_channel_open_command): Take an struct
	channel_open_info * as argument.
	(do_channel_open_forward): New function.
	(gateway_channel_open_forward): Channel open handler that forwards
	any channel open request, of any type. 

	* src/client_session.c (client_session_channel): Renamed the
	class client_session.

	* src/client.h (CLIENT_ARGP_ACTION_GROUP): New constant.
	(CLIENT_ARGP_MODIFIER_GROUP): New constant.
	(client_options): New class.

	* src/client.c: Moved most of the option parsing from lsh.c to
	this file.

	* src/channel.c (make_channel_table): Initialize open_fallback =
	NULL; 
	(global_request_handler): Prepared for using a fallback handler.
	(channel_request_handler): Likewise.
	(channel_open_continuation): Renamed attributes to
	send_window_size and send_max_packet.
	(parse_channel_open): New function.
	(DEFINE_PACKET_HANDLER): Use parse_channel_open. Invoke
	open_fallback if there's no more specific handler for the channel
	type. 
	(format_channel_open_s): New function.
	(format_channel_open_a): New function (currently #if:ed out).

	* src/channel.h (struct channel_open_info): New struct to
	represent the common information in SSH_MSH_CHANNEL_OPEN.
	(channel_table): New attribute open_fallback.
	(channel_open): Use a channel_open_info for the arguments.

	* src/alist.h (alist): Use struct lsh_object *, not void *, to
	pass values.

	* src/alist.c (alist_select): New function.

	* src/algorithms.c (make_algorithms_options): New function.

	* doc/TODO: Some updates.

	* configure.in: Bumped version to 1.1.3.

2000-11-20  Niels Mller  <nisse@cuckoo.localdomain>

	* src/algorithms.h, src/client.h, src/client_keyexchange.c,
	src/client_userauth.c, src/connection.c, src/format.h,
	src/interact.c, src/interact.h, src/io.c, src/io.h,
	src/lsh-writekey.c, src/lsh.c, src/lshd.c, src/reaper.c,
	src/reaper.h, src/server_session.c, src/spki.c,
	src/spki_commands.c, src/srp-gen.c, src/tty.c, src/tty.h: Removed
	old #if:ed out code.

	* ChangeLog: Rotated ChangeLog, creating ChangeLog.2. 

