From 17f0f4a788d8840cab75e942c4c39df502048846 Mon Sep 17 00:00:00 2001 From: damien Date: Tue, 9 Nov 1999 02:52:33 +0000 Subject: [PATCH] Added GNOME passphrase requester --- Makefile.in | 21 +++++---- gnome-ssh-askpass.c | 102 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 115 insertions(+), 8 deletions(-) create mode 100644 gnome-ssh-askpass.c diff --git a/Makefile.in b/Makefile.in index f182af3b..03200eb9 100644 --- a/Makefile.in +++ b/Makefile.in @@ -12,11 +12,13 @@ CC=@CC@ PATHS=-DETCDIR=\"@sysconfdir@\" -DSSH_PROGRAM=\"$(SSH_PROGRAM)\" -DASKPASS_PROGRAM=\"$(ASKPASS_PROGRAM)\" CFLAGS=@CFLAGS@ $(PATHS) @DEFS@ TARGETS=libssh.a ssh sshd ssh-add ssh-keygen ssh-agent scp -LFLAGS=-L. -LIBS=-lssh @LIBS@ +LIBS=@LIBS@ AR=@AR@ RANLIB=@RANLIB@ +GNOME_CFLAGS=`gnome-config --cflags gnome gnomeui` +GNOME_LIBS=`gnome-config --libs gnome gnomeui` + OBJS= authfd.o authfile.o auth-passwd.o auth-rhosts.o auth-rh-rsa.o \ auth-rsa.o bufaux.o buffer.o canohost.o channels.o cipher.o \ clientloop.o compress.o crc32.o deattack.o helper.o hostfile.o \ @@ -31,24 +33,27 @@ libssh.a: authfd.o authfile.o bufaux.o buffer.o canohost.o channels.o cipher.o c $(AR) rv $@ $^ $(RANLIB) $@ -ssh: ssh.o sshconnect.o log-client.o readconf.o clientloop.o +ssh: ssh.o sshconnect.o log-client.o readconf.o clientloop.o libssh.a $(CC) -o $@ $^ $(LFLAGS) $(LIBS) -sshd: sshd.o auth-rhosts.o auth-passwd.o auth-rsa.o auth-rh-rsa.o pty.o log-server.o login.o servconf.o serverloop.o +sshd: sshd.o auth-rhosts.o auth-passwd.o auth-rsa.o auth-rh-rsa.o pty.o log-server.o login.o servconf.o serverloop.o libssh.a $(CC) -o $@ $^ $(LFLAGS) $(LIBS) -scp: scp.o +scp: scp.o libssh.a $(CC) -o $@ $^ $(LFLAGS) $(LIBS) -ssh-add: ssh-add.o log-client.o +ssh-add: ssh-add.o log-client.o libssh.a $(CC) -o $@ $^ $(LFLAGS) $(LIBS) -ssh-agent: ssh-agent.o log-client.o +ssh-agent: ssh-agent.o log-client.o libssh.a $(CC) -o $@ $^ $(LFLAGS) $(LIBS) -ssh-keygen: ssh-keygen.o log-client.o +ssh-keygen: ssh-keygen.o log-client.o libssh.a $(CC) -o $@ $^ $(LFLAGS) $(LIBS) +gnome-ssh-askpass: gnome-ssh-askpass.c + $(CC) $(CFLAGS) $(GNOME_CFLAGS) -o $@ gnome-ssh-askpass.c $(GNOME_LIBS) + clean: rm -f *.o core $(TARGETS) config.status config.cache config.log diff --git a/gnome-ssh-askpass.c b/gnome-ssh-askpass.c new file mode 100644 index 00000000..6610478c --- /dev/null +++ b/gnome-ssh-askpass.c @@ -0,0 +1,102 @@ +/* +** +** GNOME ssh passphrase requestor +** +** Damien Miller +** +** Copyright 1999 Internet Business Solutions +** +** Permission is hereby granted, free of charge, to any person +** obtaining a copy of this software and associated documentation +** files (the "Software"), to deal in the Software without +** restriction, including without limitation the rights to use, copy, +** modify, merge, publish, distribute, sublicense, and/or sell copies +** of the Software, and to permit persons to whom the Software is +** furnished to do so, subject to the following conditions: +** +** The above copyright notice and this permission notice shall be +** included in all copies or substantial portions of the Software. +** +** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY +** KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +** WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE +** AND NONINFRINGEMENT. IN NO EVENT SHALL DAMIEN MILLER OR INTERNET +** BUSINESS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +** LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +** ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE +** OR OTHER DEALINGS IN THE SOFTWARE. +** +** Except as contained in this notice, the name of Internet Business +** Solutions shall not be used in advertising or otherwise to promote +** the sale, use or other dealings in this Software without prior +** written authorization from Internet Business Solutions. +** +*/ + +#include +#include +#include +#include + +int passphrase_dialog(char **passphrase_p, char *message) +{ + char *passphrase; + int result; + + GtkWidget *dialog, *entry, *label; + + dialog = gnome_dialog_new("OpenSSH", GNOME_STOCK_BUTTON_OK, + GNOME_STOCK_BUTTON_CANCEL, NULL); + + label = gtk_label_new(message); + gtk_box_pack_start(GTK_BOX(GNOME_DIALOG(dialog)->vbox), label, FALSE, + FALSE, 0); + gtk_widget_show(label); + + entry = gtk_entry_new(); + gtk_box_pack_start(GTK_BOX(GNOME_DIALOG(dialog)->vbox), entry, FALSE, + FALSE, 0); + gtk_entry_set_visibility(GTK_ENTRY(entry), FALSE); + gtk_widget_grab_focus(entry); + gtk_widget_show(entry); + + /* Run dialog */ + result = gnome_dialog_run(GNOME_DIALOG(dialog)); + + passphrase = gtk_entry_get_text(GTK_ENTRY(entry)); + + /* Take copy of passphrase if user selected OK */ + if (result == 0) + *passphrase_p = strdup(passphrase); + else + *passphrase_p = NULL; + + /* Zero existing passphrase */ + memset(passphrase, '\0', strlen(passphrase)); + gtk_entry_set_text(GTK_ENTRY(entry), passphrase); + + gnome_dialog_close(GNOME_DIALOG(dialog)); + + return (result == 0); +} + +int main(int argc, char **argv) +{ + char *passphrase; + char *message; + + gnome_init("GNOME ssh-askpass", "0.1", argc, argv); + + if (argc == 2) + message = argv[1]; + else + message = "Enter your OpenSSH passphrase:"; + + if (passphrase_dialog(&passphrase, message)) + { + printf("%s\n", passphrase); + memset(passphrase, '\0', strlen(passphrase)); + } + + return 0; +} -- 2.45.1