version 1.32.2.8, 2002/03/08 17:04:43 |
version 1.85, 2001/12/05 10:06:12 |
|
|
int convert_from_ssh2 = 0; |
int convert_from_ssh2 = 0; |
int print_public = 0; |
int print_public = 0; |
|
|
char *key_type_name = NULL; |
/* default to RSA for SSH-1 */ |
|
char *key_type_name = "rsa1"; |
|
|
/* argv0 */ |
/* argv0 */ |
extern char *__progname; |
extern char *__progname; |
|
|
char buf[1024]; |
char buf[1024]; |
char *name = NULL; |
char *name = NULL; |
|
|
if (key_type_name == NULL) |
switch (key_type_from_name(key_type_name)) { |
|
case KEY_RSA1: |
|
name = _PATH_SSH_CLIENT_IDENTITY; |
|
break; |
|
case KEY_DSA: |
|
name = _PATH_SSH_CLIENT_ID_DSA; |
|
break; |
|
case KEY_RSA: |
name = _PATH_SSH_CLIENT_ID_RSA; |
name = _PATH_SSH_CLIENT_ID_RSA; |
else |
break; |
switch (key_type_from_name(key_type_name)) { |
default: |
case KEY_RSA1: |
fprintf(stderr, "bad key type"); |
name = _PATH_SSH_CLIENT_IDENTITY; |
exit(1); |
break; |
break; |
case KEY_DSA: |
} |
name = _PATH_SSH_CLIENT_ID_DSA; |
|
break; |
|
case KEY_RSA: |
|
name = _PATH_SSH_CLIENT_ID_RSA; |
|
break; |
|
default: |
|
fprintf(stderr, "bad key type"); |
|
exit(1); |
|
break; |
|
} |
|
|
|
snprintf(identity_file, sizeof(identity_file), "%s/%s", pw->pw_dir, name); |
snprintf(identity_file, sizeof(identity_file), "%s/%s", pw->pw_dir, name); |
fprintf(stderr, "%s (%s): ", prompt, identity_file); |
fprintf(stderr, "%s (%s): ", prompt, identity_file); |
fflush(stderr); |
fflush(stderr); |
|
|
do_convert_to_ssh2(struct passwd *pw) |
do_convert_to_ssh2(struct passwd *pw) |
{ |
{ |
Key *k; |
Key *k; |
u_int len; |
int len; |
u_char *blob; |
u_char *blob; |
struct stat st; |
struct stat st; |
|
|
|
|
if (buffer_len(b) < bytes) |
if (buffer_len(b) < bytes) |
fatal("buffer_get_bignum_bits: input buffer too small: " |
fatal("buffer_get_bignum_bits: input buffer too small: " |
"need %d have %d", bytes, buffer_len(b)); |
"need %d have %d", bytes, buffer_len(b)); |
BN_bin2bn(buffer_ptr(b), bytes, value); |
BN_bin2bn((u_char *)buffer_ptr(b), bytes, value); |
buffer_consume(b, bytes); |
buffer_consume(b, bytes); |
} |
} |
|
|
static Key * |
static Key * |
do_convert_private_ssh2_from_blob(u_char *blob, u_int blen) |
do_convert_private_ssh2_from_blob(u_char *blob, int blen) |
{ |
{ |
Buffer b; |
Buffer b; |
Key *key = NULL; |
Key *key = NULL; |
|
|
*p = '\0'; |
*p = '\0'; |
strlcat(encoded, line, sizeof(encoded)); |
strlcat(encoded, line, sizeof(encoded)); |
} |
} |
blen = uudecode(encoded, blob, sizeof(blob)); |
blen = uudecode(encoded, (u_char *)blob, sizeof(blob)); |
if (blen < 0) { |
if (blen < 0) { |
fprintf(stderr, "uudecode failed.\n"); |
fprintf(stderr, "uudecode failed.\n"); |
exit(1); |
exit(1); |
|
|
exit(1); |
exit(1); |
} |
} |
key_free(k); |
key_free(k); |
if (!private) |
fprintf(stdout, "\n"); |
fprintf(stdout, "\n"); |
|
fclose(fp); |
fclose(fp); |
exit(0); |
exit(0); |
} |
} |
|
|
read_passphrase("Enter new passphrase (empty for no " |
read_passphrase("Enter new passphrase (empty for no " |
"passphrase): ", RP_ALLOW_STDIN); |
"passphrase): ", RP_ALLOW_STDIN); |
passphrase2 = read_passphrase("Enter same passphrase again: ", |
passphrase2 = read_passphrase("Enter same passphrase again: ", |
RP_ALLOW_STDIN); |
RP_ALLOW_STDIN); |
|
|
/* Verify that they are the same. */ |
/* Verify that they are the same. */ |
if (strcmp(passphrase1, passphrase2) != 0) { |
if (strcmp(passphrase1, passphrase2) != 0) { |
|
|
fprintf(stderr, "Comments are only supported for RSA1 keys.\n"); |
fprintf(stderr, "Comments are only supported for RSA1 keys.\n"); |
key_free(private); |
key_free(private); |
exit(1); |
exit(1); |
} |
} |
printf("Key now has comment '%s'\n", comment); |
printf("Key now has comment '%s'\n", comment); |
|
|
if (identity_comment) { |
if (identity_comment) { |
|
|
int |
int |
main(int ac, char **av) |
main(int ac, char **av) |
{ |
{ |
char dotsshdir[MAXPATHLEN], comment[1024], *passphrase1, *passphrase2; |
char dotsshdir[16 * 1024], comment[1024], *passphrase1, *passphrase2; |
char *reader_id = NULL; |
char *reader_id = NULL; |
Key *private, *public; |
Key *private, *public; |
struct passwd *pw; |
struct passwd *pw; |
|
|
|
|
arc4random_stir(); |
arc4random_stir(); |
|
|
if (key_type_name == NULL) { |
|
printf("You must specify a key type (-t).\n"); |
|
usage(); |
|
} |
|
type = key_type_from_name(key_type_name); |
type = key_type_from_name(key_type_name); |
if (type == KEY_UNSPEC) { |
if (type == KEY_UNSPEC) { |
fprintf(stderr, "unknown key type %s\n", key_type_name); |
fprintf(stderr, "unknown key type %s\n", key_type_name); |