OpenCoverage

bn_print.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/libressl/src/crypto/bn/bn_print.c
Source codeSwitch to Preprocessed file
LineSourceCount
1/* $OpenBSD: bn_print.c,v 1.31 2017/01/29 17:49:22 beck 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#include <ctype.h>-
60#include <limits.h>-
61#include <stdio.h>-
62-
63#include <openssl/opensslconf.h>-
64-
65#include <openssl/bio.h>-
66#include <openssl/buffer.h>-
67#include <openssl/err.h>-
68-
69#include "bn_lcl.h"-
70-
71static const char Hex[]="0123456789ABCDEF";-
72-
73/* Must 'free' the returned data */-
74char *-
75BN_bn2hex(const BIGNUM *a)-
76{-
77 int i, j, v, z = 0;-
78 char *buf;-
79 char *p;-
80-
81 buf = malloc(BN_is_negative(a) + a->top * BN_BYTES * 2 + 2);-
82 if (buf == NULL) {
buf == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
83 BNerror(ERR_R_MALLOC_FAILURE);-
84 goto err;
never executed: goto err;
0
85 }-
86 p = buf;-
87 if (BN_is_negative(a))
((a)->neg != 0)Description
TRUEnever evaluated
FALSEnever evaluated
0
88 *p++ = '-';
never executed: *p++ = '-';
0
89 if (BN_is_zero(a))
((a)->top == 0)Description
TRUEnever evaluated
FALSEnever evaluated
0
90 *p++ = '0';
never executed: *p++ = '0';
0
91 for (i = a->top - 1; i >=0; i--) {
i >=0Description
TRUEnever evaluated
FALSEnever evaluated
0
92 for (j = BN_BITS2 - 8; j >= 0; j -= 8) {
j >= 0Description
TRUEnever evaluated
FALSEnever evaluated
0
93 /* strip leading zeros */-
94 v = ((int)(a->d[i] >> (long)j)) & 0xff;-
95 if (z || (v != 0)) {
zDescription
TRUEnever evaluated
FALSEnever evaluated
(v != 0)Description
TRUEnever evaluated
FALSEnever evaluated
0
96 *p++ = Hex[v >> 4];-
97 *p++ = Hex[v & 0x0f];-
98 z = 1;-
99 }
never executed: end of block
0
100 }
never executed: end of block
0
101 }
never executed: end of block
0
102 *p = '\0';-
103-
104err:
code before this statement never executed: err:
0
105 return (buf);
never executed: return (buf);
0
106}-
107-
108/* Must 'free' the returned data */-
109char *-
110BN_bn2dec(const BIGNUM *a)-
111{-
112 int i = 0, num, bn_data_num, ok = 0;-
113 char *buf = NULL;-
114 char *p;-
115 BIGNUM *t = NULL;-
116 BN_ULONG *bn_data = NULL, *lp;-
117-
118 if (BN_is_zero(a)) {
((a)->top == 0)Description
TRUEnever evaluated
FALSEnever evaluated
0
119 buf = malloc(BN_is_negative(a) + 2);-
120 if (buf == NULL) {
buf == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
121 BNerror(ERR_R_MALLOC_FAILURE);-
122 goto err;
never executed: goto err;
0
123 }-
124 p = buf;-
125 if (BN_is_negative(a))
((a)->neg != 0)Description
TRUEnever evaluated
FALSEnever evaluated
0
126 *p++ = '-';
never executed: *p++ = '-';
0
127 *p++ = '0';-
128 *p++ = '\0';-
129 return (buf);
never executed: return (buf);
0
130 }-
131-
132 /* get an upper bound for the length of the decimal integer-
133 * num <= (BN_num_bits(a) + 1) * log(2)-
134 * <= 3 * BN_num_bits(a) * 0.1001 + log(2) + 1 (rounding error)-
135 * <= BN_num_bits(a)/10 + BN_num_bits/1000 + 1 + 1-
136 */-
137 i = BN_num_bits(a) * 3;-
138 num = (i / 10 + i / 1000 + 1) + 1;-
139 bn_data_num = num / BN_DEC_NUM + 1;-
140 bn_data = reallocarray(NULL, bn_data_num, sizeof(BN_ULONG));-
141 buf = malloc(num + 3);-
142 if ((buf == NULL) || (bn_data == NULL)) {
(buf == ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
(bn_data == ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
143 BNerror(ERR_R_MALLOC_FAILURE);-
144 goto err;
never executed: goto err;
0
145 }-
146 if ((t = BN_dup(a)) == NULL)
(t = BN_dup(a)) == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
147 goto err;
never executed: goto err;
0
148-
149#define BUF_REMAIN (num+3 - (size_t)(p - buf))-
150 p = buf;-
151 lp = bn_data;-
152 if (BN_is_negative(t))
((t)->neg != 0)Description
TRUEnever evaluated
FALSEnever evaluated
0
153 *p++ = '-';
never executed: *p++ = '-';
0
154-
155 while (!BN_is_zero(t)) {
!((t)->top == 0)Description
TRUEnever evaluated
FALSEnever evaluated
0
156 if (lp - bn_data >= bn_data_num)
lp - bn_data >= bn_data_numDescription
TRUEnever evaluated
FALSEnever evaluated
0
157 goto err;
never executed: goto err;
0
158 *lp = BN_div_word(t, BN_DEC_CONV);-
159 if (*lp == (BN_ULONG)-1)
*lp == (unsigned long)-1Description
TRUEnever evaluated
FALSEnever evaluated
0
160 goto err;
never executed: goto err;
0
161 lp++;-
162 }
never executed: end of block
0
163 lp--;-
164 /* We now have a series of blocks, BN_DEC_NUM chars-
165 * in length, where the last one needs truncation.-
166 * The blocks need to be reversed in order. */-
167 snprintf(p, BUF_REMAIN, BN_DEC_FMT1, *lp);-
168 while (*p)
*pDescription
TRUEnever evaluated
FALSEnever evaluated
0
169 p++;
never executed: p++;
0
170 while (lp != bn_data) {
lp != bn_dataDescription
TRUEnever evaluated
FALSEnever evaluated
0
171 lp--;-
172 snprintf(p, BUF_REMAIN, BN_DEC_FMT2, *lp);-
173 while (*p)
*pDescription
TRUEnever evaluated
FALSEnever evaluated
0
174 p++;
never executed: p++;
0
175 }
never executed: end of block
0
176 ok = 1;-
177-
178err:
code before this statement never executed: err:
0
179 free(bn_data);-
180 BN_free(t);-
181 if (!ok && buf) {
!okDescription
TRUEnever evaluated
FALSEnever evaluated
bufDescription
TRUEnever evaluated
FALSEnever evaluated
0
182 free(buf);-
183 buf = NULL;-
184 }
never executed: end of block
0
185-
186 return (buf);
never executed: return (buf);
0
187}-
188-
189int-
190BN_hex2bn(BIGNUM **bn, const char *a)-
191{-
192 BIGNUM *ret = NULL;-
193 BN_ULONG l = 0;-
194 int neg = 0, h, m, i,j, k, c;-
195 int num;-
196-
197 if ((a == NULL) || (*a == '\0'))
(a == ((void *)0) )Description
TRUEnever evaluated
FALSEevaluated 180 times by 3 tests
Evaluated by:
  • bnaddsub
  • bntest
  • ectest
(*a == '\0')Description
TRUEnever evaluated
FALSEevaluated 180 times by 3 tests
Evaluated by:
  • bnaddsub
  • bntest
  • ectest
0-180
198 return (0);
never executed: return (0);
0
199-
200 if (*a == '-') {
*a == '-'Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • bnaddsub
FALSEevaluated 178 times by 3 tests
Evaluated by:
  • bnaddsub
  • bntest
  • ectest
2-178
201 neg = 1;-
202 a++;-
203 }
executed 2 times by 1 test: end of block
Executed by:
  • bnaddsub
2
204-
205 for (i = 0; i <= (INT_MAX / 4) && isxdigit((unsigned char)a[i]); i++)
i <= (0x7fffffff / 4)Description
TRUEevaluated 10762 times by 3 tests
Evaluated by:
  • bnaddsub
  • bntest
  • ectest
FALSEnever evaluated
((*__ctype_b_l...nt) _ISxdigit)Description
TRUEevaluated 10582 times by 3 tests
Evaluated by:
  • bnaddsub
  • bntest
  • ectest
FALSEevaluated 180 times by 3 tests
Evaluated by:
  • bnaddsub
  • bntest
  • ectest
0-10762
206 ;
executed 10582 times by 3 tests: ;
Executed by:
  • bnaddsub
  • bntest
  • ectest
10582
207 if (i > INT_MAX / 4)
i > 0x7fffffff / 4Description
TRUEnever evaluated
FALSEevaluated 180 times by 3 tests
Evaluated by:
  • bnaddsub
  • bntest
  • ectest
0-180
208 goto err;
never executed: goto err;
0
209-
210 num = i + neg;-
211 if (bn == NULL)
bn == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 180 times by 3 tests
Evaluated by:
  • bnaddsub
  • bntest
  • ectest
0-180
212 return (num);
never executed: return (num);
0
213-
214 /* a is the start of the hex digits, and it is 'i' long */-
215 if (*bn == NULL) {
*bn == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 180 times by 3 tests
Evaluated by:
  • bnaddsub
  • bntest
  • ectest
0-180
216 if ((ret = BN_new()) == NULL)
(ret = BN_new(...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
217 return (0);
never executed: return (0);
0
218 } else {
never executed: end of block
0
219 ret= *bn;-
220 BN_zero(ret);-
221 }
executed 180 times by 3 tests: end of block
Executed by:
  • bnaddsub
  • bntest
  • ectest
180
222-
223 /* i is the number of hex digits */-
224 if (bn_expand(ret, i * 4) == NULL)
bn_expand(ret,...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 180 times by 3 tests
Evaluated by:
  • bnaddsub
  • bntest
  • ectest
0-180
225 goto err;
never executed: goto err;
0
226-
227 j = i; /* least significant 'hex' */-
228 m = 0;-
229 h = 0;-
230 while (j > 0) {
j > 0Description
TRUEevaluated 753 times by 3 tests
Evaluated by:
  • bnaddsub
  • bntest
  • ectest
FALSEevaluated 180 times by 3 tests
Evaluated by:
  • bnaddsub
  • bntest
  • ectest
180-753
231 m = ((BN_BYTES*2) <= j) ? (BN_BYTES * 2) : j;
((8*2) <= j)Description
TRUEevaluated 620 times by 3 tests
Evaluated by:
  • bnaddsub
  • bntest
  • ectest
FALSEevaluated 133 times by 2 tests
Evaluated by:
  • bnaddsub
  • ectest
133-620
232 l = 0;-
233 for (;;) {-
234 c = a[j - m];-
235 if ((c >= '0') && (c <= '9'))
(c >= '0')Description
TRUEevaluated 10582 times by 3 tests
Evaluated by:
  • bnaddsub
  • bntest
  • ectest
FALSEnever evaluated
(c <= '9')Description
TRUEevaluated 6408 times by 3 tests
Evaluated by:
  • bnaddsub
  • bntest
  • ectest
FALSEevaluated 4174 times by 3 tests
Evaluated by:
  • bnaddsub
  • bntest
  • ectest
0-10582
236 k = c - '0';
executed 6408 times by 3 tests: k = c - '0';
Executed by:
  • bnaddsub
  • bntest
  • ectest
6408
237 else if ((c >= 'a') && (c <= 'f'))
(c >= 'a')Description
TRUEevaluated 18 times by 1 test
Evaluated by:
  • ectest
FALSEevaluated 4156 times by 3 tests
Evaluated by:
  • bnaddsub
  • bntest
  • ectest
(c <= 'f')Description
TRUEevaluated 18 times by 1 test
Evaluated by:
  • ectest
FALSEnever evaluated
0-4156
238 k = c - 'a' + 10;
executed 18 times by 1 test: k = c - 'a' + 10;
Executed by:
  • ectest
18
239 else if ((c >= 'A') && (c <= 'F'))
(c >= 'A')Description
TRUEevaluated 4156 times by 3 tests
Evaluated by:
  • bnaddsub
  • bntest
  • ectest
FALSEnever evaluated
(c <= 'F')Description
TRUEevaluated 4156 times by 3 tests
Evaluated by:
  • bnaddsub
  • bntest
  • ectest
FALSEnever evaluated
0-4156
240 k = c - 'A' + 10;
executed 4156 times by 3 tests: k = c - 'A' + 10;
Executed by:
  • bnaddsub
  • bntest
  • ectest
4156
241 else-
242 k = 0; /* paranoia */
never executed: k = 0;
0
243 l = (l << 4) | k;-
244-
245 if (--m <= 0) {
--m <= 0Description
TRUEevaluated 753 times by 3 tests
Evaluated by:
  • bnaddsub
  • bntest
  • ectest
FALSEevaluated 9829 times by 3 tests
Evaluated by:
  • bnaddsub
  • bntest
  • ectest
753-9829
246 ret->d[h++] = l;-
247 break;
executed 753 times by 3 tests: break;
Executed by:
  • bnaddsub
  • bntest
  • ectest
753
248 }-
249 }
executed 9829 times by 3 tests: end of block
Executed by:
  • bnaddsub
  • bntest
  • ectest
9829
250 j -= (BN_BYTES * 2);-
251 }
executed 753 times by 3 tests: end of block
Executed by:
  • bnaddsub
  • bntest
  • ectest
753
252 ret->top = h;-
253 bn_correct_top(ret);
executed 174 times by 3 tests: break;
Executed by:
  • bnaddsub
  • bntest
  • ectest
executed 180 times by 3 tests: end of block
Executed by:
  • bnaddsub
  • bntest
  • ectest
tmp_top > 0Description
TRUEevaluated 180 times by 3 tests
Evaluated by:
  • bnaddsub
  • bntest
  • ectest
FALSEnever evaluated
*(ftl--)Description
TRUEevaluated 174 times by 3 tests
Evaluated by:
  • bnaddsub
  • bntest
  • ectest
FALSEevaluated 27 times by 2 tests
Evaluated by:
  • bnaddsub
  • ectest
tmp_top > 0Description
TRUEevaluated 201 times by 3 tests
Evaluated by:
  • bnaddsub
  • bntest
  • ectest
FALSEevaluated 6 times by 2 tests
Evaluated by:
  • bnaddsub
  • ectest
0-201
254 ret->neg = neg;-
255-
256 *bn = ret;-
257 bn_check_top(ret);-
258 return (num);
executed 180 times by 3 tests: return (num);
Executed by:
  • bnaddsub
  • bntest
  • ectest
180
259-
260err:-
261 if (*bn == NULL)
*bn == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
262 BN_free(ret);
never executed: BN_free(ret);
0
263 return (0);
never executed: return (0);
0
264}-
265-
266int-
267BN_dec2bn(BIGNUM **bn, const char *a)-
268{-
269 BIGNUM *ret = NULL;-
270 BN_ULONG l = 0;-
271 int neg = 0, i, j;-
272 int num;-
273-
274 if ((a == NULL) || (*a == '\0'))
(a == ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
(*a == '\0')Description
TRUEnever evaluated
FALSEnever evaluated
0
275 return (0);
never executed: return (0);
0
276 if (*a == '-') {
*a == '-'Description
TRUEnever evaluated
FALSEnever evaluated
0
277 neg = 1;-
278 a++;-
279 }
never executed: end of block
0
280-
281 for (i = 0; i <= (INT_MAX / 4) && isdigit((unsigned char)a[i]); i++)
i <= (0x7fffffff / 4)Description
TRUEnever evaluated
FALSEnever evaluated
((*__ctype_b_l...int) _ISdigit)Description
TRUEnever evaluated
FALSEnever evaluated
0
282 ;
never executed: ;
0
283 if (i > INT_MAX / 4)
i > 0x7fffffff / 4Description
TRUEnever evaluated
FALSEnever evaluated
0
284 goto err;
never executed: goto err;
0
285-
286 num = i + neg;-
287 if (bn == NULL)
bn == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
288 return (num);
never executed: return (num);
0
289-
290 /* a is the start of the digits, and it is 'i' long.-
291 * We chop it into BN_DEC_NUM digits at a time */-
292 if (*bn == NULL) {
*bn == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
293 if ((ret = BN_new()) == NULL)
(ret = BN_new(...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
294 return (0);
never executed: return (0);
0
295 } else {
never executed: end of block
0
296 ret = *bn;-
297 BN_zero(ret);-
298 }
never executed: end of block
0
299-
300 /* i is the number of digits, a bit of an over expand */-
301 if (bn_expand(ret, i * 4) == NULL)
bn_expand(ret,...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
302 goto err;
never executed: goto err;
0
303-
304 j = BN_DEC_NUM - (i % BN_DEC_NUM);-
305 if (j == BN_DEC_NUM)
j == 19Description
TRUEnever evaluated
FALSEnever evaluated
0
306 j = 0;
never executed: j = 0;
0
307 l = 0;-
308 while (*a) {
*aDescription
TRUEnever evaluated
FALSEnever evaluated
0
309 l *= 10;-
310 l += *a - '0';-
311 a++;-
312 if (++j == BN_DEC_NUM) {
++j == 19Description
TRUEnever evaluated
FALSEnever evaluated
0
313 BN_mul_word(ret, BN_DEC_CONV);-
314 BN_add_word(ret, l);-
315 l = 0;-
316 j = 0;-
317 }
never executed: end of block
0
318 }
never executed: end of block
0
319 ret->neg = neg;-
320-
321 bn_correct_top(ret);
never executed: break;
never executed: end of block
tmp_top > 0Description
TRUEnever evaluated
FALSEnever evaluated
*(ftl--)Description
TRUEnever evaluated
FALSEnever evaluated
tmp_top > 0Description
TRUEnever evaluated
FALSEnever evaluated
0
322 *bn = ret;-
323 bn_check_top(ret);-
324 return (num);
never executed: return (num);
0
325-
326err:-
327 if (*bn == NULL)
*bn == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
328 BN_free(ret);
never executed: BN_free(ret);
0
329 return (0);
never executed: return (0);
0
330}-
331-
332int-
333BN_asc2bn(BIGNUM **bn, const char *a)-
334{-
335 const char *p = a;-
336 if (*p == '-')
*p == '-'Description
TRUEnever evaluated
FALSEnever evaluated
0
337 p++;
never executed: p++;
0
338-
339 if (p[0] == '0' && (p[1] == 'X' || p[1] == 'x')) {
p[0] == '0'Description
TRUEnever evaluated
FALSEnever evaluated
p[1] == 'X'Description
TRUEnever evaluated
FALSEnever evaluated
p[1] == 'x'Description
TRUEnever evaluated
FALSEnever evaluated
0
340 if (!BN_hex2bn(bn, p + 2))
!BN_hex2bn(bn, p + 2)Description
TRUEnever evaluated
FALSEnever evaluated
0
341 return 0;
never executed: return 0;
0
342 } else {
never executed: end of block
0
343 if (!BN_dec2bn(bn, p))
!BN_dec2bn(bn, p)Description
TRUEnever evaluated
FALSEnever evaluated
0
344 return 0;
never executed: return 0;
0
345 }
never executed: end of block
0
346 if (*a == '-')
*a == '-'Description
TRUEnever evaluated
FALSEnever evaluated
0
347 (*bn)->neg = 1;
never executed: (*bn)->neg = 1;
0
348 return 1;
never executed: return 1;
0
349}-
350-
351#ifndef OPENSSL_NO_BIO-
352int-
353BN_print_fp(FILE *fp, const BIGNUM *a)-
354{-
355 BIO *b;-
356 int ret;-
357-
358 if ((b = BIO_new(BIO_s_file())) == NULL)
(b = BIO_new(B...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 67 times by 1 test
Evaluated by:
  • ectest
0-67
359 return (0);
never executed: return (0);
0
360 BIO_set_fp(b, fp, BIO_NOCLOSE);-
361 ret = BN_print(b, a);-
362 BIO_free(b);-
363 return (ret);
executed 67 times by 1 test: return (ret);
Executed by:
  • ectest
67
364}-
365-
366int-
367BN_print(BIO *bp, const BIGNUM *a)-
368{-
369 int i, j, v, z = 0;-
370 int ret = 0;-
371-
372 if ((a->neg) && (BIO_write(bp, "-", 1) != 1))
(a->neg)Description
TRUEevaluated 2198 times by 1 test
Evaluated by:
  • bntest
FALSEevaluated 4544 times by 3 tests
Evaluated by:
  • bntest
  • dhtest
  • ectest
(BIO_write(bp, "-", 1) != 1)Description
TRUEnever evaluated
FALSEevaluated 2198 times by 1 test
Evaluated by:
  • bntest
0-4544
373 goto end;
never executed: goto end;
0
374 if (BN_is_zero(a) && (BIO_write(bp, "0", 1) != 1))
((a)->top == 0)Description
TRUEevaluated 4 times by 2 tests
Evaluated by:
  • bntest
  • ectest
FALSEevaluated 6738 times by 3 tests
Evaluated by:
  • bntest
  • dhtest
  • ectest
(BIO_write(bp, "0", 1) != 1)Description
TRUEnever evaluated
FALSEevaluated 4 times by 2 tests
Evaluated by:
  • bntest
  • ectest
0-6738
375 goto end;
never executed: goto end;
0
376 for (i = a->top - 1; i >= 0; i--) {
i >= 0Description
TRUEevaluated 52280 times by 3 tests
Evaluated by:
  • bntest
  • dhtest
  • ectest
FALSEevaluated 6742 times by 3 tests
Evaluated by:
  • bntest
  • dhtest
  • ectest
6742-52280
377 for (j = BN_BITS2 - 4; j >= 0; j -= 4) {
j >= 0Description
TRUEevaluated 836480 times by 3 tests
Evaluated by:
  • bntest
  • dhtest
  • ectest
FALSEevaluated 52280 times by 3 tests
Evaluated by:
  • bntest
  • dhtest
  • ectest
52280-836480
378 /* strip leading zeros */-
379 v = ((int)(a->d[i] >> (long)j)) & 0x0f;-
380 if (z || (v != 0)) {
zDescription
TRUEevaluated 782808 times by 3 tests
Evaluated by:
  • bntest
  • dhtest
  • ectest
FALSEevaluated 53672 times by 3 tests
Evaluated by:
  • bntest
  • dhtest
  • ectest
(v != 0)Description
TRUEevaluated 6738 times by 3 tests
Evaluated by:
  • bntest
  • dhtest
  • ectest
FALSEevaluated 46934 times by 3 tests
Evaluated by:
  • bntest
  • dhtest
  • ectest
6738-782808
381 if (BIO_write(bp, &(Hex[v]), 1) != 1)
BIO_write(bp, ...x[v]), 1) != 1Description
TRUEnever evaluated
FALSEevaluated 789546 times by 3 tests
Evaluated by:
  • bntest
  • dhtest
  • ectest
0-789546
382 goto end;
never executed: goto end;
0
383 z = 1;-
384 }
executed 789546 times by 3 tests: end of block
Executed by:
  • bntest
  • dhtest
  • ectest
789546
385 }
executed 836480 times by 3 tests: end of block
Executed by:
  • bntest
  • dhtest
  • ectest
836480
386 }
executed 52280 times by 3 tests: end of block
Executed by:
  • bntest
  • dhtest
  • ectest
52280
387 ret = 1;-
388-
389end:
code before this statement executed 6742 times by 3 tests: end:
Executed by:
  • bntest
  • dhtest
  • ectest
6742
390 return (ret);
executed 6742 times by 3 tests: return (ret);
Executed by:
  • bntest
  • dhtest
  • ectest
6742
391}-
392#endif-
393-
394char *-
395BN_options(void)-
396{-
397 static int init = 0;-
398 static char data[16];-
399-
400 if (!init) {
!initDescription
TRUEnever evaluated
FALSEnever evaluated
0
401 init++;-
402#ifdef BN_LLONG-
403 snprintf(data,sizeof data, "bn(%d,%d)",-
404 (int)sizeof(BN_ULLONG) * 8, (int)sizeof(BN_ULONG) * 8);-
405#else-
406 snprintf(data,sizeof data, "bn(%d,%d)",-
407 (int)sizeof(BN_ULONG) * 8, (int)sizeof(BN_ULONG) * 8);-
408#endif-
409 }
never executed: end of block
0
410 return (data);
never executed: return (data);
0
411}-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.2.2