version 1.55.2.2, 2005/03/10 17:15:04 |
version 1.56, 2004/05/11 19:01:43 |
|
|
#include "log.h" |
#include "log.h" |
#include "authfile.h" |
#include "authfile.h" |
#include "rsa.h" |
#include "rsa.h" |
#include "misc.h" |
|
|
|
/* Version identification string for SSH v1 identity files. */ |
/* Version identification string for SSH v1 identity files. */ |
static const char authfile_id_string[] = |
static const char authfile_id_string[] = |
|
|
int fd, i, cipher_num; |
int fd, i, cipher_num; |
CipherContext ciphercontext; |
CipherContext ciphercontext; |
Cipher *cipher; |
Cipher *cipher; |
u_int32_t rnd; |
u_int32_t rand; |
|
|
/* |
/* |
* If the passphrase is empty, use SSH_CIPHER_NONE to ease converting |
* If the passphrase is empty, use SSH_CIPHER_NONE to ease converting |
|
|
buffer_init(&buffer); |
buffer_init(&buffer); |
|
|
/* Put checkbytes for checking passphrase validity. */ |
/* Put checkbytes for checking passphrase validity. */ |
rnd = arc4random(); |
rand = arc4random(); |
buf[0] = rnd & 0xff; |
buf[0] = rand & 0xff; |
buf[1] = (rnd >> 8) & 0xff; |
buf[1] = (rand >> 8) & 0xff; |
buf[2] = buf[0]; |
buf[2] = buf[0]; |
buf[3] = buf[1]; |
buf[3] = buf[1]; |
buffer_append(&buffer, buf, 4); |
buffer_append(&buffer, buf, 4); |
|
|
filename, strerror(errno)); |
filename, strerror(errno)); |
return NULL; |
return NULL; |
} |
} |
if (st.st_size > 1*1024*1024) { |
if (st.st_size > 1*1024*1024) |
error("key file %.200s too large", filename); |
close(fd); |
return NULL; |
|
} |
|
len = (size_t)st.st_size; /* truncated */ |
len = (size_t)st.st_size; /* truncated */ |
|
|
buffer_init(&buffer); |
buffer_init(&buffer); |
|
|
return NULL; |
return NULL; |
} |
} |
if (st.st_size > 1*1024*1024) { |
if (st.st_size > 1*1024*1024) { |
error("key file %.200s too large", filename); |
|
close(fd); |
close(fd); |
return (NULL); |
return (NULL); |
} |
} |
|
|
key_try_load_public(Key *k, const char *filename, char **commentp) |
key_try_load_public(Key *k, const char *filename, char **commentp) |
{ |
{ |
FILE *f; |
FILE *f; |
char line[SSH_MAX_PUBKEY_BYTES]; |
char line[4096]; |
char *cp; |
char *cp; |
u_long linenum = 0; |
|
|
|
f = fopen(filename, "r"); |
f = fopen(filename, "r"); |
if (f != NULL) { |
if (f != NULL) { |
while (read_keyfile_line(f, filename, line, sizeof(line), |
while (fgets(line, sizeof(line), f)) { |
&linenum) != -1) { |
line[sizeof(line)-1] = '\0'; |
cp = line; |
cp = line; |
switch (*cp) { |
switch (*cp) { |
case '#': |
case '#': |