View | Details | Raw Unified | Return to bug 1630 | Differences between
and this patch

Collapse All | Expand All

(-)ssh-keygen.c (-4 / +17 lines)
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);

Return to bug 1630