|
Lines 165-178
load_identity(char *filename)
Link Here
|
| 165 |
#define SSH_COM_PUBLIC_BEGIN "---- BEGIN SSH2 PUBLIC KEY ----" |
165 |
#define SSH_COM_PUBLIC_BEGIN "---- BEGIN SSH2 PUBLIC KEY ----" |
| 166 |
#define SSH_COM_PUBLIC_END "---- END SSH2 PUBLIC KEY ----" |
166 |
#define SSH_COM_PUBLIC_END "---- END SSH2 PUBLIC KEY ----" |
| 167 |
#define SSH_COM_PRIVATE_BEGIN "---- BEGIN SSH2 ENCRYPTED PRIVATE KEY ----" |
167 |
#define SSH_COM_PRIVATE_BEGIN "---- BEGIN SSH2 ENCRYPTED PRIVATE KEY ----" |
| 168 |
#define SSH_COM_PRIVATE_KEY_MAGIC 0x3f6ff9eb |
168 |
#define SSH_COM_PRIVATE_KEY_MAGIC 0x3f6ff9eb |
|
|
169 |
#define MAX_LINE_LEN 72 /* RFC 4716 section 3.3 */ |
| 169 |
|
170 |
|
| 170 |
static void |
171 |
static void |
| 171 |
do_convert_to_ssh2(struct passwd *pw) |
172 |
do_convert_to_ssh2(struct passwd *pw) |
| 172 |
{ |
173 |
{ |
| 173 |
Key *k; |
174 |
Key *k; |
| 174 |
u_int len; |
175 |
u_int i, len; |
| 175 |
u_char *blob; |
176 |
u_char *blob; |
|
|
177 |
char *comment; |
| 178 |
size_t comment_len; |
| 176 |
struct stat st; |
179 |
struct stat st; |
| 177 |
|
180 |
|
| 178 |
if (!have_identity) |
181 |
if (!have_identity) |
|
Lines 196-205
do_convert_to_ssh2(struct passwd *pw)
Link Here
|
| 196 |
exit(1); |
199 |
exit(1); |
| 197 |
} |
200 |
} |
| 198 |
fprintf(stdout, "%s\n", SSH_COM_PUBLIC_BEGIN); |
201 |
fprintf(stdout, "%s\n", SSH_COM_PUBLIC_BEGIN); |
| 199 |
fprintf(stdout, |
202 |
|
|
|
203 |
/* wrap comment at MAX_LINE_LEN chars as necessary */ |
| 204 |
if (xasprintf(&comment, |
| 200 |
"Comment: \"%u-bit %s, converted from OpenSSH by %s@%s\"\n", |
205 |
"Comment: \"%u-bit %s, converted from OpenSSH by %s@%s\"\n", |
| 201 |
key_size(k), key_type(k), |
206 |
key_size(k), key_type(k), |
| 202 |
pw->pw_name, hostname); |
207 |
pw->pw_name, hostname) == -1) |
|
|
208 |
fatal("do_convert_to_ssh2: asprintf: %s", strerror(errno)); |
| 209 |
comment_len = strlen(comment); |
| 210 |
for (i = 0; i < comment_len; i++) { |
| 211 |
if (i % MAX_LINE_LEN == MAX_LINE_LEN - 1 && comment[i] != '\n') |
| 212 |
fprintf(stdout, "\\\n"); |
| 213 |
fputc(comment[i], stdout); |
| 214 |
} |
| 215 |
|
| 203 |
dump_base64(stdout, blob, len); |
216 |
dump_base64(stdout, blob, len); |
| 204 |
fprintf(stdout, "%s\n", SSH_COM_PUBLIC_END); |
217 |
fprintf(stdout, "%s\n", SSH_COM_PUBLIC_END); |
| 205 |
key_free(k); |
218 |
key_free(k); |