mirror of
https://github.com/trezor/trezor-firmware.git
synced 2025-02-08 21:52:42 +00:00
bignum: rename bn_digitcount to bn_maxdigitcount (can return value one higher than the real result)
This commit is contained in:
parent
fd78df0e57
commit
5dbdf18b6c
2
bignum.c
2
bignum.c
@ -999,7 +999,7 @@ size_t bn_format(const bignum256 *amnt, const char *prefix, const char *suffix,
|
|||||||
BN_FORMAT_PUSH(0);
|
BN_FORMAT_PUSH(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned int digits = bn_digitcount(&val);
|
unsigned int digits = bn_maxdigitcount(&val);
|
||||||
for (unsigned int i = 0; i < digits / 3; i++) {
|
for (unsigned int i = 0; i < digits / 3; i++) {
|
||||||
uint32_t limb;
|
uint32_t limb;
|
||||||
bn_divmod1000(&val, &limb);
|
bn_divmod1000(&val, &limb);
|
||||||
|
2
bignum.h
2
bignum.h
@ -83,7 +83,7 @@ static inline void bn_copy(const bignum256 *a, bignum256 *b) {
|
|||||||
|
|
||||||
int bn_bitcount(const bignum256 *a);
|
int bn_bitcount(const bignum256 *a);
|
||||||
|
|
||||||
static inline int bn_digitcount(const bignum256 *a)
|
static inline int bn_maxdigitcount(const bignum256 *a)
|
||||||
{
|
{
|
||||||
int bitcount = bn_bitcount(a);
|
int bitcount = bn_bitcount(a);
|
||||||
|
|
||||||
|
12
test_check.c
12
test_check.c
@ -371,7 +371,7 @@ START_TEST(test_bignum_digitcount)
|
|||||||
bignum256 a;
|
bignum256 a;
|
||||||
|
|
||||||
bn_zero(&a);
|
bn_zero(&a);
|
||||||
ck_assert_int_eq(bn_digitcount(&a), 1);
|
ck_assert_int_eq(bn_maxdigitcount(&a), 1);
|
||||||
|
|
||||||
// test for 10000 and 99999 when i=5
|
// test for 10000 and 99999 when i=5
|
||||||
for (int i = 1; i <= 19; i++) {
|
for (int i = 1; i <= 19; i++) {
|
||||||
@ -382,19 +382,19 @@ START_TEST(test_bignum_digitcount)
|
|||||||
n = n * 10 + 9;
|
n = n * 10 + 9;
|
||||||
}
|
}
|
||||||
bn_read_uint64(m, &a);
|
bn_read_uint64(m, &a);
|
||||||
ck_assert_int_eq(bn_digitcount(&a), i);
|
ck_assert_int_eq(bn_maxdigitcount(&a), i);
|
||||||
bn_read_uint64(n, &a);
|
bn_read_uint64(n, &a);
|
||||||
ck_assert_int_eq(bn_digitcount(&a), i);
|
ck_assert_int_eq(bn_maxdigitcount(&a), i + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
bn_read_uint32(0x3fffffff, &a);
|
bn_read_uint32(0x3fffffff, &a);
|
||||||
ck_assert_int_eq(bn_digitcount(&a), 10);
|
ck_assert_int_eq(bn_maxdigitcount(&a), 10);
|
||||||
|
|
||||||
bn_read_uint32(0xffffffff, &a);
|
bn_read_uint32(0xffffffff, &a);
|
||||||
ck_assert_int_eq(bn_digitcount(&a), 10);
|
ck_assert_int_eq(bn_maxdigitcount(&a), 10);
|
||||||
|
|
||||||
bn_read_be(fromhex("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"), &a);
|
bn_read_be(fromhex("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"), &a);
|
||||||
ck_assert_int_eq(bn_digitcount(&a), 78);
|
ck_assert_int_eq(bn_maxdigitcount(&a), 78);
|
||||||
}
|
}
|
||||||
END_TEST
|
END_TEST
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user