summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjsing <>2023-06-20 06:36:09 +0000
committerjsing <>2023-06-20 06:36:09 +0000
commita4427f65a3d1945ddc43273bcf9e3d4ca6be86c6 (patch)
treefc92e12ad5b2f7adcad645596ad27e7458c6cd1d
parentca927b2474f226b4c6c0fa9b1d17adc404b09012 (diff)
downloadopenbsd-a4427f65a3d1945ddc43273bcf9e3d4ca6be86c6.tar.gz
openbsd-a4427f65a3d1945ddc43273bcf9e3d4ca6be86c6.tar.bz2
openbsd-a4427f65a3d1945ddc43273bcf9e3d4ca6be86c6.zip
Add regress coverage for BN_num_bits()
-rw-r--r--src/regress/lib/libcrypto/bn/bn_unit.c36
1 files changed, 35 insertions, 1 deletions
diff --git a/src/regress/lib/libcrypto/bn/bn_unit.c b/src/regress/lib/libcrypto/bn/bn_unit.c
index 95764dfce1..24c7569ff9 100644
--- a/src/regress/lib/libcrypto/bn/bn_unit.c
+++ b/src/regress/lib/libcrypto/bn/bn_unit.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: bn_unit.c,v 1.4 2023/03/31 19:40:08 tb Exp $ */ 1/* $OpenBSD: bn_unit.c,v 1.5 2023/06/20 06:36:09 jsing Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 2022 Theo Buehler <tb@openbsd.org> 4 * Copyright (c) 2022 Theo Buehler <tb@openbsd.org>
@@ -70,6 +70,39 @@ test_bn_print_null_derefs(void)
70} 70}
71 71
72static int 72static int
73test_bn_num_bits(void)
74{
75 BIGNUM *bn;
76 int i, num_bits;
77 int failed = 0;
78
79 if ((bn = BN_new()) == NULL)
80 errx(1, "BN_new");
81
82 if ((num_bits = BN_num_bits(bn)) != 0) {
83 warnx("BN_num_bits_word(0): want 0, got %d", num_bits);
84 failed |= 1;
85 }
86
87 if (!BN_set_word(bn, 1))
88 errx(1, "BN_set_word");
89
90 for (i = 0; i <= 5 * BN_BITS2; i++) {
91 if ((num_bits = BN_num_bits(bn)) != i + 1) {
92 warnx("BN_num_bits(1 << %d): want %d, got %d",
93 i, i + 1, num_bits);
94 failed |= 1;
95 }
96 if (!BN_lshift1(bn, bn))
97 errx(1, "BN_lshift1");
98 }
99
100 BN_free(bn);
101
102 return failed;
103}
104
105static int
73test_bn_num_bits_word(void) 106test_bn_num_bits_word(void)
74{ 107{
75 BN_ULONG w = 1; 108 BN_ULONG w = 1;
@@ -255,6 +288,7 @@ main(void)
255 int failed = 0; 288 int failed = 0;
256 289
257 failed |= test_bn_print_null_derefs(); 290 failed |= test_bn_print_null_derefs();
291 failed |= test_bn_num_bits();
258 failed |= test_bn_num_bits_word(); 292 failed |= test_bn_num_bits_word();
259 failed |= test_bn_copy_copies_flags(); 293 failed |= test_bn_copy_copies_flags();
260 failed |= test_bn_copy_consttime_is_sticky(); 294 failed |= test_bn_copy_consttime_is_sticky();