summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamien Miller <djm@mindrot.org>2002-01-22 23:05:59 +1100
committerDamien Miller <djm@mindrot.org>2002-01-22 23:05:59 +1100
commit6e1057c2d79de5382efc53ceb3e1213cc273ca12 (patch)
treea176ee5ebb45c5382672f1958368e10494352e66
parentf451e22e2134463062f7134f3e3556ab78ea0661 (diff)
- djm@cvs.openbsd.org 2001/12/21 10:06:43
[ssh-add.1 ssh-add.c] Try all standard key files (id_rsa, id_dsa, identity) when invoked with no arguments; ok markus@
-rw-r--r--ChangeLog6
-rw-r--r--ssh-add.17
-rw-r--r--ssh-add.c54
3 files changed, 45 insertions, 22 deletions
diff --git a/ChangeLog b/ChangeLog
index db387db2..76c3e4ca 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -16,6 +16,10 @@
- djm@cvs.openbsd.org 2001/12/21 08:53:45
[readpass.c]
Avoid interruptable passphrase read; ok markus@
+ - djm@cvs.openbsd.org 2001/12/21 10:06:43
+ [ssh-add.1 ssh-add.c]
+ Try all standard key files (id_rsa, id_dsa, identity) when invoked with
+ no arguments; ok markus@
20020121
- (djm) Rework ssh-rand-helper:
@@ -7163,4 +7167,4 @@
- Wrote replacements for strlcpy and mkdtemp
- Released 1.0pre1
-$Id: ChangeLog,v 1.1726 2002/01/22 12:05:31 djm Exp $
+$Id: ChangeLog,v 1.1727 2002/01/22 12:05:59 djm Exp $
diff --git a/ssh-add.1 b/ssh-add.1
index b842080d..ef60d020 100644
--- a/ssh-add.1
+++ b/ssh-add.1
@@ -1,4 +1,4 @@
-.\" $OpenBSD: ssh-add.1,v 1.27 2001/08/23 18:08:59 stevesk Exp $
+.\" $OpenBSD: ssh-add.1,v 1.28 2001/12/21 10:06:43 djm Exp $
.\"
.\" -*- nroff -*-
.\"
@@ -55,7 +55,10 @@
.Nm
adds RSA or DSA identities to the authentication agent,
.Xr ssh-agent 1 .
-When run without arguments, it adds the file
+When run without arguments, it adds the files
+.Pa $HOME/.ssh/id_rsa ,
+.Pa $HOME/.ssh/id_dsa
+and
.Pa $HOME/.ssh/identity .
Alternative file names can be given on the command line.
If any file requires a passphrase,
diff --git a/ssh-add.c b/ssh-add.c
index 91603399..4a2b65f5 100644
--- a/ssh-add.c
+++ b/ssh-add.c
@@ -35,7 +35,7 @@
*/
#include "includes.h"
-RCSID("$OpenBSD: ssh-add.c,v 1.47 2001/12/19 07:18:56 deraadt Exp $");
+RCSID("$OpenBSD: ssh-add.c,v 1.48 2001/12/21 10:06:43 djm Exp $");
#include <openssl/evp.h>
@@ -58,6 +58,15 @@ char *__progname;
/* argv0 */
extern char *__progname;
+/* Default files to add */
+static char *default_files[] = {
+ _PATH_SSH_CLIENT_ID_RSA,
+ _PATH_SSH_CLIENT_ID_DSA,
+ _PATH_SSH_CLIENT_IDENTITY,
+ NULL
+};
+
+
/* we keep a cache of one passphrases */
static char *pass = NULL;
static void
@@ -210,6 +219,19 @@ list_identities(AuthenticationConnection *ac, int do_fp)
printf("The agent has no identities.\n");
}
+static int
+do_file(AuthenticationConnection *ac, int deleting, char *file)
+{
+ if (deleting) {
+ if (delete_file(ac, file) == -1)
+ return -1;
+ } else {
+ if (add_file(ac, file) == -1)
+ return -1;
+ }
+ return 0;
+}
+
static void
usage(void)
{
@@ -231,8 +253,6 @@ main(int argc, char **argv)
extern char *optarg;
extern int optind;
AuthenticationConnection *ac = NULL;
- struct passwd *pw;
- char buf[1024];
char *sc_reader_id = NULL;
int i, ch, deleting = 0, ret = 0;
@@ -284,30 +304,26 @@ main(int argc, char **argv)
goto done;
}
if (argc == 0) {
- pw = getpwuid(getuid());
- if (!pw) {
+ char buf[MAXPATHLEN];
+ struct passwd *pw;
+
+ if ((pw = getpwuid(getuid())) == NULL) {
fprintf(stderr, "No user found with uid %u\n",
(u_int)getuid());
ret = 1;
goto done;
}
- snprintf(buf, sizeof buf, "%s/%s", pw->pw_dir, _PATH_SSH_CLIENT_IDENTITY);
- if (deleting) {
- if (delete_file(ac, buf) == -1)
- ret = 1;
- } else {
- if (add_file(ac, buf) == -1)
+
+ for(i = 0; default_files[i]; i++) {
+ snprintf(buf, sizeof(buf), "%s/%s", pw->pw_dir,
+ default_files[i]);
+ if (do_file(ac, deleting, buf) == -1)
ret = 1;
}
} else {
- for (i = 0; i < argc; i++) {
- if (deleting) {
- if (delete_file(ac, argv[i]) == -1)
- ret = 1;
- } else {
- if (add_file(ac, argv[i]) == -1)
- ret = 1;
- }
+ for(i = 0; i < argc; i++) {
+ if (do_file(ac, deleting, argv[1]) == -1)
+ ret = 1;
}
}
clear_pass();