version 1.47, 2001/12/19 07:18:56 |
version 1.48, 2001/12/21 10:06:43 |
|
|
/* argv0 */ |
/* argv0 */ |
extern char *__progname; |
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 */ |
/* we keep a cache of one passphrases */ |
static char *pass = NULL; |
static char *pass = NULL; |
static void |
static void |
|
|
printf("The agent has no identities.\n"); |
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 |
static void |
usage(void) |
usage(void) |
{ |
{ |
|
|
extern char *optarg; |
extern char *optarg; |
extern int optind; |
extern int optind; |
AuthenticationConnection *ac = NULL; |
AuthenticationConnection *ac = NULL; |
struct passwd *pw; |
|
char buf[1024]; |
|
char *sc_reader_id = NULL; |
char *sc_reader_id = NULL; |
int i, ch, deleting = 0, ret = 0; |
int i, ch, deleting = 0, ret = 0; |
|
|
|
|
goto done; |
goto done; |
} |
} |
if (argc == 0) { |
if (argc == 0) { |
pw = getpwuid(getuid()); |
char buf[MAXPATHLEN]; |
if (!pw) { |
struct passwd *pw; |
|
|
|
if ((pw = getpwuid(getuid())) == NULL) { |
fprintf(stderr, "No user found with uid %u\n", |
fprintf(stderr, "No user found with uid %u\n", |
(u_int)getuid()); |
(u_int)getuid()); |
ret = 1; |
ret = 1; |
goto done; |
goto done; |
} |
} |
snprintf(buf, sizeof buf, "%s/%s", pw->pw_dir, _PATH_SSH_CLIENT_IDENTITY); |
|
if (deleting) { |
for(i = 0; default_files[i]; i++) { |
if (delete_file(ac, buf) == -1) |
snprintf(buf, sizeof(buf), "%s/%s", pw->pw_dir, |
|
default_files[i]); |
|
if (do_file(ac, deleting, buf) == -1) |
ret = 1; |
ret = 1; |
} else { |
|
if (add_file(ac, buf) == -1) |
|
ret = 1; |
|
} |
} |
} else { |
} else { |
for (i = 0; i < argc; i++) { |
for(i = 0; i < argc; i++) { |
if (deleting) { |
if (do_file(ac, deleting, argv[1]) == -1) |
if (delete_file(ac, argv[i]) == -1) |
ret = 1; |
ret = 1; |
|
} else { |
|
if (add_file(ac, argv[i]) == -1) |
|
ret = 1; |
|
} |
|
} |
} |
} |
} |
clear_pass(); |
clear_pass(); |