| Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/openssl/src/crypto/dsa/dsa_gen.c |
| Switch to Source code | Preprocessed file |
| Line | Source | Count | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | - | |||||||||||||||||||
| 2 | - | |||||||||||||||||||
| 3 | int DSA_generate_parameters_ex(DSA *ret, int bits, | - | ||||||||||||||||||
| 4 | const unsigned char *seed_in, int seed_len, | - | ||||||||||||||||||
| 5 | int *counter_ret, unsigned long *h_ret, | - | ||||||||||||||||||
| 6 | BN_GENCB *cb) | - | ||||||||||||||||||
| 7 | { | - | ||||||||||||||||||
| 8 | if (ret->meth->dsa_paramgen
| 0-1 | ||||||||||||||||||
| 9 | return never executed: ret->meth->dsa_paramgen(ret, bits, seed_in, seed_len,return ret->meth->dsa_paramgen(ret, bits, seed_in, seed_len, counter_ret, h_ret, cb);never executed: return ret->meth->dsa_paramgen(ret, bits, seed_in, seed_len, counter_ret, h_ret, cb); | 0 | ||||||||||||||||||
| 10 | counter_ret, h_ret, cb); never executed: return ret->meth->dsa_paramgen(ret, bits, seed_in, seed_len, counter_ret, h_ret, cb); | 0 | ||||||||||||||||||
| 11 | else { | - | ||||||||||||||||||
| 12 | const EVP_MD *evpmd = bits >= 2048
| 0-1 | ||||||||||||||||||
| 13 | size_t qbits = EVP_MD_size(evpmd) * 8; | - | ||||||||||||||||||
| 14 | - | |||||||||||||||||||
| 15 | return executed 1 time by 1 test: dsa_builtin_paramgen(ret, bits, qbits, evpmd,return dsa_builtin_paramgen(ret, bits, qbits, evpmd, seed_in, seed_len, ((void *)0) , counter_ret, h_ret, cb);Executed by:
executed 1 time by 1 test: return dsa_builtin_paramgen(ret, bits, qbits, evpmd, seed_in, seed_len, ((void *)0) , counter_ret, h_ret, cb);Executed by:
| 1 | ||||||||||||||||||
| 16 | seed_in, seed_len, executed 1 time by 1 test: return dsa_builtin_paramgen(ret, bits, qbits, evpmd, seed_in, seed_len, ((void *)0) , counter_ret, h_ret, cb);Executed by:
| 1 | ||||||||||||||||||
| 17 | ((void *)0) executed 1 time by 1 test: return dsa_builtin_paramgen(ret, bits, qbits, evpmd, seed_in, seed_len, ((void *)0) , counter_ret, h_ret, cb);Executed by:
| 1 | ||||||||||||||||||
| 18 | , counter_ret, executed 1 time by 1 test: return dsa_builtin_paramgen(ret, bits, qbits, evpmd, seed_in, seed_len, ((void *)0) , counter_ret, h_ret, cb);Executed by:
| 1 | ||||||||||||||||||
| 19 | h_ret, cb); executed 1 time by 1 test: return dsa_builtin_paramgen(ret, bits, qbits, evpmd, seed_in, seed_len, ((void *)0) , counter_ret, h_ret, cb);Executed by:
| 1 | ||||||||||||||||||
| 20 | } | - | ||||||||||||||||||
| 21 | } | - | ||||||||||||||||||
| 22 | - | |||||||||||||||||||
| 23 | int dsa_builtin_paramgen(DSA *ret, size_t bits, size_t qbits, | - | ||||||||||||||||||
| 24 | const EVP_MD *evpmd, const unsigned char *seed_in, | - | ||||||||||||||||||
| 25 | size_t seed_len, unsigned char *seed_out, | - | ||||||||||||||||||
| 26 | int *counter_ret, unsigned long *h_ret, BN_GENCB *cb) | - | ||||||||||||||||||
| 27 | { | - | ||||||||||||||||||
| 28 | int ok = 0; | - | ||||||||||||||||||
| 29 | unsigned char seed[32]; | - | ||||||||||||||||||
| 30 | unsigned char md[32]; | - | ||||||||||||||||||
| 31 | unsigned char buf[32], buf2[32]; | - | ||||||||||||||||||
| 32 | BIGNUM *r0, *W, *X, *c, *test; | - | ||||||||||||||||||
| 33 | BIGNUM *g = | - | ||||||||||||||||||
| 34 | ((void *)0) | - | ||||||||||||||||||
| 35 | , *q = | - | ||||||||||||||||||
| 36 | ((void *)0) | - | ||||||||||||||||||
| 37 | , *p = | - | ||||||||||||||||||
| 38 | ((void *)0) | - | ||||||||||||||||||
| 39 | ; | - | ||||||||||||||||||
| 40 | BN_MONT_CTX *mont = | - | ||||||||||||||||||
| 41 | ((void *)0) | - | ||||||||||||||||||
| 42 | ; | - | ||||||||||||||||||
| 43 | int i, k, n = 0, m = 0, qsize = qbits >> 3; | - | ||||||||||||||||||
| 44 | int counter = 0; | - | ||||||||||||||||||
| 45 | int r = 0; | - | ||||||||||||||||||
| 46 | BN_CTX *ctx = | - | ||||||||||||||||||
| 47 | ((void *)0) | - | ||||||||||||||||||
| 48 | ; | - | ||||||||||||||||||
| 49 | unsigned int h = 2; | - | ||||||||||||||||||
| 50 | - | |||||||||||||||||||
| 51 | if (qsize != 20
| 0-1 | ||||||||||||||||||
| 52 | qsize != 32
| 0 | ||||||||||||||||||
| 53 | - | |||||||||||||||||||
| 54 | return never executed: 0;return 0;never executed: return 0; | 0 | ||||||||||||||||||
| 55 | - | |||||||||||||||||||
| 56 | if (evpmd ==
| 0-1 | ||||||||||||||||||
| 57 | ((void *)0)
| 0-1 | ||||||||||||||||||
| 58 | ) { | - | ||||||||||||||||||
| 59 | if (qsize == 20
| 0 | ||||||||||||||||||
| 60 | evpmd = EVP_sha1(); never executed: evpmd = EVP_sha1(); | 0 | ||||||||||||||||||
| 61 | else if (qsize == 28
| 0 | ||||||||||||||||||
| 62 | evpmd = EVP_sha224(); never executed: evpmd = EVP_sha224(); | 0 | ||||||||||||||||||
| 63 | else | - | ||||||||||||||||||
| 64 | evpmd = EVP_sha256(); never executed: evpmd = EVP_sha256(); | 0 | ||||||||||||||||||
| 65 | } else { | - | ||||||||||||||||||
| 66 | qsize = EVP_MD_size(evpmd); | - | ||||||||||||||||||
| 67 | } executed 1 time by 1 test: end of blockExecuted by:
| 1 | ||||||||||||||||||
| 68 | - | |||||||||||||||||||
| 69 | if (bits < 512
| 0-1 | ||||||||||||||||||
| 70 | bits = 512; never executed: bits = 512; | 0 | ||||||||||||||||||
| 71 | - | |||||||||||||||||||
| 72 | bits = (bits + 63) / 64 * 64; | - | ||||||||||||||||||
| 73 | - | |||||||||||||||||||
| 74 | if (seed_in !=
| 0-1 | ||||||||||||||||||
| 75 | ((void *)0)
| 0-1 | ||||||||||||||||||
| 76 | ) { | - | ||||||||||||||||||
| 77 | if (seed_len < (size_t)qsize
| 0-1 | ||||||||||||||||||
| 78 | ERR_put_error(10,(125),(110),__FILE__,85); | - | ||||||||||||||||||
| 79 | return never executed: 0;return 0;never executed: return 0; | 0 | ||||||||||||||||||
| 80 | } | - | ||||||||||||||||||
| 81 | if (seed_len > (size_t)qsize
| 0-1 | ||||||||||||||||||
| 82 | - | |||||||||||||||||||
| 83 | seed_len = qsize; | - | ||||||||||||||||||
| 84 | } never executed: end of block | 0 | ||||||||||||||||||
| 85 | memcpy(seed, seed_in, seed_len); | - | ||||||||||||||||||
| 86 | } executed 1 time by 1 test: end of blockExecuted by:
| 1 | ||||||||||||||||||
| 87 | - | |||||||||||||||||||
| 88 | if ((
| 0-1 | ||||||||||||||||||
| 89 | ((void *)0)
| 0-1 | ||||||||||||||||||
| 90 | ) | - | ||||||||||||||||||
| 91 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 92 | - | |||||||||||||||||||
| 93 | if ((
| 0-1 | ||||||||||||||||||
| 94 | ((void *)0)
| 0-1 | ||||||||||||||||||
| 95 | ) | - | ||||||||||||||||||
| 96 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 97 | - | |||||||||||||||||||
| 98 | BN_CTX_start(ctx); | - | ||||||||||||||||||
| 99 | - | |||||||||||||||||||
| 100 | r0 = BN_CTX_get(ctx); | - | ||||||||||||||||||
| 101 | g = BN_CTX_get(ctx); | - | ||||||||||||||||||
| 102 | W = BN_CTX_get(ctx); | - | ||||||||||||||||||
| 103 | q = BN_CTX_get(ctx); | - | ||||||||||||||||||
| 104 | X = BN_CTX_get(ctx); | - | ||||||||||||||||||
| 105 | c = BN_CTX_get(ctx); | - | ||||||||||||||||||
| 106 | p = BN_CTX_get(ctx); | - | ||||||||||||||||||
| 107 | test = BN_CTX_get(ctx); | - | ||||||||||||||||||
| 108 | - | |||||||||||||||||||
| 109 | if (test ==
| 0-1 | ||||||||||||||||||
| 110 | ((void *)0)
| 0-1 | ||||||||||||||||||
| 111 | ) | - | ||||||||||||||||||
| 112 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 113 | - | |||||||||||||||||||
| 114 | if (!BN_lshift(test, BN_value_one(), bits - 1)
| 0-1 | ||||||||||||||||||
| 115 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 116 | - | |||||||||||||||||||
| 117 | for (;;) { | - | ||||||||||||||||||
| 118 | for (;;) { | - | ||||||||||||||||||
| 119 | int use_random_seed = (seed_in == | - | ||||||||||||||||||
| 120 | ((void *)0) | - | ||||||||||||||||||
| 121 | ); | - | ||||||||||||||||||
| 122 | - | |||||||||||||||||||
| 123 | - | |||||||||||||||||||
| 124 | if (!BN_GENCB_call(cb, 0, m++)
| 0-1 | ||||||||||||||||||
| 125 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 126 | - | |||||||||||||||||||
| 127 | if (use_random_seed
| 0-1 | ||||||||||||||||||
| 128 | if (RAND_bytes(seed, qsize) <= 0
| 0 | ||||||||||||||||||
| 129 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 130 | } never executed: else {end of block | 0 | ||||||||||||||||||
| 131 | - | |||||||||||||||||||
| 132 | seed_in = | - | ||||||||||||||||||
| 133 | ((void *)0) | - | ||||||||||||||||||
| 134 | ; | - | ||||||||||||||||||
| 135 | } executed 1 time by 1 test: end of blockExecuted by:
| 1 | ||||||||||||||||||
| 136 | memcpy(buf, seed, qsize); | - | ||||||||||||||||||
| 137 | memcpy(buf2, seed, qsize); | - | ||||||||||||||||||
| 138 | - | |||||||||||||||||||
| 139 | for (i = qsize - 1; i >= 0
| 0-1 | ||||||||||||||||||
| 140 | buf[i]++; | - | ||||||||||||||||||
| 141 | if (buf[i] != 0
| 0-1 | ||||||||||||||||||
| 142 | break; executed 1 time by 1 test: break;Executed by:
| 1 | ||||||||||||||||||
| 143 | } never executed: end of block | 0 | ||||||||||||||||||
| 144 | - | |||||||||||||||||||
| 145 | - | |||||||||||||||||||
| 146 | if (!EVP_Digest(seed, qsize, md,
| 0-1 | ||||||||||||||||||
| 147 | ((void *)0)
| 0-1 | ||||||||||||||||||
| 148 | , evpmd,
| 0-1 | ||||||||||||||||||
| 149 | ((void *)0)
| 0-1 | ||||||||||||||||||
| 150 | )
| 0-1 | ||||||||||||||||||
| 151 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 152 | if (!EVP_Digest(buf, qsize, buf2,
| 0-1 | ||||||||||||||||||
| 153 | ((void *)0)
| 0-1 | ||||||||||||||||||
| 154 | , evpmd,
| 0-1 | ||||||||||||||||||
| 155 | ((void *)0)
| 0-1 | ||||||||||||||||||
| 156 | )
| 0-1 | ||||||||||||||||||
| 157 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 158 | for (i = 0; i < qsize
| 1-20 | ||||||||||||||||||
| 159 | md[i] ^= buf2[i]; executed 20 times by 1 test: md[i] ^= buf2[i];Executed by:
| 20 | ||||||||||||||||||
| 160 | - | |||||||||||||||||||
| 161 | - | |||||||||||||||||||
| 162 | md[0] |= 0x80; | - | ||||||||||||||||||
| 163 | md[qsize - 1] |= 0x01; | - | ||||||||||||||||||
| 164 | if (!BN_bin2bn(md, qsize, q)
| 0-1 | ||||||||||||||||||
| 165 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 166 | - | |||||||||||||||||||
| 167 | - | |||||||||||||||||||
| 168 | r = BN_is_prime_fasttest_ex(q, 64, ctx, | - | ||||||||||||||||||
| 169 | use_random_seed, cb); | - | ||||||||||||||||||
| 170 | if (r > 0
| 0-1 | ||||||||||||||||||
| 171 | break; executed 1 time by 1 test: break;Executed by:
| 1 | ||||||||||||||||||
| 172 | if (r != 0
| 0 | ||||||||||||||||||
| 173 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 174 | - | |||||||||||||||||||
| 175 | - | |||||||||||||||||||
| 176 | - | |||||||||||||||||||
| 177 | } never executed: end of block | 0 | ||||||||||||||||||
| 178 | - | |||||||||||||||||||
| 179 | if (!BN_GENCB_call(cb, 2, 0)
| 0-1 | ||||||||||||||||||
| 180 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 181 | if (!BN_GENCB_call(cb, 3, 0)
| 0-1 | ||||||||||||||||||
| 182 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 183 | - | |||||||||||||||||||
| 184 | - | |||||||||||||||||||
| 185 | counter = 0; | - | ||||||||||||||||||
| 186 | - | |||||||||||||||||||
| 187 | - | |||||||||||||||||||
| 188 | n = (bits - 1) / 160; | - | ||||||||||||||||||
| 189 | - | |||||||||||||||||||
| 190 | for (;;) { | - | ||||||||||||||||||
| 191 | if ((
| 0-105 | ||||||||||||||||||
| 192 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 193 | - | |||||||||||||||||||
| 194 | - | |||||||||||||||||||
| 195 | (BN_set_word((W),0)); | - | ||||||||||||||||||
| 196 | - | |||||||||||||||||||
| 197 | for (k = 0; k <= n
| 106-424 | ||||||||||||||||||
| 198 | - | |||||||||||||||||||
| 199 | - | |||||||||||||||||||
| 200 | - | |||||||||||||||||||
| 201 | for (i = qsize - 1; i >= 0
| 0-426 | ||||||||||||||||||
| 202 | buf[i]++; | - | ||||||||||||||||||
| 203 | if (buf[i] != 0
| 2-424 | ||||||||||||||||||
| 204 | break; executed 424 times by 1 test: break;Executed by:
| 424 | ||||||||||||||||||
| 205 | } executed 2 times by 1 test: end of blockExecuted by:
| 2 | ||||||||||||||||||
| 206 | - | |||||||||||||||||||
| 207 | if (!EVP_Digest(buf, qsize, md,
| 0-424 | ||||||||||||||||||
| 208 | ((void *)0)
| 0-424 | ||||||||||||||||||
| 209 | , evpmd,
| 0-424 | ||||||||||||||||||
| 210 | ((void *)0)
| 0-424 | ||||||||||||||||||
| 211 | )
| 0-424 | ||||||||||||||||||
| 212 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 213 | - | |||||||||||||||||||
| 214 | - | |||||||||||||||||||
| 215 | if (!BN_bin2bn(md, qsize, r0)
| 0-424 | ||||||||||||||||||
| 216 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 217 | if (!BN_lshift(r0, r0, (qsize << 3) * k)
| 0-424 | ||||||||||||||||||
| 218 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 219 | if (!BN_add(W, W, r0)
| 0-424 | ||||||||||||||||||
| 220 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 221 | } executed 424 times by 1 test: end of blockExecuted by:
| 424 | ||||||||||||||||||
| 222 | - | |||||||||||||||||||
| 223 | - | |||||||||||||||||||
| 224 | if (!BN_mask_bits(W, bits - 1)
| 0-106 | ||||||||||||||||||
| 225 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 226 | if (!BN_copy(X, W)
| 0-106 | ||||||||||||||||||
| 227 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 228 | if (!BN_add(X, X, test)
| 0-106 | ||||||||||||||||||
| 229 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 230 | - | |||||||||||||||||||
| 231 | - | |||||||||||||||||||
| 232 | if (!BN_lshift1(r0, q)
| 0-106 | ||||||||||||||||||
| 233 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 234 | if (!BN_div(
| 0-106 | ||||||||||||||||||
| 235 | ((void *)0)
| 0-106 | ||||||||||||||||||
| 236 | ,(c),(X),(r0),(ctx))
| 0-106 | ||||||||||||||||||
| 237 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 238 | if (!BN_sub(r0, c, BN_value_one())
| 0-106 | ||||||||||||||||||
| 239 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 240 | if (!BN_sub(p, X, r0)
| 0-106 | ||||||||||||||||||
| 241 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 242 | - | |||||||||||||||||||
| 243 | - | |||||||||||||||||||
| 244 | if (BN_cmp(p, test) >= 0
| 0-106 | ||||||||||||||||||
| 245 | - | |||||||||||||||||||
| 246 | r = BN_is_prime_fasttest_ex(p, 64, ctx, 1, cb); | - | ||||||||||||||||||
| 247 | if (r > 0
| 1-105 | ||||||||||||||||||
| 248 | goto executed 1 time by 1 test: end;goto end;Executed by:
executed 1 time by 1 test: goto end;Executed by:
| 1 | ||||||||||||||||||
| 249 | if (r != 0
| 0-105 | ||||||||||||||||||
| 250 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 251 | } executed 105 times by 1 test: end of blockExecuted by:
| 105 | ||||||||||||||||||
| 252 | - | |||||||||||||||||||
| 253 | - | |||||||||||||||||||
| 254 | counter++; | - | ||||||||||||||||||
| 255 | - | |||||||||||||||||||
| 256 | - | |||||||||||||||||||
| 257 | - | |||||||||||||||||||
| 258 | if (counter >= 4096
| 0-105 | ||||||||||||||||||
| 259 | break; never executed: break; | 0 | ||||||||||||||||||
| 260 | } executed 105 times by 1 test: end of blockExecuted by:
| 105 | ||||||||||||||||||
| 261 | } never executed: end of block | 0 | ||||||||||||||||||
| 262 | end: code before this statement never executed: end: | 0 | ||||||||||||||||||
| 263 | if (!BN_GENCB_call(cb, 2, 1)
| 0-1 | ||||||||||||||||||
| 264 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 265 | - | |||||||||||||||||||
| 266 | - | |||||||||||||||||||
| 267 | - | |||||||||||||||||||
| 268 | if (!BN_sub(test, p, BN_value_one())
| 0-1 | ||||||||||||||||||
| 269 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 270 | if (!BN_div(r0,
| 0-1 | ||||||||||||||||||
| 271 | ((void *)0)
| 0-1 | ||||||||||||||||||
| 272 | , test, q, ctx)
| 0-1 | ||||||||||||||||||
| 273 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 274 | - | |||||||||||||||||||
| 275 | if (!BN_set_word(test, h)
| 0-1 | ||||||||||||||||||
| 276 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 277 | if (!BN_MONT_CTX_set(mont, p, ctx)
| 0-1 | ||||||||||||||||||
| 278 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 279 | - | |||||||||||||||||||
| 280 | for (;;) { | - | ||||||||||||||||||
| 281 | - | |||||||||||||||||||
| 282 | if (!BN_mod_exp_mont(g, test, r0, p, ctx, mont)
| 0-1 | ||||||||||||||||||
| 283 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 284 | if (!BN_is_one(g)
| 0-1 | ||||||||||||||||||
| 285 | break; executed 1 time by 1 test: break;Executed by:
| 1 | ||||||||||||||||||
| 286 | if (!BN_add(test, test, BN_value_one())
| 0 | ||||||||||||||||||
| 287 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 288 | h++; | - | ||||||||||||||||||
| 289 | } never executed: end of block | 0 | ||||||||||||||||||
| 290 | - | |||||||||||||||||||
| 291 | if (!BN_GENCB_call(cb, 3, 1)
| 0-1 | ||||||||||||||||||
| 292 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 293 | - | |||||||||||||||||||
| 294 | ok = 1; | - | ||||||||||||||||||
| 295 | err: code before this statement executed 1 time by 1 test: err:Executed by:
| 1 | ||||||||||||||||||
| 296 | if (ok
| 0-1 | ||||||||||||||||||
| 297 | BN_free(ret->p); | - | ||||||||||||||||||
| 298 | BN_free(ret->q); | - | ||||||||||||||||||
| 299 | BN_free(ret->g); | - | ||||||||||||||||||
| 300 | ret->p = BN_dup(p); | - | ||||||||||||||||||
| 301 | ret->q = BN_dup(q); | - | ||||||||||||||||||
| 302 | ret->g = BN_dup(g); | - | ||||||||||||||||||
| 303 | if (ret->p ==
| 0-1 | ||||||||||||||||||
| 304 | ((void *)0)
| 0-1 | ||||||||||||||||||
| 305 | || ret->q ==
| 0-1 | ||||||||||||||||||
| 306 | ((void *)0)
| 0-1 | ||||||||||||||||||
| 307 | || ret->g ==
| 0-1 | ||||||||||||||||||
| 308 | ((void *)0)
| 0-1 | ||||||||||||||||||
| 309 | ) { | - | ||||||||||||||||||
| 310 | ok = 0; | - | ||||||||||||||||||
| 311 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 312 | } | - | ||||||||||||||||||
| 313 | if (counter_ret !=
| 0-1 | ||||||||||||||||||
| 314 | ((void *)0)
| 0-1 | ||||||||||||||||||
| 315 | ) | - | ||||||||||||||||||
| 316 | * executed 1 time by 1 test: counter_ret = counter;*counter_ret = counter;Executed by:
executed 1 time by 1 test: *counter_ret = counter;Executed by:
| 1 | ||||||||||||||||||
| 317 | if (h_ret !=
| 0-1 | ||||||||||||||||||
| 318 | ((void *)0)
| 0-1 | ||||||||||||||||||
| 319 | ) | - | ||||||||||||||||||
| 320 | * executed 1 time by 1 test: h_ret = h;*h_ret = h;Executed by:
executed 1 time by 1 test: *h_ret = h;Executed by:
| 1 | ||||||||||||||||||
| 321 | if (seed_out
| 0-1 | ||||||||||||||||||
| 322 | memcpy(seed_out, seed, qsize); never executed: memcpy(seed_out, seed, qsize); | 0 | ||||||||||||||||||
| 323 | } executed 1 time by 1 test: end of blockExecuted by:
| 1 | ||||||||||||||||||
| 324 | if (ctx
| 0-1 | ||||||||||||||||||
| 325 | BN_CTX_end(ctx); executed 1 time by 1 test: BN_CTX_end(ctx);Executed by:
| 1 | ||||||||||||||||||
| 326 | BN_CTX_free(ctx); | - | ||||||||||||||||||
| 327 | BN_MONT_CTX_free(mont); | - | ||||||||||||||||||
| 328 | return executed 1 time by 1 test: ok;return ok;Executed by:
executed 1 time by 1 test: return ok;Executed by:
| 1 | ||||||||||||||||||
| 329 | } | - | ||||||||||||||||||
| 330 | - | |||||||||||||||||||
| 331 | - | |||||||||||||||||||
| 332 | - | |||||||||||||||||||
| 333 | - | |||||||||||||||||||
| 334 | - | |||||||||||||||||||
| 335 | - | |||||||||||||||||||
| 336 | int dsa_builtin_paramgen2(DSA *ret, size_t L, size_t N, | - | ||||||||||||||||||
| 337 | const EVP_MD *evpmd, const unsigned char *seed_in, | - | ||||||||||||||||||
| 338 | size_t seed_len, int idx, unsigned char *seed_out, | - | ||||||||||||||||||
| 339 | int *counter_ret, unsigned long *h_ret, | - | ||||||||||||||||||
| 340 | BN_GENCB *cb) | - | ||||||||||||||||||
| 341 | { | - | ||||||||||||||||||
| 342 | int ok = -1; | - | ||||||||||||||||||
| 343 | unsigned char *seed = | - | ||||||||||||||||||
| 344 | ((void *)0) | - | ||||||||||||||||||
| 345 | , *seed_tmp = | - | ||||||||||||||||||
| 346 | ((void *)0) | - | ||||||||||||||||||
| 347 | ; | - | ||||||||||||||||||
| 348 | unsigned char md[64]; | - | ||||||||||||||||||
| 349 | int mdsize; | - | ||||||||||||||||||
| 350 | BIGNUM *r0, *W, *X, *c, *test; | - | ||||||||||||||||||
| 351 | BIGNUM *g = | - | ||||||||||||||||||
| 352 | ((void *)0) | - | ||||||||||||||||||
| 353 | , *q = | - | ||||||||||||||||||
| 354 | ((void *)0) | - | ||||||||||||||||||
| 355 | , *p = | - | ||||||||||||||||||
| 356 | ((void *)0) | - | ||||||||||||||||||
| 357 | ; | - | ||||||||||||||||||
| 358 | BN_MONT_CTX *mont = | - | ||||||||||||||||||
| 359 | ((void *)0) | - | ||||||||||||||||||
| 360 | ; | - | ||||||||||||||||||
| 361 | int i, k, n = 0, m = 0, qsize = N >> 3; | - | ||||||||||||||||||
| 362 | int counter = 0; | - | ||||||||||||||||||
| 363 | int r = 0; | - | ||||||||||||||||||
| 364 | BN_CTX *ctx = | - | ||||||||||||||||||
| 365 | ((void *)0) | - | ||||||||||||||||||
| 366 | ; | - | ||||||||||||||||||
| 367 | EVP_MD_CTX *mctx = EVP_MD_CTX_new(); | - | ||||||||||||||||||
| 368 | unsigned int h = 2; | - | ||||||||||||||||||
| 369 | - | |||||||||||||||||||
| 370 | if (mctx ==
| 0 | ||||||||||||||||||
| 371 | ((void *)0)
| 0 | ||||||||||||||||||
| 372 | ) | - | ||||||||||||||||||
| 373 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 374 | - | |||||||||||||||||||
| 375 | if (evpmd ==
| 0 | ||||||||||||||||||
| 376 | ((void *)0)
| 0 | ||||||||||||||||||
| 377 | ) { | - | ||||||||||||||||||
| 378 | if (N == 160
| 0 | ||||||||||||||||||
| 379 | evpmd = EVP_sha1(); never executed: evpmd = EVP_sha1(); | 0 | ||||||||||||||||||
| 380 | else if (N == 224
| 0 | ||||||||||||||||||
| 381 | evpmd = EVP_sha224(); never executed: evpmd = EVP_sha224(); | 0 | ||||||||||||||||||
| 382 | else | - | ||||||||||||||||||
| 383 | evpmd = EVP_sha256(); never executed: evpmd = EVP_sha256(); | 0 | ||||||||||||||||||
| 384 | } | - | ||||||||||||||||||
| 385 | - | |||||||||||||||||||
| 386 | mdsize = EVP_MD_size(evpmd); | - | ||||||||||||||||||
| 387 | - | |||||||||||||||||||
| 388 | if (!ret->p
| 0 | ||||||||||||||||||
| 389 | if (seed_len == 0
| 0 | ||||||||||||||||||
| 390 | seed_len = mdsize; never executed: seed_len = mdsize; | 0 | ||||||||||||||||||
| 391 | - | |||||||||||||||||||
| 392 | seed = CRYPTO_malloc(seed_len, __FILE__, 345); | - | ||||||||||||||||||
| 393 | - | |||||||||||||||||||
| 394 | if (seed_out
| 0 | ||||||||||||||||||
| 395 | seed_tmp = seed_out; never executed: seed_tmp = seed_out; | 0 | ||||||||||||||||||
| 396 | else | - | ||||||||||||||||||
| 397 | seed_tmp = CRYPTO_malloc(seed_len, __FILE__, 350); never executed: seed_tmp = CRYPTO_malloc(seed_len, __FILE__, 350); | 0 | ||||||||||||||||||
| 398 | - | |||||||||||||||||||
| 399 | if (seed ==
| 0 | ||||||||||||||||||
| 400 | ((void *)0)
| 0 | ||||||||||||||||||
| 401 | || seed_tmp ==
| 0 | ||||||||||||||||||
| 402 | ((void *)0)
| 0 | ||||||||||||||||||
| 403 | ) | - | ||||||||||||||||||
| 404 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 405 | - | |||||||||||||||||||
| 406 | if (seed_in
| 0 | ||||||||||||||||||
| 407 | memcpy(seed, seed_in, seed_len); never executed: memcpy(seed, seed_in, seed_len); | 0 | ||||||||||||||||||
| 408 | - | |||||||||||||||||||
| 409 | } never executed: end of block | 0 | ||||||||||||||||||
| 410 | - | |||||||||||||||||||
| 411 | if ((
| 0 | ||||||||||||||||||
| 412 | ((void *)0)
| 0 | ||||||||||||||||||
| 413 | ) | - | ||||||||||||||||||
| 414 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 415 | - | |||||||||||||||||||
| 416 | if ((
| 0 | ||||||||||||||||||
| 417 | ((void *)0)
| 0 | ||||||||||||||||||
| 418 | ) | - | ||||||||||||||||||
| 419 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 420 | - | |||||||||||||||||||
| 421 | BN_CTX_start(ctx); | - | ||||||||||||||||||
| 422 | r0 = BN_CTX_get(ctx); | - | ||||||||||||||||||
| 423 | g = BN_CTX_get(ctx); | - | ||||||||||||||||||
| 424 | W = BN_CTX_get(ctx); | - | ||||||||||||||||||
| 425 | X = BN_CTX_get(ctx); | - | ||||||||||||||||||
| 426 | c = BN_CTX_get(ctx); | - | ||||||||||||||||||
| 427 | test = BN_CTX_get(ctx); | - | ||||||||||||||||||
| 428 | if (test ==
| 0 | ||||||||||||||||||
| 429 | ((void *)0)
| 0 | ||||||||||||||||||
| 430 | ) | - | ||||||||||||||||||
| 431 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 432 | - | |||||||||||||||||||
| 433 | - | |||||||||||||||||||
| 434 | if (ret->p
| 0 | ||||||||||||||||||
| 435 | p = ret->p; | - | ||||||||||||||||||
| 436 | q = ret->q; | - | ||||||||||||||||||
| 437 | if (idx >= 0
| 0 | ||||||||||||||||||
| 438 | memcpy(seed_tmp, seed, seed_len); never executed: memcpy(seed_tmp, seed, seed_len); | 0 | ||||||||||||||||||
| 439 | goto never executed: g_only;goto g_only;never executed: goto g_only; | 0 | ||||||||||||||||||
| 440 | } else { | - | ||||||||||||||||||
| 441 | p = BN_CTX_get(ctx); | - | ||||||||||||||||||
| 442 | q = BN_CTX_get(ctx); | - | ||||||||||||||||||
| 443 | if (q ==
| 0 | ||||||||||||||||||
| 444 | ((void *)0)
| 0 | ||||||||||||||||||
| 445 | ) | - | ||||||||||||||||||
| 446 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 447 | } never executed: end of block | 0 | ||||||||||||||||||
| 448 | - | |||||||||||||||||||
| 449 | if (!BN_lshift(test, BN_value_one(), L - 1)
| 0 | ||||||||||||||||||
| 450 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 451 | for (;;) { | - | ||||||||||||||||||
| 452 | for (;;) { | - | ||||||||||||||||||
| 453 | unsigned char *pmd; | - | ||||||||||||||||||
| 454 | - | |||||||||||||||||||
| 455 | if (!BN_GENCB_call(cb, 0, m++)
| 0 | ||||||||||||||||||
| 456 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 457 | - | |||||||||||||||||||
| 458 | if (!seed_in
| 0 | ||||||||||||||||||
| 459 | if (RAND_bytes(seed, seed_len) <= 0
| 0 | ||||||||||||||||||
| 460 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 461 | } never executed: end of block | 0 | ||||||||||||||||||
| 462 | - | |||||||||||||||||||
| 463 | if (!EVP_Digest(seed, seed_len, md,
| 0 | ||||||||||||||||||
| 464 | ((void *)0)
| 0 | ||||||||||||||||||
| 465 | , evpmd,
| 0 | ||||||||||||||||||
| 466 | ((void *)0)
| 0 | ||||||||||||||||||
| 467 | )
| 0 | ||||||||||||||||||
| 468 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 469 | - | |||||||||||||||||||
| 470 | if (mdsize > qsize
| 0 | ||||||||||||||||||
| 471 | pmd = md + mdsize - qsize; never executed: pmd = md + mdsize - qsize; | 0 | ||||||||||||||||||
| 472 | else | - | ||||||||||||||||||
| 473 | pmd = md; never executed: pmd = md; | 0 | ||||||||||||||||||
| 474 | - | |||||||||||||||||||
| 475 | if (mdsize < qsize
| 0 | ||||||||||||||||||
| 476 | memset(md + mdsize, 0, qsize - mdsize); never executed: memset(md + mdsize, 0, qsize - mdsize); | 0 | ||||||||||||||||||
| 477 | - | |||||||||||||||||||
| 478 | - | |||||||||||||||||||
| 479 | pmd[0] |= 0x80; | - | ||||||||||||||||||
| 480 | pmd[qsize - 1] |= 0x01; | - | ||||||||||||||||||
| 481 | if (!BN_bin2bn(pmd, qsize, q)
| 0 | ||||||||||||||||||
| 482 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 483 | - | |||||||||||||||||||
| 484 | - | |||||||||||||||||||
| 485 | r = BN_is_prime_fasttest_ex(q, 64, ctx, | - | ||||||||||||||||||
| 486 | seed_in ? 1 : 0, cb); | - | ||||||||||||||||||
| 487 | if (r > 0
| 0 | ||||||||||||||||||
| 488 | break; never executed: break; | 0 | ||||||||||||||||||
| 489 | if (r != 0
| 0 | ||||||||||||||||||
| 490 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 491 | - | |||||||||||||||||||
| 492 | if (seed_in
| 0 | ||||||||||||||||||
| 493 | ok = 0; | - | ||||||||||||||||||
| 494 | ERR_put_error(10,(126),(113),__FILE__,431); | - | ||||||||||||||||||
| 495 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 496 | } | - | ||||||||||||||||||
| 497 | - | |||||||||||||||||||
| 498 | - | |||||||||||||||||||
| 499 | - | |||||||||||||||||||
| 500 | } never executed: end of block | 0 | ||||||||||||||||||
| 501 | - | |||||||||||||||||||
| 502 | if (seed_out
| 0 | ||||||||||||||||||
| 503 | memcpy(seed_out, seed, seed_len); never executed: memcpy(seed_out, seed, seed_len); | 0 | ||||||||||||||||||
| 504 | - | |||||||||||||||||||
| 505 | if (!BN_GENCB_call(cb, 2, 0)
| 0 | ||||||||||||||||||
| 506 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 507 | if (!BN_GENCB_call(cb, 3, 0)
| 0 | ||||||||||||||||||
| 508 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 509 | - | |||||||||||||||||||
| 510 | - | |||||||||||||||||||
| 511 | counter = 0; | - | ||||||||||||||||||
| 512 | - | |||||||||||||||||||
| 513 | - | |||||||||||||||||||
| 514 | n = (L - 1) / (mdsize << 3); | - | ||||||||||||||||||
| 515 | - | |||||||||||||||||||
| 516 | for (;;) { | - | ||||||||||||||||||
| 517 | if ((
| 0 | ||||||||||||||||||
| 518 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 519 | - | |||||||||||||||||||
| 520 | - | |||||||||||||||||||
| 521 | (BN_set_word((W),0)); | - | ||||||||||||||||||
| 522 | - | |||||||||||||||||||
| 523 | for (k = 0; k <= n
| 0 | ||||||||||||||||||
| 524 | - | |||||||||||||||||||
| 525 | - | |||||||||||||||||||
| 526 | - | |||||||||||||||||||
| 527 | for (i = seed_len - 1; i >= 0
| 0 | ||||||||||||||||||
| 528 | seed[i]++; | - | ||||||||||||||||||
| 529 | if (seed[i] != 0
| 0 | ||||||||||||||||||
| 530 | break; never executed: break; | 0 | ||||||||||||||||||
| 531 | } never executed: end of block | 0 | ||||||||||||||||||
| 532 | - | |||||||||||||||||||
| 533 | if (!EVP_Digest(seed, seed_len, md,
| 0 | ||||||||||||||||||
| 534 | ((void *)0)
| 0 | ||||||||||||||||||
| 535 | , evpmd,
| 0 | ||||||||||||||||||
| 536 | ((void *)0)
| 0 | ||||||||||||||||||
| 537 | )
| 0 | ||||||||||||||||||
| 538 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 539 | - | |||||||||||||||||||
| 540 | - | |||||||||||||||||||
| 541 | if (!BN_bin2bn(md, mdsize, r0)
| 0 | ||||||||||||||||||
| 542 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 543 | if (!BN_lshift(r0, r0, (mdsize << 3) * k)
| 0 | ||||||||||||||||||
| 544 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 545 | if (!BN_add(W, W, r0)
| 0 | ||||||||||||||||||
| 546 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 547 | } never executed: end of block | 0 | ||||||||||||||||||
| 548 | - | |||||||||||||||||||
| 549 | - | |||||||||||||||||||
| 550 | if (!BN_mask_bits(W, L - 1)
| 0 | ||||||||||||||||||
| 551 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 552 | if (!BN_copy(X, W)
| 0 | ||||||||||||||||||
| 553 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 554 | if (!BN_add(X, X, test)
| 0 | ||||||||||||||||||
| 555 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 556 | - | |||||||||||||||||||
| 557 | - | |||||||||||||||||||
| 558 | if (!BN_lshift1(r0, q)
| 0 | ||||||||||||||||||
| 559 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 560 | if (!BN_div(
| 0 | ||||||||||||||||||
| 561 | ((void *)0)
| 0 | ||||||||||||||||||
| 562 | ,(c),(X),(r0),(ctx))
| 0 | ||||||||||||||||||
| 563 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 564 | if (!BN_sub(r0, c, BN_value_one())
| 0 | ||||||||||||||||||
| 565 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 566 | if (!BN_sub(p, X, r0)
| 0 | ||||||||||||||||||
| 567 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 568 | - | |||||||||||||||||||
| 569 | - | |||||||||||||||||||
| 570 | if (BN_cmp(p, test) >= 0
| 0 | ||||||||||||||||||
| 571 | - | |||||||||||||||||||
| 572 | r = BN_is_prime_fasttest_ex(p, 64, ctx, 1, cb); | - | ||||||||||||||||||
| 573 | if (r > 0
| 0 | ||||||||||||||||||
| 574 | goto never executed: end;goto end;never executed: goto end; | 0 | ||||||||||||||||||
| 575 | if (r != 0
| 0 | ||||||||||||||||||
| 576 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 577 | } never executed: end of block | 0 | ||||||||||||||||||
| 578 | - | |||||||||||||||||||
| 579 | - | |||||||||||||||||||
| 580 | counter++; | - | ||||||||||||||||||
| 581 | - | |||||||||||||||||||
| 582 | - | |||||||||||||||||||
| 583 | - | |||||||||||||||||||
| 584 | if (counter >= (int)(4 * L)
| 0 | ||||||||||||||||||
| 585 | break; never executed: break; | 0 | ||||||||||||||||||
| 586 | } never executed: end of block | 0 | ||||||||||||||||||
| 587 | if (seed_in
| 0 | ||||||||||||||||||
| 588 | ok = 0; | - | ||||||||||||||||||
| 589 | ERR_put_error(10,(126),(112),__FILE__,520); | - | ||||||||||||||||||
| 590 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 591 | } | - | ||||||||||||||||||
| 592 | } never executed: end of block | 0 | ||||||||||||||||||
| 593 | end: code before this statement never executed: end: | 0 | ||||||||||||||||||
| 594 | if (!BN_GENCB_call(cb, 2, 1)
| 0 | ||||||||||||||||||
| 595 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 596 | - | |||||||||||||||||||
| 597 | g_only: code before this statement never executed: g_only: | 0 | ||||||||||||||||||
| 598 | - | |||||||||||||||||||
| 599 | - | |||||||||||||||||||
| 600 | - | |||||||||||||||||||
| 601 | if (!BN_sub(test, p, BN_value_one())
| 0 | ||||||||||||||||||
| 602 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 603 | if (!BN_div(r0,
| 0 | ||||||||||||||||||
| 604 | ((void *)0)
| 0 | ||||||||||||||||||
| 605 | , test, q, ctx)
| 0 | ||||||||||||||||||
| 606 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 607 | - | |||||||||||||||||||
| 608 | if (idx < 0
| 0 | ||||||||||||||||||
| 609 | if (!BN_set_word(test, h)
| 0 | ||||||||||||||||||
| 610 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 611 | } never executed: elseend of block | 0 | ||||||||||||||||||
| 612 | h = 1; never executed: h = 1; | 0 | ||||||||||||||||||
| 613 | if (!BN_MONT_CTX_set(mont, p, ctx)
| 0 | ||||||||||||||||||
| 614 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 615 | - | |||||||||||||||||||
| 616 | for (;;) { | - | ||||||||||||||||||
| 617 | static const unsigned char ggen[4] = { 0x67, 0x67, 0x65, 0x6e }; | - | ||||||||||||||||||
| 618 | if (idx >= 0
| 0 | ||||||||||||||||||
| 619 | md[0] = idx & 0xff; | - | ||||||||||||||||||
| 620 | md[1] = (h >> 8) & 0xff; | - | ||||||||||||||||||
| 621 | md[2] = h & 0xff; | - | ||||||||||||||||||
| 622 | if (!EVP_DigestInit_ex(mctx, evpmd,
| 0 | ||||||||||||||||||
| 623 | ((void *)0)
| 0 | ||||||||||||||||||
| 624 | )
| 0 | ||||||||||||||||||
| 625 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 626 | if (!EVP_DigestUpdate(mctx, seed_tmp, seed_len)
| 0 | ||||||||||||||||||
| 627 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 628 | if (!EVP_DigestUpdate(mctx, ggen, sizeof(ggen))
| 0 | ||||||||||||||||||
| 629 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 630 | if (!EVP_DigestUpdate(mctx, md, 3)
| 0 | ||||||||||||||||||
| 631 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 632 | if (!EVP_DigestFinal_ex(mctx, md,
| 0 | ||||||||||||||||||
| 633 | ((void *)0)
| 0 | ||||||||||||||||||
| 634 | )
| 0 | ||||||||||||||||||
| 635 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 636 | if (!BN_bin2bn(md, mdsize, test)
| 0 | ||||||||||||||||||
| 637 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 638 | } never executed: end of block | 0 | ||||||||||||||||||
| 639 | - | |||||||||||||||||||
| 640 | if (!BN_mod_exp_mont(g, test, r0, p, ctx, mont)
| 0 | ||||||||||||||||||
| 641 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 642 | if (!BN_is_one(g)
| 0 | ||||||||||||||||||
| 643 | break; never executed: break; | 0 | ||||||||||||||||||
| 644 | if (idx < 0
| 0 | ||||||||||||||||||
| 645 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 646 | h++; | - | ||||||||||||||||||
| 647 | if (idx >= 0
| 0 | ||||||||||||||||||
| 648 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 649 | } never executed: end of block | 0 | ||||||||||||||||||
| 650 | - | |||||||||||||||||||
| 651 | if (!BN_GENCB_call(cb, 3, 1)
| 0 | ||||||||||||||||||
| 652 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 653 | - | |||||||||||||||||||
| 654 | ok = 1; | - | ||||||||||||||||||
| 655 | err: code before this statement never executed: err: | 0 | ||||||||||||||||||
| 656 | if (ok == 1
| 0 | ||||||||||||||||||
| 657 | if (p != ret->p
| 0 | ||||||||||||||||||
| 658 | BN_free(ret->p); | - | ||||||||||||||||||
| 659 | ret->p = BN_dup(p); | - | ||||||||||||||||||
| 660 | } never executed: end of block | 0 | ||||||||||||||||||
| 661 | if (q != ret->q
| 0 | ||||||||||||||||||
| 662 | BN_free(ret->q); | - | ||||||||||||||||||
| 663 | ret->q = BN_dup(q); | - | ||||||||||||||||||
| 664 | } never executed: end of block | 0 | ||||||||||||||||||
| 665 | BN_free(ret->g); | - | ||||||||||||||||||
| 666 | ret->g = BN_dup(g); | - | ||||||||||||||||||
| 667 | if (ret->p ==
| 0 | ||||||||||||||||||
| 668 | ((void *)0)
| 0 | ||||||||||||||||||
| 669 | || ret->q ==
| 0 | ||||||||||||||||||
| 670 | ((void *)0)
| 0 | ||||||||||||||||||
| 671 | || ret->g ==
| 0 | ||||||||||||||||||
| 672 | ((void *)0)
| 0 | ||||||||||||||||||
| 673 | ) { | - | ||||||||||||||||||
| 674 | ok = -1; | - | ||||||||||||||||||
| 675 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||
| 676 | } | - | ||||||||||||||||||
| 677 | if (counter_ret !=
| 0 | ||||||||||||||||||
| 678 | ((void *)0)
| 0 | ||||||||||||||||||
| 679 | ) | - | ||||||||||||||||||
| 680 | * never executed: counter_ret = counter;*counter_ret = counter;never executed: *counter_ret = counter; | 0 | ||||||||||||||||||
| 681 | if (h_ret !=
| 0 | ||||||||||||||||||
| 682 | ((void *)0)
| 0 | ||||||||||||||||||
| 683 | ) | - | ||||||||||||||||||
| 684 | * never executed: h_ret = h;*h_ret = h;never executed: *h_ret = h; | 0 | ||||||||||||||||||
| 685 | } never executed: end of block | 0 | ||||||||||||||||||
| 686 | CRYPTO_free(seed, __FILE__, 601); | - | ||||||||||||||||||
| 687 | if (seed_out != seed_tmp
| 0 | ||||||||||||||||||
| 688 | CRYPTO_free(seed_tmp, __FILE__, 603); never executed: CRYPTO_free(seed_tmp, __FILE__, 603); | 0 | ||||||||||||||||||
| 689 | if (ctx
| 0 | ||||||||||||||||||
| 690 | BN_CTX_end(ctx); never executed: BN_CTX_end(ctx); | 0 | ||||||||||||||||||
| 691 | BN_CTX_free(ctx); | - | ||||||||||||||||||
| 692 | BN_MONT_CTX_free(mont); | - | ||||||||||||||||||
| 693 | EVP_MD_CTX_free(mctx); | - | ||||||||||||||||||
| 694 | return never executed: ok;return ok;never executed: return ok; | 0 | ||||||||||||||||||
| 695 | } | - | ||||||||||||||||||
| Switch to Source code | Preprocessed file |