… | |
… | |
246 | * generate public/private RSA keypairs for all hosts that don't have one. |
246 | * generate public/private RSA keypairs for all hosts that don't have one. |
247 | */ |
247 | */ |
248 | static int |
248 | static int |
249 | keygen (const char *pub, const char *priv) |
249 | keygen (const char *pub, const char *priv) |
250 | { |
250 | { |
|
|
251 | /* some libcs are buggy and require an extra seek to the end */ |
251 | |
252 | |
252 | FILE *pubf = fopen (pub, "ab"); |
253 | FILE *pubf = fopen (pub, "ab"); |
253 | if (!pubf || fseek (pubf, 0, SEEK_END)) |
254 | if (!pubf || fseek (pubf, 0, SEEK_END)) |
254 | { |
255 | { |
255 | perror (pub); |
256 | perror (pub); |
… | |
… | |
261 | fclose (pubf); |
262 | fclose (pubf); |
262 | return 1; |
263 | return 1; |
263 | } |
264 | } |
264 | |
265 | |
265 | FILE *privf = fopen (priv, "ab"); |
266 | FILE *privf = fopen (priv, "ab"); |
266 | |
|
|
267 | /* some libcs are buggy and require an extra seek to the end */ |
|
|
268 | if (!privf || fseek (privf, 0, SEEK_END)) |
267 | if (!privf || fseek (privf, 0, SEEK_END)) |
269 | { |
268 | { |
270 | perror (priv); |
269 | perror (priv); |
271 | exit (EXIT_FAILURE); |
270 | exit (EXIT_FAILURE); |
272 | } |
271 | } |
… | |
… | |
362 | { |
361 | { |
363 | fprintf (stderr, _("'%s' keypair already exists, not generating key.\n"), pubname); |
362 | fprintf (stderr, _("'%s' keypair already exists, not generating key.\n"), pubname); |
364 | exit (EXIT_FAILURE); |
363 | exit (EXIT_FAILURE); |
365 | } |
364 | } |
366 | |
365 | |
367 | free(privname); |
366 | free (privname); |
|
|
367 | |
|
|
368 | return 0; |
368 | } |
369 | } |
369 | |
370 | |
370 | int |
371 | int |
371 | main (int argc, char **argv, char **envp) |
372 | main (int argc, char **argv, char **envp) |
372 | { |
373 | { |