diff options
author | Darren Tucker <dtucker@zip.com.au> | 2004-05-13 16:24:32 +1000 |
---|---|---|
committer | Darren Tucker <dtucker@zip.com.au> | 2004-05-13 16:24:32 +1000 |
commit | 770fc01078ffd4952ceb91f617063b390730499c (patch) | |
tree | 4371321e51979a9a4c3ee2a8700e5edfeb717e11 /moduli.c | |
parent | e608ca2965a4afe58477faf1d36ce574416b66a7 (diff) | |
download | openssh-git-770fc01078ffd4952ceb91f617063b390730499c.tar.gz |
- djm@cvs.openbsd.org 2004/05/09 00:06:47
[moduli.c ssh-keygen.c] removed: moduli.h
zap another tiny header; ok deraadt@
Diffstat (limited to 'moduli.c')
-rw-r--r-- | moduli.c | 34 |
1 files changed, 30 insertions, 4 deletions
@@ -1,4 +1,4 @@ -/* $OpenBSD: moduli.c,v 1.6 2004/04/22 11:56:57 djm Exp $ */ +/* $OpenBSD: moduli.c,v 1.7 2004/05/09 00:06:47 djm Exp $ */ /* * Copyright 1994 Phil Karn <karn@qualcomm.com> * Copyright 1996-1998, 2003 William Allen Simpson <wsimpson@greendragon.com> @@ -38,7 +38,6 @@ */ #include "includes.h" -#include "moduli.h" #include "xmalloc.h" #include "log.h" @@ -91,6 +90,19 @@ #define SHIFT_MEGAWORD (SHIFT_MEGABYTE-SHIFT_BYTE) /* + * Using virtual memory can cause thrashing. This should be the largest + * number that is supported without a large amount of disk activity -- + * that would increase the run time from hours to days or weeks! + */ +#define LARGE_MINIMUM (8UL) /* megabytes */ + +/* + * Do not increase this number beyond the unsigned integer bit size. + * Due to a multiple of 4, it must be LESS than 128 (yielding 2**30 bits). + */ +#define LARGE_MAXIMUM (127UL) /* megabytes */ + +/* * Constant: when used with 32-bit integers, the largest sieve prime * has to be less than 2**32. */ @@ -114,6 +126,9 @@ * Prime testing defines */ +/* Minimum number of primality tests to perform */ +#define TRIAL_MINIMUM (4) + /* * Sieving data (XXX - move to struct) */ @@ -235,6 +250,13 @@ gen_candidates(FILE *out, int memory, int power, BIGNUM *start) largememory = memory; + if (memory != 0 && + (memory < LARGE_MINIMUM || memory > LARGE_MAXIMUM)) { + error("Invalid memory amount (min %ld, max %ld)", + LARGE_MINIMUM, LARGE_MAXIMUM); + return (-1); + } + /* * Set power to the length in bits of the prime to be generated. * This is changed to 1 less than the desired safe prime moduli p. @@ -430,8 +452,7 @@ gen_candidates(FILE *out, int memory, int power, BIGNUM *start) * The result is a list of so-call "safe" primes */ int -prime_test(FILE *in, FILE *out, u_int32_t trials, - u_int32_t generator_wanted) +prime_test(FILE *in, FILE *out, u_int32_t trials, u_int32_t generator_wanted) { BIGNUM *q, *p, *a; BN_CTX *ctx; @@ -441,6 +462,11 @@ prime_test(FILE *in, FILE *out, u_int32_t trials, time_t time_start, time_stop; int res; + if (trials < TRIAL_MINIMUM) { + error("Minimum primality trials is %d", TRIAL_MINIMUM); + return (-1); + } + time(&time_start); p = BN_new(); |