Skip to content

Commit

Permalink
Merge pull request #397 from libtom/bbs-style
Browse files Browse the repository at this point in the history
mp_prime_next_prime: use mp_bool for bbs_style
  • Loading branch information
sjaeckel authored Oct 23, 2019
2 parents 1f210d2 + 3180c66 commit 4bab432
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 15 deletions.
16 changes: 8 additions & 8 deletions demo/test.c
Original file line number Diff line number Diff line change
Expand Up @@ -1061,7 +1061,7 @@ static int test_mp_prime_next_prime(void)

/* edge cases */
mp_set(&a, 0u);
if ((err = mp_prime_next_prime(&a, 5, 0)) != MP_OKAY) {
if ((err = mp_prime_next_prime(&a, 5, MP_NO)) != MP_OKAY) {
goto LBL_ERR;
}
if (mp_cmp_d(&a, 2u) != MP_EQ) {
Expand All @@ -1072,7 +1072,7 @@ static int test_mp_prime_next_prime(void)
}

mp_set(&a, 0u);
if ((err = mp_prime_next_prime(&a, 5, 1)) != MP_OKAY) {
if ((err = mp_prime_next_prime(&a, 5, MP_YES)) != MP_OKAY) {
goto LBL_ERR;
}
if (mp_cmp_d(&a, 3u) != MP_EQ) {
Expand All @@ -1083,7 +1083,7 @@ static int test_mp_prime_next_prime(void)
}

mp_set(&a, 2u);
if ((err = mp_prime_next_prime(&a, 5, 0)) != MP_OKAY) {
if ((err = mp_prime_next_prime(&a, 5, MP_NO)) != MP_OKAY) {
goto LBL_ERR;
}
if (mp_cmp_d(&a, 3u) != MP_EQ) {
Expand All @@ -1094,7 +1094,7 @@ static int test_mp_prime_next_prime(void)
}

mp_set(&a, 2u);
if ((err = mp_prime_next_prime(&a, 5, 1)) != MP_OKAY) {
if ((err = mp_prime_next_prime(&a, 5, MP_YES)) != MP_OKAY) {
goto LBL_ERR;
}
if (mp_cmp_d(&a, 3u) != MP_EQ) {
Expand All @@ -1104,7 +1104,7 @@ static int test_mp_prime_next_prime(void)
goto LBL_ERR;
}
mp_set(&a, 8);
if ((err = mp_prime_next_prime(&a, 5, 1)) != MP_OKAY) {
if ((err = mp_prime_next_prime(&a, 5, MP_YES)) != MP_OKAY) {
goto LBL_ERR;
}
if (mp_cmp_d(&a, 11u) != MP_EQ) {
Expand All @@ -1130,7 +1130,7 @@ static int test_mp_prime_next_prime(void)
if ((err = mp_add(&b, &c, &b)) != MP_OKAY) {
goto LBL_ERR;
}
if ((err = mp_prime_next_prime(&a, 5, 0)) != MP_OKAY) {
if ((err = mp_prime_next_prime(&a, 5, MP_NO)) != MP_OKAY) {
goto LBL_ERR;
}
if (mp_cmp(&a, &b) != MP_EQ) {
Expand Down Expand Up @@ -1160,7 +1160,7 @@ static int test_mp_prime_next_prime(void)
if ((err = mp_add(&b, &c, &b)) != MP_OKAY) {
goto LBL_ERR;
}
if ((err = mp_prime_next_prime(&a, 5, 1)) != MP_OKAY) {
if ((err = mp_prime_next_prime(&a, 5, MP_YES)) != MP_OKAY) {
goto LBL_ERR;
}
if (mp_cmp(&a, &b) != MP_EQ) {
Expand Down Expand Up @@ -1284,7 +1284,7 @@ static int test_mp_read_radix(void)
char *s = fgets(buf, sizeof(buf), stdin);
if (s != buf) break;
mp_read_radix(&a, buf, 10);
mp_prime_next_prime(&a, 5, 1);
mp_prime_next_prime(&a, 5, MP_YES);
mp_to_radix(&a, buf, sizeof(buf), NULL, 10);
printf("%s, %lu\n", buf, (unsigned long)a.dp[0] & 3uL);
}
Expand Down
10 changes: 5 additions & 5 deletions mp_prime_next_prime.c
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@
/* finds the next prime after the number "a" using "t" trials
* of Miller-Rabin.
*
* bbs_style = 1 means the prime must be congruent to 3 mod 4
* bbs_style = MP_YES means the prime must be congruent to 3 mod 4
*/
mp_err mp_prime_next_prime(mp_int *a, int t, int bbs_style)
mp_err mp_prime_next_prime(mp_int *a, int t, mp_bool bbs_style)
{
int x, y;
mp_ord cmp;
Expand All @@ -29,7 +29,7 @@ mp_err mp_prime_next_prime(mp_int *a, int t, int bbs_style)
continue;
}
if (cmp != MP_GT) {
if ((bbs_style == 1) && ((s_mp_prime_tab[x] & 3u) != 3u)) {
if ((bbs_style == MP_YES) && ((s_mp_prime_tab[x] & 3u) != 3u)) {
/* try again until we get a prime congruent to 3 mod 4 */
continue;
} else {
Expand All @@ -42,15 +42,15 @@ mp_err mp_prime_next_prime(mp_int *a, int t, int bbs_style)
}

/* generate a prime congruent to 3 mod 4 or 1/3 mod 4? */
if (bbs_style == 1) {
if (bbs_style == MP_YES) {
kstep = 4;
} else {
kstep = 2;
}

/* at this point we will use a combination of a sieve and Miller-Rabin */

if (bbs_style == 1) {
if (bbs_style == MP_YES) {
/* if a mod 4 != 3 subtract the correct value to make it so */
if ((a->dp[0] & 3u) != 3u) {
if ((err = mp_sub_d(a, (a->dp[0] & 3u) + 1u, a)) != MP_OKAY) {
Expand Down
4 changes: 2 additions & 2 deletions tommath.h
Original file line number Diff line number Diff line change
Expand Up @@ -550,9 +550,9 @@ mp_err mp_prime_is_prime(const mp_int *a, int t, mp_bool *result) MP_WUR;
/* finds the next prime after the number "a" using "t" trials
* of Miller-Rabin.
*
* bbs_style = 1 means the prime must be congruent to 3 mod 4
* bbs_style = MP_YES means the prime must be congruent to 3 mod 4
*/
mp_err mp_prime_next_prime(mp_int *a, int t, int bbs_style) MP_WUR;
mp_err mp_prime_next_prime(mp_int *a, int t, mp_bool bbs_style) MP_WUR;

/* makes a truly random prime of a given size (bits),
*
Expand Down

0 comments on commit 4bab432

Please sign in to comment.