version 1.75, 2006/02/20 17:19:54 |
version 1.76, 2006/03/13 10:26:52 |
|
|
static int |
static int |
add_file(AuthenticationConnection *ac, const char *filename) |
add_file(AuthenticationConnection *ac, const char *filename) |
{ |
{ |
struct stat st; |
|
Key *private; |
Key *private; |
char *comment = NULL; |
char *comment = NULL; |
char msg[1024]; |
char msg[1024]; |
int ret = -1; |
int fd, perms_ok, ret = -1; |
|
|
if (stat(filename, &st) < 0) { |
if ((fd = open(filename, 0)) < 0) { |
perror(filename); |
perror(filename); |
return -1; |
return -1; |
} |
} |
|
|
|
/* |
|
* Since we'll try to load a keyfile multiple times, permission errors |
|
* will occur multiple times, so check perms first and bail if wrong. |
|
*/ |
|
perms_ok = key_perm_ok(fd, filename); |
|
close(fd); |
|
if (!perms_ok) |
|
return -1; |
|
|
/* At first, try empty passphrase */ |
/* At first, try empty passphrase */ |
private = key_load_private(filename, "", &comment); |
private = key_load_private(filename, "", &comment); |
if (comment == NULL) |
if (comment == NULL) |