Fix bn bugs

This commit is contained in:
Zhi Guan
2026-05-27 21:34:52 +08:00
parent 83cac7235e
commit ad9eb3c547
2 changed files with 10 additions and 6 deletions

View File

@@ -76,7 +76,7 @@ void bn_mont_set(uint32_t *r, const uint32_t *a, const uint32_t *one_sqr, const
uint32_t *tmp, // uint32_t tmp[5 * k] uint32_t *tmp, // uint32_t tmp[5 * k]
size_t k); size_t k);
void bn_mont_get(uint32_t *r, const uint32_t *a, const uint32_t *p, const uint32_t *p_inv_neg, void bn_mont_get(uint32_t *r, const uint32_t *a, const uint32_t *p, const uint32_t *p_inv_neg,
uint32_t *tmp, // uint32_t tmp[5 * k] uint32_t *tmp, // uint32_t tmp[6 * k]
size_t k); size_t k);

View File

@@ -101,7 +101,7 @@ void bn_mul(uint32_t *r, const uint32_t *a, const uint32_t *b, size_t k)
r[i + j] = w & 0xffffffff; r[i + j] = w & 0xffffffff;
w >>= 32; w >>= 32;
} }
r[i + k] = w; r[i + k] = (uint32_t)w;
} }
} }
@@ -140,9 +140,10 @@ void bn_from_bytes(uint32_t *a, size_t k, const uint8_t *in)
int bn_print(FILE *fp, int fmt, int ind, const char *label, const uint32_t *a, size_t k) int bn_print(FILE *fp, int fmt, int ind, const char *label, const uint32_t *a, size_t k)
{ {
size_t i;
fprintf(fp, "%s: ", label); fprintf(fp, "%s: ", label);
int i;
for (i = 0; i < k; i++) { for (i = 0; i < k; i++) {
fprintf(fp, "0x%08x, ", a[i]); fprintf(fp, "0x%08x, ", a[i]);
} }
@@ -370,11 +371,14 @@ void bn_mont_get(uint32_t *r,
const uint32_t *a, const uint32_t *a,
const uint32_t *p, const uint32_t *p,
const uint32_t *p_inv_neg, const uint32_t *p_inv_neg,
uint32_t *tmp, // uint32_t tmp[5 * k] uint32_t *tmp, // uint32_t tmp[6 * k]
size_t k) size_t k)
{ {
uint32_t one[k]; uint32_t *one;
one = tmp;
tmp += k;
bn_set_word(one, 1, k); bn_set_word(one, 1, k);
bn_mont_mod_mul(r, a, one, p, p_inv_neg, tmp, k); bn_mont_mod_mul(r, a, one, p, p_inv_neg, tmp, k);
} }