version 1.123, 2005/04/05 13:45:31 |
version 1.124, 2005/05/23 22:44:01 |
|
|
#include "dns.h" |
#include "dns.h" |
|
|
/* Number of bits in the RSA/DSA key. This value can be changed on the command line. */ |
/* Number of bits in the RSA/DSA key. This value can be changed on the command line. */ |
int bits = 1024; |
u_int32_t bits = 1024; |
|
|
/* |
/* |
* Flag indicating that we just want to change the passphrase. This can be |
* Flag indicating that we just want to change the passphrase. This can be |
|
|
char hostname[MAXHOSTNAMELEN]; |
char hostname[MAXHOSTNAMELEN]; |
|
|
/* moduli.c */ |
/* moduli.c */ |
int gen_candidates(FILE *, int, int, BIGNUM *); |
int gen_candidates(FILE *, u_int32_t, u_int32_t, BIGNUM *); |
int prime_test(FILE *, FILE *, u_int32_t, u_int32_t); |
int prime_test(FILE *, FILE *, u_int32_t, u_int32_t); |
|
|
static void |
static void |
|
|
Key *private, *public; |
Key *private, *public; |
struct passwd *pw; |
struct passwd *pw; |
struct stat st; |
struct stat st; |
int opt, type, fd, download = 0, memory = 0; |
int opt, type, fd, download = 0; |
int generator_wanted = 0, trials = 100; |
uint32_t memory = 0, generator_wanted = 0, trials = 100; |
int do_gen_candidates = 0, do_screen_candidates = 0; |
int do_gen_candidates = 0, do_screen_candidates = 0; |
int log_level = SYSLOG_LEVEL_INFO; |
int log_level = SYSLOG_LEVEL_INFO; |
BIGNUM *start = NULL; |
BIGNUM *start = NULL; |
|
|
|
|
extern int optind; |
extern int optind; |
extern char *optarg; |
extern char *optarg; |
|
const char *errstr; |
|
|
SSLeay_add_all_algorithms(); |
SSLeay_add_all_algorithms(); |
log_init(av[0], SYSLOG_LEVEL_INFO, SYSLOG_FACILITY_USER, 1); |
log_init(av[0], SYSLOG_LEVEL_INFO, SYSLOG_FACILITY_USER, 1); |
|
|
"degiqpclBHvxXyF:b:f:t:U:D:P:N:C:r:g:R:T:G:M:S:a:W:")) != -1) { |
"degiqpclBHvxXyF:b:f:t:U:D:P:N:C:r:g:R:T:G:M:S:a:W:")) != -1) { |
switch (opt) { |
switch (opt) { |
case 'b': |
case 'b': |
bits = atoi(optarg); |
bits = strtonum(optarg, 512, 32768, &errstr); |
if (bits < 512 || bits > 32768) { |
if (errstr) { |
printf("Bits has bad value.\n"); |
printf("Bits has bad value %s (%s)\n", optarg, errstr); |
exit(1); |
exit(1); |
} |
} |
break; |
break; |
|
|
change_comment = 1; |
change_comment = 1; |
break; |
break; |
case 'f': |
case 'f': |
strlcpy(identity_file, optarg, sizeof(identity_file)); |
if (strlcpy(identity_file, optarg, sizeof(identity_file)) >= |
|
sizeof(identity_file)) |
|
fatal("Identity filename too long"); |
have_identity = 1; |
have_identity = 1; |
break; |
break; |
case 'g': |
case 'g': |
|
|
rr_hostname = optarg; |
rr_hostname = optarg; |
break; |
break; |
case 'W': |
case 'W': |
generator_wanted = atoi(optarg); |
generator_wanted = strtonum(optarg, 1, UINT_MAX, &errstr); |
if (generator_wanted < 1) |
if (errstr) |
fatal("Desired generator has bad value."); |
fatal("Desired generator has bad value: %s (%s)", |
|
optarg, errstr); |
break; |
break; |
case 'a': |
case 'a': |
trials = atoi(optarg); |
trials = strtonum(optarg, 1, UINT_MAX, &errstr); |
|
if (errstr) |
|
fatal("Invalid number of trials: %s (%s)", |
|
optarg, errstr); |
break; |
break; |
case 'M': |
case 'M': |
memory = atoi(optarg); |
memory = strtonum(optarg, 1, UINT_MAX, &errstr); |
|
if (errstr) { |
|
fatal("Memory limit is %s: %s", errstr, optarg); |
|
} |
break; |
break; |
case 'G': |
case 'G': |
do_gen_candidates = 1; |
do_gen_candidates = 1; |
strlcpy(out_file, optarg, sizeof(out_file)); |
if (strlcpy(out_file, optarg, sizeof(out_file)) >= |
|
sizeof(out_file)) |
|
fatal("Output filename too long"); |
break; |
break; |
case 'T': |
case 'T': |
do_screen_candidates = 1; |
do_screen_candidates = 1; |
strlcpy(out_file, optarg, sizeof(out_file)); |
if (strlcpy(out_file, optarg, sizeof(out_file)) >= |
|
sizeof(out_file)) |
|
fatal("Output filename too long"); |
break; |
break; |
case 'S': |
case 'S': |
/* XXX - also compare length against bits */ |
/* XXX - also compare length against bits */ |