Commit ab011d51 authored by Andy Polyakov's avatar Andy Polyakov
Browse files

Minimize stack utilization in probable_prime [from HEAD].

parent 898d9b1a
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -377,14 +377,14 @@ static int witness(BIGNUM *w, const BIGNUM *a, const BIGNUM *a1,
static int probable_prime(BIGNUM *rnd, int bits)
	{
	int i;
	BN_ULONG mods[NUMPRIMES];
	prime_t mods[NUMPRIMES];
	BN_ULONG delta,maxdelta;

again:
	if (!BN_rand(rnd,bits,1,1)) return(0);
	/* we now have a random number 'rand' to test. */
	for (i=1; i<NUMPRIMES; i++)
		mods[i]=BN_mod_word(rnd,(BN_ULONG)primes[i]);
		mods[i]=(prime_t)BN_mod_word(rnd,(BN_ULONG)primes[i]);
	maxdelta=BN_MASK2 - primes[NUMPRIMES-1];
	delta=0;
	loop: for (i=1; i<NUMPRIMES; i++)
+3 −1
Original line number Diff line number Diff line
@@ -58,10 +58,12 @@

#ifndef EIGHT_BIT
#define NUMPRIMES 2048
typedef unsigned short prime_t;
#else
#define NUMPRIMES 54
typedef unsigned char prime_t;
#endif
static const unsigned int primes[NUMPRIMES]=
static const prime_t primes[NUMPRIMES]=
	{
	   2,   3,   5,   7,  11,  13,  17,  19,
	  23,  29,  31,  37,  41,  43,  47,  53,
+3 −1
Original line number Diff line number Diff line
@@ -101,10 +101,12 @@ for ($i=0; $i <= $#primes; $i++)

printf "#ifndef EIGHT_BIT\n";
printf "#define NUMPRIMES %d\n",$num;
printf "typedef unsigned short prime_t;\n";
printf "#else\n";
printf "#define NUMPRIMES %d\n",$eight;
printf "typedef unsigned char prime_t;\n";
printf "#endif\n";
print "static const unsigned int primes[NUMPRIMES]=\n\t{\n\t";
print "static const prime_t primes[NUMPRIMES]=\n\t{\n\t";
$init=0;
for ($i=0; $i <= $#primes; $i++)
	{