version 1.53.2.2, 2002/10/11 14:51:53 |
version 1.53.2.3, 2003/04/03 22:35:17 |
|
|
/* Default lifetime (0 == forever) */ |
/* Default lifetime (0 == forever) */ |
static int lifetime = 0; |
static int lifetime = 0; |
|
|
|
/* User has to confirm key use */ |
|
static int confirm = 0; |
|
|
/* 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 |
|
|
} |
} |
} |
} |
|
|
if (ssh_add_identity_constrained(ac, private, comment, lifetime)) { |
if (ssh_add_identity_constrained(ac, private, comment, lifetime, |
|
confirm)) { |
fprintf(stderr, "Identity added: %s (%s)\n", filename, comment); |
fprintf(stderr, "Identity added: %s (%s)\n", filename, comment); |
ret = 0; |
ret = 0; |
if (lifetime != 0) |
if (lifetime != 0) |
fprintf(stderr, |
fprintf(stderr, |
"Lifetime set to %d seconds\n", lifetime); |
"Lifetime set to %d seconds\n", lifetime); |
|
if (confirm != 0) |
|
fprintf(stderr, |
|
"The user has to confirm each use of the key\n"); |
} else if (ssh_add_identity(ac, private, comment)) { |
} else if (ssh_add_identity(ac, private, comment)) { |
fprintf(stderr, "Identity added: %s (%s)\n", filename, comment); |
fprintf(stderr, "Identity added: %s (%s)\n", filename, comment); |
ret = 0; |
ret = 0; |
|
|
update_card(AuthenticationConnection *ac, int add, const char *id) |
update_card(AuthenticationConnection *ac, int add, const char *id) |
{ |
{ |
char *pin; |
char *pin; |
|
int ret = -1; |
|
|
pin = read_passphrase("Enter passphrase for smartcard: ", RP_ALLOW_STDIN); |
pin = read_passphrase("Enter passphrase for smartcard: ", RP_ALLOW_STDIN); |
if (pin == NULL) |
if (pin == NULL) |
|
|
if (ssh_update_card(ac, add, id, pin)) { |
if (ssh_update_card(ac, add, id, pin)) { |
fprintf(stderr, "Card %s: %s\n", |
fprintf(stderr, "Card %s: %s\n", |
add ? "added" : "removed", id); |
add ? "added" : "removed", id); |
return 0; |
ret = 0; |
} else { |
} else { |
fprintf(stderr, "Could not %s card: %s\n", |
fprintf(stderr, "Could not %s card: %s\n", |
add ? "add" : "remove", id); |
add ? "add" : "remove", id); |
return -1; |
ret = -1; |
} |
} |
|
xfree(pin); |
|
return ret; |
} |
} |
|
|
static int |
static int |
|
|
fprintf(stderr, " -x Lock agent.\n"); |
fprintf(stderr, " -x Lock agent.\n"); |
fprintf(stderr, " -X Unlock agent.\n"); |
fprintf(stderr, " -X Unlock agent.\n"); |
fprintf(stderr, " -t life Set lifetime (in seconds) when adding identities.\n"); |
fprintf(stderr, " -t life Set lifetime (in seconds) when adding identities.\n"); |
|
fprintf(stderr, " -c Require confirmation to sign using identities\n"); |
#ifdef SMARTCARD |
#ifdef SMARTCARD |
fprintf(stderr, " -s reader Add key in smartcard reader.\n"); |
fprintf(stderr, " -s reader Add key in smartcard reader.\n"); |
fprintf(stderr, " -e reader Remove key in smartcard reader.\n"); |
fprintf(stderr, " -e reader Remove key in smartcard reader.\n"); |
|
|
fprintf(stderr, "Could not open a connection to your authentication agent.\n"); |
fprintf(stderr, "Could not open a connection to your authentication agent.\n"); |
exit(2); |
exit(2); |
} |
} |
while ((ch = getopt(argc, argv, "lLdDxXe:s:t:")) != -1) { |
while ((ch = getopt(argc, argv, "lLcdDxXe:s:t:")) != -1) { |
switch (ch) { |
switch (ch) { |
case 'l': |
case 'l': |
case 'L': |
case 'L': |
|
|
if (lock_agent(ac, ch == 'x' ? 1 : 0) == -1) |
if (lock_agent(ac, ch == 'x' ? 1 : 0) == -1) |
ret = 1; |
ret = 1; |
goto done; |
goto done; |
|
break; |
|
case 'c': |
|
confirm = 1; |
break; |
break; |
case 'd': |
case 'd': |
deleting = 1; |
deleting = 1; |