diff options
author | nelsonb%netscape.com <devnull@localhost> | 2000-07-22 05:36:45 +0000 |
---|---|---|
committer | nelsonb%netscape.com <devnull@localhost> | 2000-07-22 05:36:45 +0000 |
commit | 5733ab82d90525eadcdb8d35b7630365689009c7 (patch) | |
tree | 31730887f0b2b60a0f4baa3e59a25b48f1eef124 /security/nss/lib/freebl/mpi | |
parent | 985554e153826d3b2eff22e0e94f1bf8bfdadaf8 (diff) | |
download | nss-hg-5733ab82d90525eadcdb8d35b7630365689009c7.tar.gz |
Use large prime table for faster prime gen. Make prime table "const".
Change functions that use prime table to use const arguments.
Diffstat (limited to 'security/nss/lib/freebl/mpi')
-rw-r--r-- | security/nss/lib/freebl/mpi/mpprime.c | 8 | ||||
-rw-r--r-- | security/nss/lib/freebl/mpi/mpprime.h | 5 | ||||
-rw-r--r-- | security/nss/lib/freebl/mpi/primes.c | 33 |
3 files changed, 16 insertions, 30 deletions
diff --git a/security/nss/lib/freebl/mpi/mpprime.c b/security/nss/lib/freebl/mpi/mpprime.c index 84107b6b4..46a0b18c1 100644 --- a/security/nss/lib/freebl/mpi/mpprime.c +++ b/security/nss/lib/freebl/mpi/mpprime.c @@ -40,7 +40,7 @@ #include "mpprime.h" #include <stdlib.h> -#define SMALL_TABLE /* determines size of hard-wired prime table */ +#define SMALL_TABLE 0 /* determines size of hard-wired prime table */ #define RANDOM() rand() @@ -51,7 +51,7 @@ is returned; otherwise, MP_YES is returned and 'which' is set to the index of the integer in the vector which divided a. */ -mp_err s_mpp_divp(mp_int *a, mp_digit *vec, int size, int *which); +mp_err s_mpp_divp(mp_int *a, const mp_digit *vec, int size, int *which); extern mp_err s_mp_pad(mp_int *mp, mp_size min); /* left pad with zeroes */ @@ -178,7 +178,7 @@ mp_err mpp_random_size(mp_int *a, mp_size prec) if it is; returns MP_NO if it is not. */ -mp_err mpp_divis_vector(mp_int *a, mp_digit *vec, int size, int *which) +mp_err mpp_divis_vector(mp_int *a, const mp_digit *vec, int size, int *which) { ARGCHK(a != NULL && vec != NULL && size > 0, MP_BADARG); @@ -380,7 +380,7 @@ X: first digit against which a is divisible. */ -mp_err s_mpp_divp(mp_int *a, mp_digit *vec, int size, int *which) +mp_err s_mpp_divp(mp_int *a, const mp_digit *vec, int size, int *which) { mp_err res; mp_digit rem; diff --git a/security/nss/lib/freebl/mpi/mpprime.h b/security/nss/lib/freebl/mpi/mpprime.h index 617334d42..2ded6dcd5 100644 --- a/security/nss/lib/freebl/mpi/mpprime.h +++ b/security/nss/lib/freebl/mpi/mpprime.h @@ -42,7 +42,8 @@ #include "mpi.h" -extern int prime_tab_size; /* number of primes available */ +extern const int prime_tab_size; /* number of primes available */ +extern const mp_digit prime_tab[]; /* Tests for divisibility */ mp_err mpp_divis(mp_int *a, mp_int *b); @@ -53,7 +54,7 @@ mp_err mpp_random(mp_int *a); mp_err mpp_random_size(mp_int *a, mp_size prec); /* Pseudo-primality testing */ -mp_err mpp_divis_vector(mp_int *a, mp_digit *vec, int size, int *which); +mp_err mpp_divis_vector(mp_int *a, const mp_digit *vec, int size, int *which); mp_err mpp_divis_primes(mp_int *a, mp_digit *np); mp_err mpp_fermat(mp_int *a, mp_digit w); mp_err mpp_pprime(mp_int *a, int nt); diff --git a/security/nss/lib/freebl/mpi/primes.c b/security/nss/lib/freebl/mpi/primes.c index 2d6609a77..14f927b6c 100644 --- a/security/nss/lib/freebl/mpi/primes.c +++ b/security/nss/lib/freebl/mpi/primes.c @@ -39,30 +39,14 @@ * GPL. */ -#ifdef SMALL_TABLE -int prime_tab_size = 128; -mp_digit prime_tab[] = { - 0x0002, 0x0003, 0x0005, 0x0007, 0x000B, 0x000D, 0x0011, 0x0013, - 0x0017, 0x001D, 0x001F, 0x0025, 0x0029, 0x002B, 0x002F, 0x0035, - 0x003B, 0x003D, 0x0043, 0x0047, 0x0049, 0x004F, 0x0053, 0x0059, - 0x0061, 0x0065, 0x0067, 0x006B, 0x006D, 0x0071, 0x007F, 0x0083, - 0x0089, 0x008B, 0x0095, 0x0097, 0x009D, 0x00A3, 0x00A7, 0x00AD, - 0x00B3, 0x00B5, 0x00BF, 0x00C1, 0x00C5, 0x00C7, 0x00D3, 0x00DF, - 0x00E3, 0x00E5, 0x00E9, 0x00EF, 0x00F1, 0x00FB, 0x0101, 0x0107, - 0x010D, 0x010F, 0x0115, 0x0119, 0x011B, 0x0125, 0x0133, 0x0137, - 0x0139, 0x013D, 0x014B, 0x0151, 0x015B, 0x015D, 0x0161, 0x0167, - 0x016F, 0x0175, 0x017B, 0x017F, 0x0185, 0x018D, 0x0191, 0x0199, - 0x01A3, 0x01A5, 0x01AF, 0x01B1, 0x01B7, 0x01BB, 0x01C1, 0x01C9, - 0x01CD, 0x01CF, 0x01D3, 0x01DF, 0x01E7, 0x01EB, 0x01F3, 0x01F7, - 0x01FD, 0x0209, 0x020B, 0x021D, 0x0223, 0x022D, 0x0233, 0x0239, - 0x023B, 0x0241, 0x024B, 0x0251, 0x0257, 0x0259, 0x025F, 0x0265, - 0x0269, 0x026B, 0x0277, 0x0281, 0x0283, 0x0287, 0x028D, 0x0293, - 0x0295, 0x02A1, 0x02A5, 0x02AB, 0x02B3, 0x02BD, 0x02C5, 0x02CF -}; - +#if SMALL_TABLE +#define MP_PRIME_TAB_SIZE 128 #else -int prime_tab_size = 6542; -mp_digit prime_tab[] = { +#define MP_PRIME_TAB_SIZE 6542 +#endif + +const int prime_tab_size = MP_PRIME_TAB_SIZE; +const mp_digit prime_tab[] = { 0x0002, 0x0003, 0x0005, 0x0007, 0x000B, 0x000D, 0x0011, 0x0013, 0x0017, 0x001D, 0x001F, 0x0025, 0x0029, 0x002B, 0x002F, 0x0035, 0x003B, 0x003D, 0x0043, 0x0047, 0x0049, 0x004F, 0x0053, 0x0059, @@ -79,6 +63,7 @@ mp_digit prime_tab[] = { 0x023B, 0x0241, 0x024B, 0x0251, 0x0257, 0x0259, 0x025F, 0x0265, 0x0269, 0x026B, 0x0277, 0x0281, 0x0283, 0x0287, 0x028D, 0x0293, 0x0295, 0x02A1, 0x02A5, 0x02AB, 0x02B3, 0x02BD, 0x02C5, 0x02CF, +#if ! SMALL_TABLE 0x02D7, 0x02DD, 0x02E3, 0x02E7, 0x02EF, 0x02F5, 0x02F9, 0x0301, 0x0305, 0x0313, 0x031D, 0x0329, 0x032B, 0x0335, 0x0337, 0x033B, 0x033D, 0x0347, 0x0355, 0x0359, 0x035B, 0x035F, 0x036D, 0x0371, @@ -881,6 +866,6 @@ mp_digit prime_tab[] = { 0xFEF5, 0xFF07, 0xFF0D, 0xFF1D, 0xFF2B, 0xFF2F, 0xFF49, 0xFF4D, 0xFF5B, 0xFF65, 0xFF71, 0xFF7F, 0xFF85, 0xFF8B, 0xFF8F, 0xFF9D, 0xFFA7, 0xFFA9, 0xFFC7, 0xFFD9, 0xFFEF, 0xFFF1, +#endif }; -#endif |