OpenCoverage

dsa_gen.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/libressl/src/crypto/dsa/dsa_gen.c
Source codeSwitch to Preprocessed file
LineSourceCount
1/* $OpenBSD: dsa_gen.c,v 1.24 2017/01/21 10:38:29 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 <openssl/opensslconf.h> /* To see if OPENSSL_NO_SHA is defined */-
60-
61#ifndef OPENSSL_NO_SHA-
62-
63#include <stdio.h>-
64#include <stdlib.h>-
65#include <string.h>-
66-
67#include <openssl/bn.h>-
68#include <openssl/evp.h>-
69#include <openssl/sha.h>-
70-
71#include "bn_lcl.h"-
72#include "dsa_locl.h"-
73-
74int-
75DSA_generate_parameters_ex(DSA *ret, int bits, const unsigned char *seed_in,-
76 int seed_len, int *counter_ret, unsigned long *h_ret, BN_GENCB *cb)-
77{-
78 if (ret->meth->dsa_paramgen)
ret->meth->dsa_paramgenDescription
TRUEnever evaluated
FALSEevaluated 2 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
0-2
79 return ret->meth->dsa_paramgen(ret, bits, seed_in, seed_len,
never executed: return ret->meth->dsa_paramgen(ret, bits, seed_in, seed_len, counter_ret, h_ret, cb);
0
80 counter_ret, h_ret, cb);
never executed: return ret->meth->dsa_paramgen(ret, bits, seed_in, seed_len, counter_ret, h_ret, cb);
0
81 else {-
82 const EVP_MD *evpmd;-
83 size_t qbits;-
84-
85 if (bits >= 2048) {
bits >= 2048Description
TRUEnever evaluated
FALSEevaluated 2 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
0-2
86 qbits = 256;-
87 evpmd = EVP_sha256();-
88 } else {
never executed: end of block
0
89 qbits = 160;-
90 evpmd = EVP_sha1();-
91 }
executed 2 times by 2 tests: end of block
Executed by:
  • dsatest
  • libcrypto.so.44.0.1
2
92-
93 return dsa_builtin_paramgen(ret, bits, qbits, evpmd, seed_in,
executed 2 times by 2 tests: return dsa_builtin_paramgen(ret, bits, qbits, evpmd, seed_in, seed_len, ((void *)0) , counter_ret, h_ret, cb);
Executed by:
  • dsatest
  • libcrypto.so.44.0.1
2
94 seed_len, NULL, counter_ret, h_ret, cb);
executed 2 times by 2 tests: return dsa_builtin_paramgen(ret, bits, qbits, evpmd, seed_in, seed_len, ((void *)0) , counter_ret, h_ret, cb);
Executed by:
  • dsatest
  • libcrypto.so.44.0.1
2
95 }-
96}-
97-
98int-
99dsa_builtin_paramgen(DSA *ret, size_t bits, size_t qbits, const EVP_MD *evpmd,-
100 const unsigned char *seed_in, size_t seed_len, unsigned char *seed_out,-
101 int *counter_ret, unsigned long *h_ret, BN_GENCB *cb)-
102{-
103 int ok = 0;-
104 unsigned char seed[SHA256_DIGEST_LENGTH];-
105 unsigned char md[SHA256_DIGEST_LENGTH];-
106 unsigned char buf[SHA256_DIGEST_LENGTH], buf2[SHA256_DIGEST_LENGTH];-
107 BIGNUM *r0, *W, *X, *c, *test;-
108 BIGNUM *g = NULL, *q = NULL, *p = NULL;-
109 BN_MONT_CTX *mont = NULL;-
110 int i, k, n = 0, m = 0, qsize = qbits >> 3;-
111 int counter = 0;-
112 int r = 0;-
113 BN_CTX *ctx = NULL;-
114 unsigned int h = 2;-
115-
116 if (qsize != SHA_DIGEST_LENGTH && qsize != SHA224_DIGEST_LENGTH &&
qsize != 20Description
TRUEnever evaluated
FALSEevaluated 2 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
qsize != 28Description
TRUEnever evaluated
FALSEnever evaluated
0-2
117 qsize != SHA256_DIGEST_LENGTH)
qsize != 32Description
TRUEnever evaluated
FALSEnever evaluated
0
118 /* invalid q size */-
119 return 0;
never executed: return 0;
0
120-
121 if (evpmd == NULL)
evpmd == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 2 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
0-2
122 /* use SHA1 as default */-
123 evpmd = EVP_sha1();
never executed: evpmd = EVP_sha1();
0
124-
125 if (bits < 512)
bits < 512Description
TRUEnever evaluated
FALSEevaluated 2 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
0-2
126 bits = 512;
never executed: bits = 512;
0
127-
128 bits = (bits + 63) / 64 * 64;-
129-
130 if (seed_len < (size_t)qsize) {
seed_len < (size_t)qsizeDescription
TRUEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
FALSEevaluated 1 time by 1 test
Evaluated by:
  • dsatest
1
131 seed_in = NULL; /* seed buffer too small -- ignore */-
132 seed_len = 0;-
133 }
executed 1 time by 1 test: end of block
Executed by:
  • libcrypto.so.44.0.1
1
134 /*-
135 * App. 2.2 of FIPS PUB 186 allows larger SEED,-
136 * but our internal buffers are restricted to 160 bits-
137 */-
138 if (seed_len > (size_t)qsize)
seed_len > (size_t)qsizeDescription
TRUEnever evaluated
FALSEevaluated 2 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
0-2
139 seed_len = qsize;
never executed: seed_len = qsize;
0
140 if (seed_in != NULL)
seed_in != ((void *)0)Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • dsatest
FALSEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
1
141 memcpy(seed, seed_in, seed_len);
executed 1 time by 1 test: memcpy(seed, seed_in, seed_len);
Executed by:
  • dsatest
1
142 else if (seed_len != 0)
seed_len != 0Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
0-1
143 goto err;
never executed: goto err;
0
144-
145 if ((mont=BN_MONT_CTX_new()) == NULL)
(mont=BN_MONT_...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 2 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
0-2
146 goto err;
never executed: goto err;
0
147-
148 if ((ctx=BN_CTX_new()) == NULL)
(ctx=BN_CTX_ne...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 2 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
0-2
149 goto err;
never executed: goto err;
0
150 BN_CTX_start(ctx);-
151-
152 if ((r0 = BN_CTX_get(ctx)) == NULL)
(r0 = BN_CTX_g...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 2 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
0-2
153 goto err;
never executed: goto err;
0
154 if ((g = BN_CTX_get(ctx)) == NULL)
(g = BN_CTX_ge...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 2 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
0-2
155 goto err;
never executed: goto err;
0
156 if ((W = BN_CTX_get(ctx)) == NULL)
(W = BN_CTX_ge...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 2 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
0-2
157 goto err;
never executed: goto err;
0
158 if ((q = BN_CTX_get(ctx)) == NULL)
(q = BN_CTX_ge...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 2 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
0-2
159 goto err;
never executed: goto err;
0
160 if ((X = BN_CTX_get(ctx)) == NULL)
(X = BN_CTX_ge...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 2 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
0-2
161 goto err;
never executed: goto err;
0
162 if ((c = BN_CTX_get(ctx)) == NULL)
(c = BN_CTX_ge...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 2 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
0-2
163 goto err;
never executed: goto err;
0
164 if ((p = BN_CTX_get(ctx)) == NULL)
(p = BN_CTX_ge...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 2 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
0-2
165 goto err;
never executed: goto err;
0
166 if ((test = BN_CTX_get(ctx)) == NULL)
(test = BN_CTX...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 2 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
0-2
167 goto err;
never executed: goto err;
0
168-
169 if (!BN_lshift(test, BN_value_one(), bits - 1))
!BN_lshift(tes...e(), bits - 1)Description
TRUEnever evaluated
FALSEevaluated 2 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
0-2
170 goto err;
never executed: goto err;
0
171-
172 for (;;) {-
173 for (;;) { /* find q */-
174 int seed_is_random;-
175-
176 /* step 1 */-
177 if (!BN_GENCB_call(cb, 0, m++))
!BN_GENCB_call(cb, 0, m++)Description
TRUEnever evaluated
FALSEevaluated 295 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
0-295
178 goto err;
never executed: goto err;
0
179-
180 if (seed_len == 0) {
seed_len == 0Description
TRUEevaluated 294 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
FALSEevaluated 1 time by 1 test
Evaluated by:
  • dsatest
1-294
181 arc4random_buf(seed, qsize);-
182 seed_is_random = 1;-
183 } else {
executed 294 times by 1 test: end of block
Executed by:
  • libcrypto.so.44.0.1
294
184 seed_is_random = 0;-
185 /* use random seed if 'seed_in' turns out-
186 to be bad */-
187 seed_len = 0;-
188 }
executed 1 time by 1 test: end of block
Executed by:
  • dsatest
1
189 memcpy(buf, seed, qsize);-
190 memcpy(buf2, seed, qsize);-
191 /* precompute "SEED + 1" for step 7: */-
192 for (i = qsize - 1; i >= 0; i--) {
i >= 0Description
TRUEevaluated 295 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
FALSEnever evaluated
0-295
193 buf[i]++;-
194 if (buf[i] != 0)
buf[i] != 0Description
TRUEevaluated 295 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
FALSEnever evaluated
0-295
195 break;
executed 295 times by 2 tests: break;
Executed by:
  • dsatest
  • libcrypto.so.44.0.1
295
196 }
never executed: end of block
0
197-
198 /* step 2 */-
199 if (!EVP_Digest(seed, qsize, md, NULL, evpmd, NULL))
!EVP_Digest(se... ((void *)0) )Description
TRUEnever evaluated
FALSEevaluated 295 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
0-295
200 goto err;
never executed: goto err;
0
201 if (!EVP_Digest(buf, qsize, buf2, NULL, evpmd, NULL))
!EVP_Digest(bu... ((void *)0) )Description
TRUEnever evaluated
FALSEevaluated 295 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
0-295
202 goto err;
never executed: goto err;
0
203 for (i = 0; i < qsize; i++)
i < qsizeDescription
TRUEevaluated 5900 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
FALSEevaluated 295 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
295-5900
204 md[i] ^= buf2[i];
executed 5900 times by 2 tests: md[i] ^= buf2[i];
Executed by:
  • dsatest
  • libcrypto.so.44.0.1
5900
205-
206 /* step 3 */-
207 md[0] |= 0x80;-
208 md[qsize - 1] |= 0x01;-
209 if (!BN_bin2bn(md, qsize, q))
!BN_bin2bn(md, qsize, q)Description
TRUEnever evaluated
FALSEevaluated 295 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
0-295
210 goto err;
never executed: goto err;
0
211-
212 /* step 4 */-
213 r = BN_is_prime_fasttest_ex(q, DSS_prime_checks, ctx,-
214 seed_is_random, cb);-
215 if (r > 0)
r > 0Description
TRUEevaluated 2 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
FALSEevaluated 293 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
2-293
216 break;
executed 2 times by 2 tests: break;
Executed by:
  • dsatest
  • libcrypto.so.44.0.1
2
217 if (r != 0)
r != 0Description
TRUEnever evaluated
FALSEevaluated 293 times by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
0-293
218 goto err;
never executed: goto err;
0
219-
220 /* do a callback call */-
221 /* step 5 */-
222 }
executed 293 times by 1 test: end of block
Executed by:
  • libcrypto.so.44.0.1
293
223-
224 if (!BN_GENCB_call(cb, 2, 0))
!BN_GENCB_call(cb, 2, 0)Description
TRUEnever evaluated
FALSEevaluated 2 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
0-2
225 goto err;
never executed: goto err;
0
226 if (!BN_GENCB_call(cb, 3, 0))
!BN_GENCB_call(cb, 3, 0)Description
TRUEnever evaluated
FALSEevaluated 2 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
0-2
227 goto err;
never executed: goto err;
0
228-
229 /* step 6 */-
230 counter = 0;-
231 /* "offset = 2" */-
232-
233 n = (bits - 1) / 160;-
234-
235 for (;;) {-
236 if (counter != 0 && !BN_GENCB_call(cb, 0, counter))
counter != 0Description
TRUEevaluated 152 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
FALSEevaluated 2 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
!BN_GENCB_call(cb, 0, counter)Description
TRUEnever evaluated
FALSEevaluated 152 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
0-152
237 goto err;
never executed: goto err;
0
238-
239 /* step 7 */-
240 BN_zero(W);-
241 /* now 'buf' contains "SEED + offset - 1" */-
242 for (k = 0; k <= n; k++) {
k <= nDescription
TRUEevaluated 616 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
FALSEevaluated 154 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
154-616
243 /* obtain "SEED + offset + k" by incrementing: */-
244 for (i = qsize - 1; i >= 0; i--) {
i >= 0Description
TRUEevaluated 618 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
FALSEnever evaluated
0-618
245 buf[i]++;-
246 if (buf[i] != 0)
buf[i] != 0Description
TRUEevaluated 616 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
FALSEevaluated 2 times by 1 test
Evaluated by:
  • dsatest
2-616
247 break;
executed 616 times by 2 tests: break;
Executed by:
  • dsatest
  • libcrypto.so.44.0.1
616
248 }
executed 2 times by 1 test: end of block
Executed by:
  • dsatest
2
249-
250 if (!EVP_Digest(buf, qsize, md ,NULL, evpmd,
!EVP_Digest(bu... ((void *)0) )Description
TRUEnever evaluated
FALSEevaluated 616 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
0-616
251 NULL))
!EVP_Digest(bu... ((void *)0) )Description
TRUEnever evaluated
FALSEevaluated 616 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
0-616
252 goto err;
never executed: goto err;
0
253-
254 /* step 8 */-
255 if (!BN_bin2bn(md, qsize, r0))
!BN_bin2bn(md, qsize, r0)Description
TRUEnever evaluated
FALSEevaluated 616 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
0-616
256 goto err;
never executed: goto err;
0
257 if (!BN_lshift(r0, r0, (qsize << 3) * k))
!BN_lshift(r0,...ize << 3) * k)Description
TRUEnever evaluated
FALSEevaluated 616 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
0-616
258 goto err;
never executed: goto err;
0
259 if (!BN_add(W, W, r0))
!BN_add(W, W, r0)Description
TRUEnever evaluated
FALSEevaluated 616 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
0-616
260 goto err;
never executed: goto err;
0
261 }
executed 616 times by 2 tests: end of block
Executed by:
  • dsatest
  • libcrypto.so.44.0.1
616
262-
263 /* more of step 8 */-
264 if (!BN_mask_bits(W, bits - 1))
!BN_mask_bits(W, bits - 1)Description
TRUEnever evaluated
FALSEevaluated 154 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
0-154
265 goto err;
never executed: goto err;
0
266 if (!BN_copy(X, W))
!BN_copy(X, W)Description
TRUEnever evaluated
FALSEevaluated 154 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
0-154
267 goto err;
never executed: goto err;
0
268 if (!BN_add(X, X, test))
!BN_add(X, X, test)Description
TRUEnever evaluated
FALSEevaluated 154 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
0-154
269 goto err;
never executed: goto err;
0
270-
271 /* step 9 */-
272 if (!BN_lshift1(r0, q))
!BN_lshift1(r0, q)Description
TRUEnever evaluated
FALSEevaluated 154 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
0-154
273 goto err;
never executed: goto err;
0
274 if (!BN_mod_ct(c, X, r0, ctx))
!BN_div_ct( ((...X),(r0),(ctx))Description
TRUEnever evaluated
FALSEevaluated 154 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
0-154
275 goto err;
never executed: goto err;
0
276 if (!BN_sub(r0, c, BN_value_one()))
!BN_sub(r0, c, BN_value_one())Description
TRUEnever evaluated
FALSEevaluated 154 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
0-154
277 goto err;
never executed: goto err;
0
278 if (!BN_sub(p, X, r0))
!BN_sub(p, X, r0)Description
TRUEnever evaluated
FALSEevaluated 154 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
0-154
279 goto err;
never executed: goto err;
0
280-
281 /* step 10 */-
282 if (BN_cmp(p, test) >= 0) {
BN_cmp(p, test) >= 0Description
TRUEevaluated 154 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
FALSEnever evaluated
0-154
283 /* step 11 */-
284 r = BN_is_prime_fasttest_ex(p, DSS_prime_checks,-
285 ctx, 1, cb);-
286 if (r > 0)
r > 0Description
TRUEevaluated 2 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
FALSEevaluated 152 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
2-152
287 goto end; /* found it */
executed 2 times by 2 tests: goto end;
Executed by:
  • dsatest
  • libcrypto.so.44.0.1
2
288 if (r != 0)
r != 0Description
TRUEnever evaluated
FALSEevaluated 152 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
0-152
289 goto err;
never executed: goto err;
0
290 }
executed 152 times by 2 tests: end of block
Executed by:
  • dsatest
  • libcrypto.so.44.0.1
152
291-
292 /* step 13 */-
293 counter++;-
294 /* "offset = offset + n + 1" */-
295-
296 /* step 14 */-
297 if (counter >= 4096)
counter >= 4096Description
TRUEnever evaluated
FALSEevaluated 152 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
0-152
298 break;
never executed: break;
0
299 }
executed 152 times by 2 tests: end of block
Executed by:
  • dsatest
  • libcrypto.so.44.0.1
152
300 }
never executed: end of block
0
301end:
code before this statement never executed: end:
0
302 if (!BN_GENCB_call(cb, 2, 1))
!BN_GENCB_call(cb, 2, 1)Description
TRUEnever evaluated
FALSEevaluated 2 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
0-2
303 goto err;
never executed: goto err;
0
304-
305 /* We now need to generate g */-
306 /* Set r0=(p-1)/q */-
307 if (!BN_sub(test, p, BN_value_one()))
!BN_sub(test, ...N_value_one())Description
TRUEnever evaluated
FALSEevaluated 2 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
0-2
308 goto err;
never executed: goto err;
0
309 if (!BN_div_ct(r0, NULL, test, q, ctx))
!BN_div_ct(r0,... test, q, ctx)Description
TRUEnever evaluated
FALSEevaluated 2 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
0-2
310 goto err;
never executed: goto err;
0
311-
312 if (!BN_set_word(test, h))
!BN_set_word(test, h)Description
TRUEnever evaluated
FALSEevaluated 2 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
0-2
313 goto err;
never executed: goto err;
0
314 if (!BN_MONT_CTX_set(mont, p, ctx))
!BN_MONT_CTX_set(mont, p, ctx)Description
TRUEnever evaluated
FALSEevaluated 2 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
0-2
315 goto err;
never executed: goto err;
0
316-
317 for (;;) {-
318 /* g=test^r0%p */-
319 if (!BN_mod_exp_mont_ct(g, test, r0, p, ctx, mont))
!BN_mod_exp_mo... p, ctx, mont)Description
TRUEnever evaluated
FALSEevaluated 2 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
0-2
320 goto err;
never executed: goto err;
0
321 if (!BN_is_one(g))
(((g))->top == 1)Description
TRUEnever evaluated
FALSEevaluated 2 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
(((g))->d[0] =...gned long)(1))Description
TRUEnever evaluated
FALSEnever evaluated
((1) == 0)Description
TRUEnever evaluated
FALSEevaluated 2 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
(((g))->top == 0)Description
TRUEnever evaluated
FALSEnever evaluated
!(g)->negDescription
TRUEnever evaluated
FALSEnever evaluated
0-2
322 break;
executed 2 times by 2 tests: break;
Executed by:
  • dsatest
  • libcrypto.so.44.0.1
2
323 if (!BN_add(test, test, BN_value_one()))
!BN_add(test, ...N_value_one())Description
TRUEnever evaluated
FALSEnever evaluated
0
324 goto err;
never executed: goto err;
0
325 h++;-
326 }
never executed: end of block
0
327-
328 if (!BN_GENCB_call(cb, 3, 1))
!BN_GENCB_call(cb, 3, 1)Description
TRUEnever evaluated
FALSEevaluated 2 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
0-2
329 goto err;
never executed: goto err;
0
330-
331 ok = 1;-
332err:
code before this statement executed 2 times by 2 tests: err:
Executed by:
  • dsatest
  • libcrypto.so.44.0.1
2
333 if (ok) {
okDescription
TRUEevaluated 2 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
FALSEnever evaluated
0-2
334 BN_free(ret->p);-
335 BN_free(ret->q);-
336 BN_free(ret->g);-
337 ret->p = BN_dup(p);-
338 ret->q = BN_dup(q);-
339 ret->g = BN_dup(g);-
340 if (ret->p == NULL || ret->q == NULL || ret->g == NULL) {
ret->p == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 2 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
ret->q == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 2 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
ret->g == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 2 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
0-2
341 ok = 0;-
342 goto err;
never executed: goto err;
0
343 }-
344 if (counter_ret != NULL)
counter_ret != ((void *)0)Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • dsatest
FALSEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
1
345 *counter_ret = counter;
executed 1 time by 1 test: *counter_ret = counter;
Executed by:
  • dsatest
1
346 if (h_ret != NULL)
h_ret != ((void *)0)Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • dsatest
FALSEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.44.0.1
1
347 *h_ret = h;
executed 1 time by 1 test: *h_ret = h;
Executed by:
  • dsatest
1
348 if (seed_out != NULL)
seed_out != ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 2 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
0-2
349 memcpy(seed_out, seed, qsize);
never executed: memcpy(seed_out, seed, qsize);
0
350 }
executed 2 times by 2 tests: end of block
Executed by:
  • dsatest
  • libcrypto.so.44.0.1
2
351 if (ctx) {
ctxDescription
TRUEevaluated 2 times by 2 tests
Evaluated by:
  • dsatest
  • libcrypto.so.44.0.1
FALSEnever evaluated
0-2
352 BN_CTX_end(ctx);-
353 BN_CTX_free(ctx);-
354 }
executed 2 times by 2 tests: end of block
Executed by:
  • dsatest
  • libcrypto.so.44.0.1
2
355 BN_MONT_CTX_free(mont);-
356 return ok;
executed 2 times by 2 tests: return ok;
Executed by:
  • dsatest
  • libcrypto.so.44.0.1
2
357}-
358#endif-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.2.2