OpenCoverage

bn_rand.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/libressl/src/crypto/bn/bn_rand.c
Source codeSwitch to Preprocessed file
LineSourceCount
1/* $OpenBSD: bn_rand.c,v 1.20 2017/05/02 03:59:44 deraadt Exp $ */-
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)-
3 * All rights reserved.-
4 *-
5 * This package is an SSL implementation written-
6 * by Eric Young (eay@cryptsoft.com).-
7 * The implementation was written so as to conform with Netscapes SSL.-
8 *-
9 * This library is free for commercial and non-commercial use as long as-
10 * the following conditions are aheared to. The following conditions-
11 * apply to all code found in this distribution, be it the RC4, RSA,-
12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation-
13 * included with this distribution is covered by the same copyright terms-
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).-
15 *-
16 * Copyright remains Eric Young's, and as such any Copyright notices in-
17 * the code are not to be removed.-
18 * If this package is used in a product, Eric Young should be given attribution-
19 * as the author of the parts of the library used.-
20 * This can be in the form of a textual message at program startup or-
21 * in documentation (online or textual) provided with the package.-
22 *-
23 * Redistribution and use in source and binary forms, with or without-
24 * modification, are permitted provided that the following conditions-
25 * are met:-
26 * 1. Redistributions of source code must retain the copyright-
27 * notice, this list of conditions and the following disclaimer.-
28 * 2. Redistributions in binary form must reproduce the above copyright-
29 * notice, this list of conditions and the following disclaimer in the-
30 * documentation and/or other materials provided with the distribution.-
31 * 3. All advertising materials mentioning features or use of this software-
32 * must display the following acknowledgement:-
33 * "This product includes cryptographic software written by-
34 * Eric Young (eay@cryptsoft.com)"-
35 * The word 'cryptographic' can be left out if the rouines from the library-
36 * being used are not cryptographic related :-).-
37 * 4. If you include any Windows specific code (or a derivative thereof) from-
38 * the apps directory (application code) you must include an acknowledgement:-
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"-
40 *-
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND-
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE-
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE-
44 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE-
45 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL-
46 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS-
47 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)-
48 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT-
49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY-
50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF-
51 * SUCH DAMAGE.-
52 *-
53 * The licence and distribution terms for any publically available version or-
54 * derivative of this code cannot be changed. i.e. this code cannot simply be-
55 * copied and put under another distribution licence-
56 * [including the GNU Public Licence.]-
57 */-
58/* ====================================================================-
59 * Copyright (c) 1998-2001 The OpenSSL Project. All rights reserved.-
60 *-
61 * Redistribution and use in source and binary forms, with or without-
62 * modification, are permitted provided that the following conditions-
63 * are met:-
64 *-
65 * 1. Redistributions of source code must retain the above copyright-
66 * notice, this list of conditions and the following disclaimer.-
67 *-
68 * 2. Redistributions in binary form must reproduce the above copyright-
69 * notice, this list of conditions and the following disclaimer in-
70 * the documentation and/or other materials provided with the-
71 * distribution.-
72 *-
73 * 3. All advertising materials mentioning features or use of this-
74 * software must display the following acknowledgment:-
75 * "This product includes software developed by the OpenSSL Project-
76 * for use in the OpenSSL Toolkit. (http://www.openssl.org/)"-
77 *-
78 * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to-
79 * endorse or promote products derived from this software without-
80 * prior written permission. For written permission, please contact-
81 * openssl-core@openssl.org.-
82 *-
83 * 5. Products derived from this software may not be called "OpenSSL"-
84 * nor may "OpenSSL" appear in their names without prior written-
85 * permission of the OpenSSL Project.-
86 *-
87 * 6. Redistributions of any form whatsoever must retain the following-
88 * acknowledgment:-
89 * "This product includes software developed by the OpenSSL Project-
90 * for use in the OpenSSL Toolkit (http://www.openssl.org/)"-
91 *-
92 * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY-
93 * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE-
94 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR-
95 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR-
96 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,-
97 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT-
98 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;-
99 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)-
100 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,-
101 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)-
102 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED-
103 * OF THE POSSIBILITY OF SUCH DAMAGE.-
104 * ====================================================================-
105 *-
106 * This product includes cryptographic software written by Eric Young-
107 * (eay@cryptsoft.com). This product includes software written by Tim-
108 * Hudson (tjh@cryptsoft.com).-
109 *-
110 */-
111-
112#include <stdio.h>-
113#include <stdlib.h>-
114#include <string.h>-
115#include <time.h>-
116-
117#include <openssl/err.h>-
118-
119#include "bn_lcl.h"-
120-
121static int-
122bnrand(int pseudorand, BIGNUM *rnd, int bits, int top, int bottom)-
123{-
124 unsigned char *buf = NULL;-
125 int ret = 0, bit, bytes, mask;-
126-
127 if (rnd == NULL) {
rnd == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 6911 times by 14 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • exptest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
0-6911
128 BNerror(ERR_R_PASSED_NULL_PARAMETER);-
129 return (0);
never executed: return (0);
0
130 }-
131-
132 if (bits == 0) {
bits == 0Description
TRUEnever evaluated
FALSEevaluated 6911 times by 14 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • exptest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
0-6911
133 BN_zero(rnd);-
134 return (1);
never executed: return (1);
0
135 }-
136-
137 bytes = (bits + 7) / 8;-
138 bit = (bits - 1) % 8;-
139 mask = 0xff << (bit + 1);-
140-
141 buf = malloc(bytes);-
142 if (buf == NULL) {
buf == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 6911 times by 14 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • exptest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
0-6911
143 BNerror(ERR_R_MALLOC_FAILURE);-
144 goto err;
never executed: goto err;
0
145 }-
146-
147 /* make a random number and set the top and bottom bits */-
148 arc4random_buf(buf, bytes);-
149-
150#if 1-
151 if (pseudorand == 2) {
pseudorand == 2Description
TRUEevaluated 3385 times by 1 test
Evaluated by:
  • bntest
FALSEevaluated 3526 times by 14 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • exptest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
3385-3526
152 /* generate patterns that are more likely to trigger BN-
153 library bugs */-
154 int i;-
155 unsigned char c;-
156-
157 for (i = 0; i < bytes; i++) {
i < bytesDescription
TRUEevaluated 254134 times by 1 test
Evaluated by:
  • bntest
FALSEevaluated 3385 times by 1 test
Evaluated by:
  • bntest
3385-254134
158 arc4random_buf(&c, 1);-
159 if (c >= 128 && i > 0)
c >= 128Description
TRUEevaluated 126974 times by 1 test
Evaluated by:
  • bntest
FALSEevaluated 127160 times by 1 test
Evaluated by:
  • bntest
i > 0Description
TRUEevaluated 125321 times by 1 test
Evaluated by:
  • bntest
FALSEevaluated 1653 times by 1 test
Evaluated by:
  • bntest
1653-127160
160 buf[i] = buf[i - 1];
executed 125321 times by 1 test: buf[i] = buf[i - 1];
Executed by:
  • bntest
125321
161 else if (c < 42)
c < 42Description
TRUEevaluated 41398 times by 1 test
Evaluated by:
  • bntest
FALSEevaluated 87415 times by 1 test
Evaluated by:
  • bntest
41398-87415
162 buf[i] = 0;
executed 41398 times by 1 test: buf[i] = 0;
Executed by:
  • bntest
41398
163 else if (c < 84)
c < 84Description
TRUEevaluated 42134 times by 1 test
Evaluated by:
  • bntest
FALSEevaluated 45281 times by 1 test
Evaluated by:
  • bntest
42134-45281
164 buf[i] = 255;
executed 42134 times by 1 test: buf[i] = 255;
Executed by:
  • bntest
42134
165 }
executed 254134 times by 1 test: end of block
Executed by:
  • bntest
254134
166 }
executed 3385 times by 1 test: end of block
Executed by:
  • bntest
3385
167#endif-
168-
169 if (top != -1) {
top != -1Description
TRUEevaluated 4051 times by 7 tests
Evaluated by:
  • bntest
  • dhtest
  • exptest
  • libcrypto.so.44.0.1
  • mont
  • servertest
  • ssltest
FALSEevaluated 2860 times by 13 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
2860-4051
170 if (top) {
topDescription
TRUEevaluated 24 times by 2 tests
Evaluated by:
  • bntest
  • libcrypto.so.44.0.1
FALSEevaluated 4027 times by 7 tests
Evaluated by:
  • bntest
  • dhtest
  • exptest
  • libcrypto.so.44.0.1
  • mont
  • servertest
  • ssltest
24-4027
171 if (bit == 0) {
bit == 0Description
TRUEnever evaluated
FALSEevaluated 24 times by 2 tests
Evaluated by:
  • bntest
  • libcrypto.so.44.0.1
0-24
172 buf[0] = 1;-
173 buf[1] |= 0x80;-
174 } else {
never executed: end of block
0
175 buf[0] |= (3 << (bit - 1));-
176 }
executed 24 times by 2 tests: end of block
Executed by:
  • bntest
  • libcrypto.so.44.0.1
24
177 } else {-
178 buf[0] |= (1 << bit);-
179 }
executed 4027 times by 7 tests: end of block
Executed by:
  • bntest
  • dhtest
  • exptest
  • libcrypto.so.44.0.1
  • mont
  • servertest
  • ssltest
4027
180 }-
181 buf[0] &= ~mask;-
182 if (bottom) /* set bottom bit if requested */
bottomDescription
TRUEevaluated 488 times by 5 tests
Evaluated by:
  • bntest
  • dhtest
  • exptest
  • libcrypto.so.44.0.1
  • mont
FALSEevaluated 6423 times by 14 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • exptest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
488-6423
183 buf[bytes - 1] |= 1;
executed 488 times by 5 tests: buf[bytes - 1] |= 1;
Executed by:
  • bntest
  • dhtest
  • exptest
  • libcrypto.so.44.0.1
  • mont
488
184 if (BN_bin2bn(buf, bytes, rnd) == NULL)
BN_bin2bn(buf,...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 6911 times by 14 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • exptest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
0-6911
185 goto err;
never executed: goto err;
0
186 ret = 1;-
187-
188err:
code before this statement executed 6911 times by 14 tests: err:
Executed by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • exptest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
6911
189 freezero(buf, bytes);-
190 bn_check_top(rnd);-
191 return (ret);
executed 6911 times by 14 tests: return (ret);
Executed by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • exptest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
6911
192}-
193-
194int -
195BN_rand(BIGNUM *rnd, int bits, int top, int bottom)-
196{-
197 return bnrand(0, rnd, bits, top, bottom);
executed 1668 times by 13 tests: return bnrand(0, rnd, bits, top, bottom);
Executed by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • exptest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
1668
198}-
199-
200int -
201BN_pseudo_rand(BIGNUM *rnd, int bits, int top, int bottom)-
202{-
203 return bnrand(1, rnd, bits, top, bottom);
executed 1858 times by 6 tests: return bnrand(1, rnd, bits, top, bottom);
Executed by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
1858
204}-
205-
206#if 1-
207int -
208BN_bntest_rand(BIGNUM *rnd, int bits, int top, int bottom)-
209{-
210 return bnrand(2, rnd, bits, top, bottom);
executed 3385 times by 1 test: return bnrand(2, rnd, bits, top, bottom);
Executed by:
  • bntest
3385
211}-
212#endif-
213-
214-
215/* random number r: 0 <= r < range */-
216static int-
217bn_rand_range(int pseudo, BIGNUM *r, const BIGNUM *range)-
218{-
219 int (*bn_rand)(BIGNUM *, int, int, int) = pseudo ? BN_pseudo_rand : BN_rand;
pseudoDescription
TRUEevaluated 1572 times by 6 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
FALSEevaluated 468 times by 9 tests
Evaluated by:
  • dsatest
  • ecdhtest
  • ecdsatest
  • libcrypto.so.44.0.1
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
468-1572
220 int n;-
221 int count = 100;-
222-
223 if (range->neg || BN_is_zero(range)) {
range->negDescription
TRUEnever evaluated
FALSEevaluated 2040 times by 13 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
((range)->top == 0)Description
TRUEnever evaluated
FALSEevaluated 2040 times by 13 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
0-2040
224 BNerror(BN_R_INVALID_RANGE);-
225 return 0;
never executed: return 0;
0
226 }-
227-
228 n = BN_num_bits(range); /* n > 0 */-
229-
230 /* BN_is_bit_set(range, n - 1) always holds */-
231-
232 if (n == 1)
n == 1Description
TRUEnever evaluated
FALSEevaluated 2040 times by 13 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
0-2040
233 BN_zero(r);
never executed: (BN_set_word((r),0));
0
234 else if (!BN_is_bit_set(range, n - 2) && !BN_is_bit_set(range, n - 3)) {
!BN_is_bit_set(range, n - 2)Description
TRUEevaluated 1011 times by 9 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
FALSEevaluated 1029 times by 11 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
  • servertest
  • ssltest
  • tlstest
!BN_is_bit_set(range, n - 3)Description
TRUEevaluated 647 times by 7 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • libcrypto.so.44.0.1
  • mont
FALSEevaluated 364 times by 8 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ecdsatest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
364-1029
235 /* range = 100..._2,-
236 * so 3*range (= 11..._2) is exactly one bit longer than range */-
237 do {-
238 if (!bn_rand(r, n + 1, -1, 0))
!bn_rand(r, n + 1, -1, 0)Description
TRUEnever evaluated
FALSEevaluated 777 times by 7 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • libcrypto.so.44.0.1
  • mont
0-777
239 return 0;
never executed: return 0;
0
240 /* If r < 3*range, use r := r MOD range-
241 * (which is either r, r - range, or r - 2*range).-
242 * Otherwise, iterate once more.-
243 * Since 3*range = 11..._2, each iteration succeeds with-
244 * probability >= .75. */-
245 if (BN_cmp(r, range) >= 0) {
BN_cmp(r, range) >= 0Description
TRUEevaluated 552 times by 7 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • libcrypto.so.44.0.1
  • mont
FALSEevaluated 225 times by 7 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • libcrypto.so.44.0.1
  • mont
225-552
246 if (!BN_sub(r, r, range))
!BN_sub(r, r, range)Description
TRUEnever evaluated
FALSEevaluated 552 times by 7 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • libcrypto.so.44.0.1
  • mont
0-552
247 return 0;
never executed: return 0;
0
248 if (BN_cmp(r, range) >= 0)
BN_cmp(r, range) >= 0Description
TRUEevaluated 339 times by 7 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • libcrypto.so.44.0.1
  • mont
FALSEevaluated 213 times by 7 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • libcrypto.so.44.0.1
  • mont
213-339
249 if (!BN_sub(r, r, range))
!BN_sub(r, r, range)Description
TRUEnever evaluated
FALSEevaluated 339 times by 7 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • libcrypto.so.44.0.1
  • mont
0-339
250 return 0;
never executed: return 0;
0
251 }
executed 552 times by 7 tests: end of block
Executed by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • libcrypto.so.44.0.1
  • mont
552
252-
253 if (!--count) {
!--countDescription
TRUEnever evaluated
FALSEevaluated 777 times by 7 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • libcrypto.so.44.0.1
  • mont
0-777
254 BNerror(BN_R_TOO_MANY_ITERATIONS);-
255 return 0;
never executed: return 0;
0
256 }-
257-
258 } while (BN_cmp(r, range) >= 0);
executed 777 times by 7 tests: end of block
Executed by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • libcrypto.so.44.0.1
  • mont
BN_cmp(r, range) >= 0Description
TRUEevaluated 130 times by 7 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • libcrypto.so.44.0.1
  • mont
FALSEevaluated 647 times by 7 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • libcrypto.so.44.0.1
  • mont
130-777
259 } else {
executed 647 times by 7 tests: end of block
Executed by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • libcrypto.so.44.0.1
  • mont
647
260 do {-
261 /* range = 11..._2 or range = 101..._2 */-
262 if (!bn_rand(r, n, -1, 0))
!bn_rand(r, n, -1, 0)Description
TRUEnever evaluated
FALSEevaluated 1635 times by 13 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
0-1635
263 return 0;
never executed: return 0;
0
264-
265 if (!--count) {
!--countDescription
TRUEnever evaluated
FALSEevaluated 1635 times by 13 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
0-1635
266 BNerror(BN_R_TOO_MANY_ITERATIONS);-
267 return 0;
never executed: return 0;
0
268 }-
269 } while (BN_cmp(r, range) >= 0);
executed 1635 times by 13 tests: end of block
Executed by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
BN_cmp(r, range) >= 0Description
TRUEevaluated 242 times by 8 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ecdsatest
  • libcrypto.so.44.0.1
  • mont
  • rsa_test
  • ssltest
FALSEevaluated 1393 times by 13 tests
Evaluated by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
242-1635
270 }
executed 1393 times by 13 tests: end of block
Executed by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
1393
271-
272 bn_check_top(r);-
273 return 1;
executed 2040 times by 13 tests: return 1;
Executed by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
2040
274}-
275-
276int-
277BN_rand_range(BIGNUM *r, const BIGNUM *range)-
278{-
279 return bn_rand_range(0, r, range);
executed 468 times by 9 tests: return bn_rand_range(0, r, range);
Executed by:
  • dsatest
  • ecdhtest
  • ecdsatest
  • libcrypto.so.44.0.1
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
468
280}-
281-
282int-
283BN_pseudo_rand_range(BIGNUM *r, const BIGNUM *range)-
284{-
285 return bn_rand_range(1, r, range);
executed 1572 times by 6 tests: return bn_rand_range(1, r, range);
Executed by:
  • bntest
  • dhtest
  • dsatest
  • ectest
  • libcrypto.so.44.0.1
  • mont
1572
286}-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.2.2