mirror of
https://github.com/guanzhi/GmSSL.git
synced 2026-08-07 12:33:39 +08:00
Fix bn bugs
This commit is contained in:
@@ -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);
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
14
src/bn.c
14
src/bn.c
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user