Hi.

I just found a patch by Van Dyke, the makers of SecureCRT (for win32) for 
openssh that might be interesting for Mandrake?

Patches are applied to this mail.

Chears.
-- 
Regards // Oden Eriksson - Deserve-IT Networks http://d-srv.com

Check the "Modules For Apache2" status page at: 
http://d-srv.com/modules_for_apache2.html

diff -Naur openssh-3.4p1/Makefile.in openssh-3.4p1.oden/Makefile.in
--- openssh-3.4p1/Makefile.in	2002-06-25 23:45:42.000000000 +0000
+++ openssh-3.4p1.oden/Makefile.in	2002-10-09 14:36:44.000000000 +0000
@@ -23,6 +23,7 @@
 SSH_PROGRAM=@bindir@/ssh
 ASKPASS_PROGRAM=$(libexecdir)/ssh-askpass
 SFTP_SERVER=$(libexecdir)/sftp-server
+PUBLICKEY_SERVER=$(libexecdir)/publickey-server
 SSH_KEYSIGN=$(libexecdir)/ssh-keysign
 RAND_HELPER=$(libexecdir)/ssh-rand-helper
 PRIVSEP_PATH=@PRIVSEP_PATH@
@@ -32,6 +33,7 @@
 	-D_PATH_SSH_PROGRAM=\"$(SSH_PROGRAM)\" \
 	-D_PATH_SSH_ASKPASS_DEFAULT=\"$(ASKPASS_PROGRAM)\" \
 	-D_PATH_SFTP_SERVER=\"$(SFTP_SERVER)\" \
+	-D_PATH_PUBLICKEY_SERVER=\"$(PUBLICKEY_SERVER)\" \
 	-D_PATH_SSH_KEY_SIGN=\"$(SSH_KEYSIGN)\" \
 	-D_PATH_SSH_PIDDIR=\"$(piddir)\" \
 	-D_PATH_PRIVSEP_CHROOT_DIR=\"$(PRIVSEP_PATH)\" \
@@ -58,7 +60,7 @@
 
 @NO_SFTP@SFTP_PROGS=sftp-server$(EXEEXT) sftp$(EXEEXT)
 
-TARGETS=ssh$(EXEEXT) sshd$(EXEEXT) ssh-add$(EXEEXT) ssh-keygen$(EXEEXT) ssh-keyscan${EXEEXT} ssh-keysign${EXEEXT} ssh-agent$(EXEEXT) scp$(EXEEXT) ssh-rand-helper${EXEEXT} $(SFTP_PROGS)
+TARGETS=ssh$(EXEEXT) sshd$(EXEEXT) ssh-add$(EXEEXT) ssh-keygen$(EXEEXT) ssh-keyscan${EXEEXT} ssh-keysign${EXEEXT} ssh-agent$(EXEEXT) scp$(EXEEXT) ssh-rand-helper${EXEEXT} $(SFTP_PROGS) publickey-server${EXEEXT}
 
 LIBSSH_OBJS=atomicio.o authfd.o authfile.o bufaux.o buffer.o canohost.o channels.o cipher.o compat.o compress.o crc32.o deattack.o dh.o dispatch.o fatal.o mac.o msg.o hostfile.o key.o kex.o kexdh.o kexgex.o log.o match.o misc.o mpaux.o nchan.o packet.o radix.o rijndael.o entropy.o readpass.o rsa.o scard.o scard-opensc.o ssh-dss.o ssh-rsa.o tildexpand.o ttymodes.o uidswap.o uuencode.o xmalloc.o monitor_wrap.o monitor_fdpass.o
 
@@ -140,6 +142,9 @@
 sftp$(EXEEXT): $(LIBCOMPAT) libssh.a sftp.o sftp-client.o sftp-int.o sftp-common.o sftp-glob.o
 	$(LD) -o $@ sftp.o sftp-client.o sftp-common.o sftp-int.o sftp-glob.o $(LDFLAGS) -lssh -lopenbsd-compat $(LIBS)
 
+publickey-server$(EXEEXT): $(LIBCOMPAT) libssh.a servconf.o entropy.o auth.o groupaccess.o auth-options.o publickey-server.o
+	$(LD) -o $@ publickey-server.o servconf.o entropy.o auth.o groupaccess.o auth-options.o $(LDFLAGS) -lssh -lopenbsd-compat $(LIBS)
+
 ssh-rand-helper${EXEEXT}: $(LIBCOMPAT) libssh.a ssh-rand-helper.o
 	$(LD) -o $@ ssh-rand-helper.o $(LDFLAGS) -lssh -lopenbsd-compat $(LIBS)
 
@@ -232,6 +237,7 @@
 	$(INSTALL) -m 4711 -s ssh-keysign $(DESTDIR)$(SSH_KEYSIGN)
 	@NO_SFTP@$(INSTALL) -m 0755 -s sftp $(DESTDIR)$(bindir)/sftp
 	@NO_SFTP@$(INSTALL) -m 0755 -s sftp-server $(DESTDIR)$(SFTP_SERVER)
+	$(INSTALL) -m 0755 -s publickey-server $(DESTDIR)$(PUBLICKEY_SERVER)
 	$(INSTALL) -m 644 ssh.1.out $(DESTDIR)$(mandir)/$(mansubdir)1/ssh.1
 	$(INSTALL) -m 644 scp.1.out $(DESTDIR)$(mandir)/$(mansubdir)1/scp.1
 	$(INSTALL) -m 644 ssh-add.1.out $(DESTDIR)$(mandir)/$(mansubdir)1/ssh-add.1
@@ -330,6 +336,7 @@
 	-rm -f $(DESTDIR)$(bindir)/sftp$(EXEEXT)
 	-rm -f $(DESTDIR)$(sbindir)/sshd$(EXEEXT)
 	-rm -r $(DESTDIR)$(SFTP_SERVER)$(EXEEXT)
+	-rm -r $(DESTDIR)$(PUBLICKEY_SERVER)$(EXEEXT)
 	-rm -f $(DESTDIR)$(SSH_KEYSIGN)$(EXEEXT)
 	-rm -f $(DESTDIR)$(RAND_HELPER)$(EXEEXT)
 	-rm -f $(DESTDIR)$(mandir)/$(mansubdir)1/ssh.1
diff -Naur openssh-3.4p1/publickey-server.c openssh-3.4p1.oden/publickey-server.c
--- openssh-3.4p1/publickey-server.c	1970-01-01 00:00:00.000000000 +0000
+++ openssh-3.4p1.oden/publickey-server.c	2002-10-09 14:36:44.000000000 +0000
@@ -0,0 +1,611 @@
+/*
+ *          publickey-server for OpenSSH -- August 02, 2002
+ *
+ *           Copyright © 1995-2002 VanDyke Software, Inc.
+ *                       All rights reserved.
+ *
+ * Portions Copyright (c) 2000, 2001, 2002 Markus Friedl.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "includes.h"
+RCSID("$OpenBSD: publickey-server.c,v 1.33 2002/06/30 00:00:00 markus Exp $");
+
+#include "buffer.h"
+#include "bufaux.h"
+#include "getput.h"
+#include "log.h"
+#include "xmalloc.h"
+#include "key.h"
+#include "servconf.h"
+#include "pathnames.h"
+#include "auth.h"
+
+/* helper */
+#define get_int64()			buffer_get_int64(&iqueue);
+#define get_int()			buffer_get_int(&iqueue);
+#define get_string(lenp)		buffer_get_string(&iqueue, lenp);
+#define TRACE				debug
+
+#ifdef HAVE___PROGNAME
+extern char *__progname;
+#else
+char *__progname;
+#endif
+
+FILE *stream = 0;
+
+/* input and output queue */
+Buffer iqueue;
+Buffer oqueue;
+
+/* Version of client */
+int version;
+
+/* Server configuration file */
+ServerOptions options;
+
+/* Name of the server configuration file. */
+char* config_file_name = _PATH_SERVER_CONFIG_FILE;
+
+/* We don't need this, but servconf.o requires it */
+int IPv4or6 = AF_UNSPEC;
+
+/* Who are we */
+uid_t uid;
+pid_t pid;
+struct passwd* pw;
+
+enum
+{
+	PK_SUCCESS		= 0,
+	PK_ACCESS_DENIED	= 1,
+	PK_STORAGE_EXCEEDED	= 2,
+	PK_REQUEST_NOT_SUPPORTED= 3,
+	PK_KEY_NOT_FOUND	= 4,
+	PK_KEY_NOT_SUPPORTED	= 5,
+	PK_GENERAL_FAILURE	= 6
+};
+
+static void
+LogToFile(FILE* stream, char* szFormat, ...)
+{
+#ifdef DEBUG_LOGTOFILE
+	va_list args;
+	va_start(args, szFormat);
+	vfprintf(stream, szFormat, args);
+	fflush(stream);
+#endif
+}
+
+/* send replies */
+
+static void
+send_msg(Buffer *m)
+{
+	int mlen = buffer_len(m);
+
+	LogToFile(stream, "send_msg()\n");
+	buffer_put_int(&oqueue, mlen);
+	buffer_append(&oqueue, buffer_ptr(m), mlen);
+	buffer_consume(m, mlen);
+}
+
+static void
+send_version(u_int32_t version)
+{
+	Buffer msg;
+	LogToFile(stream, "send_version()\n");
+	buffer_init(&msg);
+	buffer_put_cstring(&msg, "version");
+	buffer_put_int(&msg, version);
+	send_msg(&msg);
+	buffer_free(&msg);
+}
+
+static void
+send_status(u_int32_t error, char* szMessage)
+{
+	Buffer msg;
+	buffer_init(&msg);
+	LogToFile(stream, "send_status()\n");
+	buffer_put_cstring(&msg, "status");
+	buffer_put_int(&msg, error);
+	buffer_put_cstring(&msg, szMessage);
+	buffer_put_cstring(&msg, "");
+	send_msg(&msg);
+	buffer_free(&msg);
+}
+
+static void
+send_publickey(Key* k, const char* szComment)
+{
+	Buffer msg;
+
+	u_char* blob;
+	u_int   bloblen;
+
+	LogToFile(stream, "send_publickey() szComment=%s\n", szComment);
+
+	if ( key_to_blob(k, &blob, &bloblen) == 0 )
+	{
+		return;
+	}
+
+	buffer_init(&msg);
+	buffer_put_cstring(&msg, "publickey");
+	buffer_put_cstring(&msg, szComment);
+	buffer_put_cstring(&msg, key_ssh_name(k));
+	buffer_put_string(&msg, blob, bloblen);
+	send_msg(&msg);
+	buffer_free(&msg);
+	xfree(blob);
+
+	LogToFile(stream, "send_publickey() sent\n");
+}
+
+/* parse incoming */
+
+static void
+process_version(void)
+{
+	version = buffer_get_int(&iqueue);
+	LogToFile(stream, "process_version() version=%d\n", version);
+}
+
+static int
+key_from_line(char line[8192], Key** ppKey, char** ppszComment)
+{
+	char* cp;
+	char* options = NULL;
+
+	*ppKey = 0;
+	*ppszComment = 0;
+
+	LogToFile(stream, "key_from_line()\n");
+	/* Skip leading whitespace, empty and comment lines. */
+	for (cp = line; *cp == ' ' || *cp == '\t'; cp++)
+		;
+
+	if ( ! *cp || *cp == '\n' || *cp == '#' )
+		return 0;
+
+	*ppKey = key_new(KEY_UNSPEC);
+        if (key_read(*ppKey, &cp) != 1) {
+		/* no key?  check if there are options for this key */
+                int quoted = 0;
+                LogToFile(stream, "key_from_line() user_key_allowed: check options: '%s'\n", cp);
+                options = cp;
+                for (; *cp && (quoted || (*cp != ' ' && *cp != '\t')); cp++) {
+                        if (*cp == '\\' && cp[1] == '"')
+                                cp++;   /* Skip both */
+                        else if (*cp == '"')
+                                quoted = !quoted;
+                }
+
+                /* Skip remaining whitespace. */
+                for (; *cp == ' ' || *cp == '\t'; cp++)
+                        ;
+                if (key_read(*ppKey, &cp) != 1) {
+			key_free(*ppKey);
+			*ppKey = 0;
+
+                        /* still no key?  advance to next line*/
+			return 0;
+		}
+	}
+
+	*ppszComment = cp;
+	return 1;
+}
+
+static int
+list_file(const char* szFile)
+{
+	char line[8192];
+	FILE* f;
+
+	LogToFile(stream, "list_file() szFile=%s\n", szFile);
+
+	f = fopen(szFile, "r");
+	if ( ! f )
+		return 0;
+
+	while (fgets(line, sizeof(line), f))
+	{
+		Key* pKey = 0;
+		char* szComment = 0;
+
+		LogToFile(stream, "list_file() got line\n");
+		if ( ! key_from_line(line, &pKey, &szComment) )
+			continue;
+
+		send_publickey(pKey, szComment);
+		key_free(pKey);
+	}
+
+	fclose(f);
+	return 1;
+}
+
+static void
+process_list(void)
+{
+	char* file;
+	int   bSuccess;
+
+	LogToFile(stream, "process_list(): authorized_keys_file\n");
+	file = authorized_keys_file(pw);
+	bSuccess = list_file(file);
+	xfree(file);
+
+	LogToFile(stream, "process_listi(): authorized_keys_file2\n");
+	file = authorized_keys_file2(pw);
+	bSuccess = list_file(file) || bSuccess;
+	xfree(file);
+
+	LogToFile(stream, "process_list() success\n");
+	send_status(PK_SUCCESS, "List complete");
+}
+
+static int
+get_key(Key** pKey)
+{
+	char* szType;
+	int   pkType;
+
+	u_char* pkblob;
+	u_int blen;
+
+	LogToFile(stream, "get_key()\n");
+	szType    = get_string(NULL);
+	pkType    = key_type_from_name(szType);
+	xfree(szType);
+	if ( pkType == KEY_UNSPEC )
+	{
+		send_status(PK_KEY_NOT_SUPPORTED, "Key type not supported.");
+		return 0;
+	}
+
+	pkblob    = get_string(&blen);
+	*pKey     = key_from_blob(pkblob, blen);
+	xfree(pkblob);
+
+	if ( ! *pKey )
+	{
+		send_status(PK_GENERAL_FAILURE, "Could not decode key; key is corrupt.");
+		return 0;
+	}
+
+	return 1;
+}
+
+static void
+process_add(void)
+{
+	char* file;
+	char* szComment;
+	Key*  key;
+
+	FILE* f = 0;
+
+	LogToFile(stream, "process_add()\n");
+	szComment = get_string(NULL);
+	if ( ! get_key(&key) )
+	{
+		/* status has been sent */
+		xfree(szComment);
+		return;
+	}
+
+	file = authorized_keys_file(pw);
+
+	/* Backup to the first / */
+	{
+		char* sz;
+
+		sz = strrchr(file, '/');
+		if ( sz )
+		{
+			*sz = '\0';
+			mkdir(file, 0700);
+			*sz = '/';
+		}
+	}
+
+	f = fopen(file, "a+");
+	xfree(file);
+
+	if ( ! f )
+	{
+		if ( errno == EACCES )
+			send_status(PK_ACCESS_DENIED, "Access is denied to the authorized_keys file.");
+		else
+			send_status(PK_GENERAL_FAILURE, "Could not open authorize_keys file.");
+		xfree(szComment);
+		key_free(key);
+		return;
+	}
+
+	key_write(key, f);
+	key_free(key);
+
+	fprintf(f, " %s\n", szComment);
+	xfree(szComment);
+	fclose(f);
+
+	send_status(PK_SUCCESS, "Key added.");
+}
+
+static int
+remove_from_file(Key* pRemoveKey, const char* szFile)
+{
+	char line[8192];
+	char* szTmpFile;
+
+	FILE* fInput = 0;
+	int   nTmpFd = 0;
+
+	int   bFoundMatch = 0;
+
+	LogToFile(stream, "remove_from_file()\n");
+	fInput = fopen(szFile, "r");
+	if ( ! fInput )
+		return 0;
+
+	szTmpFile = xmalloc(strlen(szFile) + 32);
+	sprintf(szTmpFile, "%s-XXXXXX", szFile);
+
+	nTmpFd = mkstemp(szTmpFile);
+	if ( nTmpFd == -1 )
+		return -1;
+
+	while (fgets(line, sizeof(line), fInput))
+	{
+		int nLineLength = strlen(line);
+
+		Key* pKey = 0;
+		char* szComment = 0;
+		if ( ! key_from_line(line, &pKey, &szComment) )
+		{
+			write(nTmpFd, line, nLineLength);
+			continue;
+		}
+
+		if ( ! key_equal(pKey, pRemoveKey) )
+			write(nTmpFd, line, nLineLength);
+		else
+			bFoundMatch = 1;
+
+		key_free(pKey);
+	}
+
+	if ( ! bFoundMatch )
+	{
+		unlink(szTmpFile);
+	}
+	else
+	{
+		unlink(szFile);
+		link(szTmpFile, szFile);
+		unlink(szTmpFile);
+	}
+
+	close(nTmpFd);
+	fclose(fInput);
+
+	return bFoundMatch;
+}
+
+static void
+process_remove(void)
+{
+	char* szOrigFile;
+	Key*  key;
+
+	int bSuccess;
+
+	LogToFile(stream, "process_remove()\n");
+	/* get_key() sends status if it fails */
+	if ( ! get_key(&key) )
+		return;
+
+	szOrigFile = authorized_keys_file(pw);
+	bSuccess = remove_from_file(key, szOrigFile);
+	xfree(szOrigFile);
+
+	if ( bSuccess != -1 )
+	{
+		szOrigFile = authorized_keys_file2(pw);
+		bSuccess = remove_from_file(key, szOrigFile) || bSuccess;
+		xfree(szOrigFile);
+	}
+
+	if ( bSuccess == -1 )
+		send_status(PK_GENERAL_FAILURE, "Couldn't create temp file.");
+	else if ( bSuccess == 1 )
+		send_status(PK_SUCCESS, "All instances of publickey were removed.");
+	else /* bSuccess == 0 */
+		send_status(PK_KEY_NOT_FOUND, "Could not find publickey.");
+
+	key_free(key);
+}
+
+static void
+process_command(void)
+{
+	LogToFile(stream, "process_command()\n");
+}
+
+/* stolen from sftp-server */
+static void
+process_one_packet(void)
+{
+	u_int msg_len;
+	char* szType;
+	u_char *cp;
+
+	LogToFile(stream, "process() length=%d\n", buffer_len(&iqueue));
+
+	cp = buffer_ptr(&iqueue);
+	msg_len = GET_32BIT(cp);
+	if (msg_len > 256 * 1024) {
+		error("bad message ");
+		LogToFile(stream, "process() exit1\n");
+		fclose(stream);
+		exit(11);
+	}
+	if (buffer_len(&iqueue) < msg_len + 4)
+		return;
+	buffer_consume(&iqueue, 4);
+
+	szType = get_string(NULL);
+	LogToFile(stream, "process() szType=%s\n", szType);
+	if (strcmp(szType, "version") == 0)
+		process_version();
+	else if (strcmp(szType, "list") == 0)
+		process_list();
+	else if (strcmp(szType, "add") == 0)
+		process_add();
+	else if (strcmp(szType, "remove") == 0)
+		process_remove();
+	else if (strcmp(szType, "command") == 0)
+		process_command();
+	else
+		send_status(PK_REQUEST_NOT_SUPPORTED, "The requested operation is not supported.");
+}
+
+static void
+process(void)
+{
+	while( buffer_len(&iqueue) > 5 )
+		process_one_packet();
+}
+
+int
+main(int ac, char **av)
+{
+	fd_set *rset, *wset;
+	int in, out, max;
+	ssize_t len, olen, set_size;
+
+	/* XXX should use getopt */
+
+	__progname = get_progname(av[0]);
+
+	uid = getuid();
+	pid = getpid();
+	pw = getpwuid(uid);
+
+#ifdef DEBUG_LOGTOFILE
+	stream = fopen("/tmp/publickey-subsystem.log", "a+");
+#endif
+	LogToFile(stream, "\nmain() begin\n");
+
+#ifdef DEBUG_PUBLICKEY_SERVER
+	log_init("publickey-server", SYSLOG_LEVEL_DEBUG1, SYSLOG_FACILITY_AUTH, 0);
+#endif
+
+	in = dup(STDIN_FILENO);
+	out = dup(STDOUT_FILENO);
+
+#ifdef HAVE_CYGWIN
+	setmode(in, O_BINARY);
+	setmode(out, O_BINARY);
+#endif
+
+	max = 0;
+	if (in > max)
+		max = in;
+	if (out > max)
+		max = out;
+
+	buffer_init(&iqueue);
+	buffer_init(&oqueue);
+
+	set_size = howmany(max + 1, NFDBITS) * sizeof(fd_mask);
+	rset = (fd_set *)xmalloc(set_size);
+	wset = (fd_set *)xmalloc(set_size);
+
+	initialize_server_options(&options);
+	read_server_config(&options, config_file_name);
+
+	/* Fill in default values for those options not explicitly set. */
+	fill_default_server_options(&options);
+
+	send_version(1);
+
+	for (;;) {
+		LogToFile(stream, "main() loop\n");
+		memset(rset, 0, set_size);
+		memset(wset, 0, set_size);
+
+		FD_SET(in, rset);
+		olen = buffer_len(&oqueue);
+		if (olen > 0)
+			FD_SET(out, wset);
+
+		if (select(max+1, rset, wset, NULL, NULL) < 0) {
+			if (errno == EINTR)
+				continue;
+			LogToFile(stream, "main() exit1\n");
+			fclose(stream);
+			exit(2);
+		}
+
+		/* copy stdin to iqueue */
+		if (FD_ISSET(in, rset)) {
+			char buf[4*4096];
+			len = read(in, buf, sizeof buf);
+			if (len == 0) {
+				debug("read eof");
+				LogToFile(stream, "main() exit2\n");
+				fclose(stream);
+				exit(0);
+			} else if (len < 0) {
+				error("read error");
+				LogToFile(stream, "main() exit3\n");
+				fclose(stream);
+				exit(1);
+			} else {
+				buffer_append(&iqueue, buf, len);
+			}
+		}
+		/* send oqueue to stdout */
+		if (FD_ISSET(out, wset)) {
+			len = write(out, buffer_ptr(&oqueue), olen);
+			if (len < 0) {
+				error("write error");
+				LogToFile(stream, "main() exit4\n");
+				fclose(stream);
+				exit(1);
+			} else {
+				buffer_consume(&oqueue, len);
+			}
+		}
+		/* process requests from client */
+		process();
+	}
+	LogToFile(stream, "main() end");
+#ifdef DEBUG_LOGTOFILE
+	fclose(stream);
+#endif
+}
diff -Naur openssh-3.4p1/README.publickey-server openssh-3.4p1.oden/README.publickey-server
--- openssh-3.4p1/README.publickey-server	1970-01-01 00:00:00.000000000 +0000
+++ openssh-3.4p1.oden/README.publickey-server	2002-10-09 14:36:44.000000000 +0000
@@ -0,0 +1,18 @@
+*          publickey-server for OpenSSH -- August 02, 2002
+*
+*           Copyright © 1995-2002 VanDyke Software, Inc.
+*                       All rights reserved.
+*
+
+The following files are designed to work with OpenSSH3.4p1.
+1) Place in the build directory for OpenSSH (replacing any 
+   existing files)
+2) run "./configure"
+3) run "make install"
+
+Makefile.in - replacement for the configure makefile
+
+publickey-server.c - code for the public-key subsystem
+
+sshd_config - sshd configuration file that includes the
+              public-key subsystem
\ No newline at end of file
diff -Naur openssh-3.4p1/sshd_config openssh-3.4p1.oden/sshd_config
--- openssh-3.4p1/sshd_config	2002-06-21 01:11:36.000000000 +0000
+++ openssh-3.4p1.oden/sshd_config	2002-10-09 14:36:44.000000000 +0000
@@ -90,3 +90,4 @@
 
 # override default of no subsystems
 Subsystem	sftp	/usr/libexec/sftp-server
+Subsystem	[EMAIL PROTECTED]	/usr/libexec/publickey-server
--- openssh.spec	2002-09-11 19:59:25.000000000 +0000
+++ openssh.spec.oden	2002-10-09 14:42:21.000000000 +0000
@@ -11,7 +11,7 @@
 
 %define name	openssh
 %define version	3.4p1
-%define release 4mdk
+%define release 5mdk
 
 Summary:	OpenSSH free Secure Shell (SSH) implementation
 Name:		%{name}
@@ -32,6 +32,8 @@
 Patch3:		openssh-3.1p1-check-only-ssl-version.patch.bz2
 # no longer needed?
 Patch4:		x11-ssh-askpass-1.2.4.1-fix-Imakefile.patch.bz2
+# http://www.vandyke.com/download/os/pks_ossh.html
+Patch5:		openssh-3.4p1-publickey-server.patch.bz2
 License:	BSD
 Group:		Networking/Remote access
 BuildRoot:	%{_tmppath}/%{name}-%{version}-buildroot
@@ -168,6 +170,9 @@
 # patch to x11-ssh-askpass (no longer needed?)
 #%patch4 -p1 -b .imake
 
+# http://www.vandyke.com/download/os/pks_ossh.html
+%patch5 -p1
+
 %build
 
 %serverbuild
@@ -322,6 +327,7 @@
 %defattr(-,root,root)
 %{_sbindir}/sshd
 %{_libdir}/ssh/sftp-server
+%{_libdir}/ssh/publickey-server
 %{_mandir}/man5/sshd_config.5*
 %{_mandir}/man8/sshd.8*
 %{_mandir}/man8/sftp-server.8*
@@ -346,6 +352,9 @@
 %attr(0755,root,root) %config(noreplace) %{_sysconfdir}/profile.d/gnome-ssh-askpass.*
 
 %changelog
+* Wed Oct 09 2002 Oden Erikkson <[EMAIL PROTECTED]> 3.4p1-5mdk
+- added rediffed P5 by Van Dyke
+
 * Wed Sep 11 2002 Vincent Danen <[EMAIL PROTECTED]> 3.4p1-4mdk
 - openssh-server: PreReq: rpm-helper
 - fix builds for old distribs (remove support for 7.1)

Reply via email to