diff options
Diffstat (limited to 'moduli.c')
-rw-r--r-- | moduli.c | 33 |
1 files changed, 17 insertions, 16 deletions
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: moduli.c,v 1.10 2005/01/17 03:25:46 dtucker Exp $ */ | 1 | /* $OpenBSD: moduli.c,v 1.12 2005/07/17 07:17:55 djm Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright 1994 Phil Karn <karn@qualcomm.com> | 3 | * Copyright 1994 Phil Karn <karn@qualcomm.com> |
4 | * Copyright 1996-1998, 2003 William Allen Simpson <wsimpson@greendragon.com> | 4 | * Copyright 1996-1998, 2003 William Allen Simpson <wsimpson@greendragon.com> |
@@ -112,22 +112,22 @@ | |||
112 | #define TINY_NUMBER (1UL<<16) | 112 | #define TINY_NUMBER (1UL<<16) |
113 | 113 | ||
114 | /* Ensure enough bit space for testing 2*q. */ | 114 | /* Ensure enough bit space for testing 2*q. */ |
115 | #define TEST_MAXIMUM (1UL<<16) | 115 | #define TEST_MAXIMUM (1UL<<16) |
116 | #define TEST_MINIMUM (QSIZE_MINIMUM + 1) | 116 | #define TEST_MINIMUM (QSIZE_MINIMUM + 1) |
117 | /* real TEST_MINIMUM (1UL << (SHIFT_WORD - TEST_POWER)) */ | 117 | /* real TEST_MINIMUM (1UL << (SHIFT_WORD - TEST_POWER)) */ |
118 | #define TEST_POWER (3) /* 2**n, n < SHIFT_WORD */ | 118 | #define TEST_POWER (3) /* 2**n, n < SHIFT_WORD */ |
119 | 119 | ||
120 | /* bit operations on 32-bit words */ | 120 | /* bit operations on 32-bit words */ |
121 | #define BIT_CLEAR(a,n) ((a)[(n)>>SHIFT_WORD] &= ~(1L << ((n) & 31))) | 121 | #define BIT_CLEAR(a,n) ((a)[(n)>>SHIFT_WORD] &= ~(1L << ((n) & 31))) |
122 | #define BIT_SET(a,n) ((a)[(n)>>SHIFT_WORD] |= (1L << ((n) & 31))) | 122 | #define BIT_SET(a,n) ((a)[(n)>>SHIFT_WORD] |= (1L << ((n) & 31))) |
123 | #define BIT_TEST(a,n) ((a)[(n)>>SHIFT_WORD] & (1L << ((n) & 31))) | 123 | #define BIT_TEST(a,n) ((a)[(n)>>SHIFT_WORD] & (1L << ((n) & 31))) |
124 | 124 | ||
125 | /* | 125 | /* |
126 | * Prime testing defines | 126 | * Prime testing defines |
127 | */ | 127 | */ |
128 | 128 | ||
129 | /* Minimum number of primality tests to perform */ | 129 | /* Minimum number of primality tests to perform */ |
130 | #define TRIAL_MINIMUM (4) | 130 | #define TRIAL_MINIMUM (4) |
131 | 131 | ||
132 | /* | 132 | /* |
133 | * Sieving data (XXX - move to struct) | 133 | * Sieving data (XXX - move to struct) |
@@ -144,7 +144,7 @@ static u_int32_t *LargeSieve, largewords, largetries, largenumbers; | |||
144 | static u_int32_t largebits, largememory; /* megabytes */ | 144 | static u_int32_t largebits, largememory; /* megabytes */ |
145 | static BIGNUM *largebase; | 145 | static BIGNUM *largebase; |
146 | 146 | ||
147 | int gen_candidates(FILE *, int, int, BIGNUM *); | 147 | int gen_candidates(FILE *, u_int32_t, u_int32_t, BIGNUM *); |
148 | int prime_test(FILE *, FILE *, u_int32_t, u_int32_t); | 148 | int prime_test(FILE *, FILE *, u_int32_t, u_int32_t); |
149 | 149 | ||
150 | /* | 150 | /* |
@@ -241,19 +241,20 @@ sieve_large(u_int32_t s) | |||
241 | * The list is checked against small known primes (less than 2**30). | 241 | * The list is checked against small known primes (less than 2**30). |
242 | */ | 242 | */ |
243 | int | 243 | int |
244 | gen_candidates(FILE *out, int memory, int power, BIGNUM *start) | 244 | gen_candidates(FILE *out, u_int32_t memory, u_int32_t power, BIGNUM *start) |
245 | { | 245 | { |
246 | BIGNUM *q; | 246 | BIGNUM *q; |
247 | u_int32_t j, r, s, t; | 247 | u_int32_t j, r, s, t; |
248 | u_int32_t smallwords = TINY_NUMBER >> 6; | 248 | u_int32_t smallwords = TINY_NUMBER >> 6; |
249 | u_int32_t tinywords = TINY_NUMBER >> 6; | 249 | u_int32_t tinywords = TINY_NUMBER >> 6; |
250 | time_t time_start, time_stop; | 250 | time_t time_start, time_stop; |
251 | int i, ret = 0; | 251 | u_int32_t i; |
252 | int ret = 0; | ||
252 | 253 | ||
253 | largememory = memory; | 254 | largememory = memory; |
254 | 255 | ||
255 | if (memory != 0 && | 256 | if (memory != 0 && |
256 | (memory < LARGE_MINIMUM || memory > LARGE_MAXIMUM)) { | 257 | (memory < LARGE_MINIMUM || memory > LARGE_MAXIMUM)) { |
257 | error("Invalid memory amount (min %ld, max %ld)", | 258 | error("Invalid memory amount (min %ld, max %ld)", |
258 | LARGE_MINIMUM, LARGE_MAXIMUM); | 259 | LARGE_MINIMUM, LARGE_MAXIMUM); |
259 | return (-1); | 260 | return (-1); |
@@ -371,8 +372,8 @@ gen_candidates(FILE *out, int memory, int power, BIGNUM *start) | |||
371 | * fencepost errors, the last pass is skipped. | 372 | * fencepost errors, the last pass is skipped. |
372 | */ | 373 | */ |
373 | for (smallbase = TINY_NUMBER + 3; | 374 | for (smallbase = TINY_NUMBER + 3; |
374 | smallbase < (SMALL_MAXIMUM - TINY_NUMBER); | 375 | smallbase < (SMALL_MAXIMUM - TINY_NUMBER); |
375 | smallbase += TINY_NUMBER) { | 376 | smallbase += TINY_NUMBER) { |
376 | for (i = 0; i < tinybits; i++) { | 377 | for (i = 0; i < tinybits; i++) { |
377 | if (BIT_TEST(TinySieve, i)) | 378 | if (BIT_TEST(TinySieve, i)) |
378 | continue; /* 2*i+3 is composite */ | 379 | continue; /* 2*i+3 is composite */ |
@@ -548,7 +549,7 @@ prime_test(FILE *in, FILE *out, u_int32_t trials, u_int32_t generator_wanted) | |||
548 | * due to earlier inconsistencies in interpretation, check | 549 | * due to earlier inconsistencies in interpretation, check |
549 | * the proposed bit size. | 550 | * the proposed bit size. |
550 | */ | 551 | */ |
551 | if (BN_num_bits(p) != (in_size + 1)) { | 552 | if ((u_int32_t)BN_num_bits(p) != (in_size + 1)) { |
552 | debug2("%10u: bit size %u mismatch", count_in, in_size); | 553 | debug2("%10u: bit size %u mismatch", count_in, in_size); |
553 | continue; | 554 | continue; |
554 | } | 555 | } |