OpenCoverage

bn_mont.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/libressl/src/crypto/bn/bn_mont.c
Source codeSwitch to Preprocessed file
LineSourceCount
1/* $OpenBSD: bn_mont.c,v 1.26 2017/01/21 11:00:46 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 * Copyright (c) 1998-2006 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/*-
113 * Details about Montgomery multiplication algorithms can be found at-
114 * http://security.ece.orst.edu/publications.html, e.g.-
115 * http://security.ece.orst.edu/koc/papers/j37acmon.pdf and-
116 * sections 3.8 and 4.2 in http://security.ece.orst.edu/koc/papers/r01rsasw.pdf-
117 */-
118-
119#include <stdio.h>-
120#include <stdint.h>-
121-
122#include "bn_lcl.h"-
123-
124#define MONT_WORD /* use the faster word-based algorithm */-
125-
126#ifdef MONT_WORD-
127static int BN_from_montgomery_word(BIGNUM *ret, BIGNUM *r, BN_MONT_CTX *mont);-
128#endif-
129-
130int-
131BN_mod_mul_montgomery(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,-
132 BN_MONT_CTX *mont, BN_CTX *ctx)-
133{-
134 BIGNUM *tmp;-
135 int ret = 0;-
136#if defined(OPENSSL_BN_ASM_MONT) && defined(MONT_WORD)-
137 int num = mont->N.top;-
138-
139 if (num > 1 && a->top == num && b->top == num) {
num > 1Description
TRUEevaluated 3883891 times by 12 tests
Evaluated by:
  • bntest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • exptest
  • libcrypto.so.44.0.1
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
FALSEevaluated 248322 times by 4 tests
Evaluated by:
  • bntest
  • dhtest
  • ectest
  • mont
a->top == numDescription
TRUEevaluated 3871551 times by 12 tests
Evaluated by:
  • bntest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • exptest
  • libcrypto.so.44.0.1
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
FALSEevaluated 12340 times by 12 tests
Evaluated by:
  • bntest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • exptest
  • libcrypto.so.44.0.1
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
b->top == numDescription
TRUEevaluated 3858860 times by 12 tests
Evaluated by:
  • bntest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • exptest
  • libcrypto.so.44.0.1
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
FALSEevaluated 12691 times by 6 tests
Evaluated by:
  • ecdhtest
  • ecdsatest
  • ectest
  • exptest
  • rsa_test
  • servertest
12340-3883891
140 if (bn_wexpand(r, num) == NULL)
(((num) <= (r)...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 3858860 times by 12 tests
Evaluated by:
  • bntest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • exptest
  • libcrypto.so.44.0.1
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
((num) <= (r)->dmax)Description
TRUEevaluated 3853441 times by 12 tests
Evaluated by:
  • bntest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • exptest
  • libcrypto.so.44.0.1
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
FALSEevaluated 5419 times by 7 tests
Evaluated by:
  • bntest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • exptest
  • ssltest
0-3858860
141 return (0);
never executed: return (0);
0
142 if (bn_mul_mont(r->d, a->d, b->d, mont->N.d, mont->n0, num)) {
bn_mul_mont(r-...mont->n0, num)Description
TRUEevaluated 3858860 times by 12 tests
Evaluated by:
  • bntest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • exptest
  • libcrypto.so.44.0.1
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
FALSEnever evaluated
0-3858860
143 r->neg = a->neg^b->neg;-
144 r->top = num;-
145 bn_correct_top(r);
executed 3858860 times by 12 tests: break;
Executed by:
  • bntest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • exptest
  • libcrypto.so.44.0.1
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
executed 3858860 times by 12 tests: end of block
Executed by:
  • bntest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • exptest
  • libcrypto.so.44.0.1
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
tmp_top > 0Description
TRUEevaluated 3858860 times by 12 tests
Evaluated by:
  • bntest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • exptest
  • libcrypto.so.44.0.1
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
FALSEnever evaluated
*(ftl--)Description
TRUEevaluated 3858860 times by 12 tests
Evaluated by:
  • bntest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • exptest
  • libcrypto.so.44.0.1
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
FALSEevaluated 3500 times by 6 tests
Evaluated by:
  • bntest
  • ecdhtest
  • ecdsatest
  • ectest
  • exptest
  • rsa_test
tmp_top > 0Description
TRUEevaluated 3862360 times by 12 tests
Evaluated by:
  • bntest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • exptest
  • libcrypto.so.44.0.1
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
FALSEnever evaluated
0-3862360
146 return (1);
executed 3858860 times by 12 tests: return (1);
Executed by:
  • bntest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • exptest
  • libcrypto.so.44.0.1
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
3858860
147 }-
148 }
never executed: end of block
0
149#endif-
150-
151 BN_CTX_start(ctx);-
152 if ((tmp = BN_CTX_get(ctx)) == NULL)
(tmp = BN_CTX_...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 273353 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-273353
153 goto err;
never executed: goto err;
0
154-
155 bn_check_top(tmp);-
156 if (a == b) {
a == bDescription
TRUEevaluated 195718 times by 9 tests
Evaluated by:
  • bntest
  • dhtest
  • ecdhtest
  • ecdsatest
  • ectest
  • exptest
  • mont
  • rsa_test
  • servertest
FALSEevaluated 77635 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
77635-195718
157 if (!BN_sqr(tmp, a, ctx))
!BN_sqr(tmp, a, ctx)Description
TRUEnever evaluated
FALSEevaluated 195718 times by 9 tests
Evaluated by:
  • bntest
  • dhtest
  • ecdhtest
  • ecdsatest
  • ectest
  • exptest
  • mont
  • rsa_test
  • servertest
0-195718
158 goto err;
never executed: goto err;
0
159 } else {
executed 195718 times by 9 tests: end of block
Executed by:
  • bntest
  • dhtest
  • ecdhtest
  • ecdsatest
  • ectest
  • exptest
  • mont
  • rsa_test
  • servertest
195718
160 if (!BN_mul(tmp, a,b, ctx))
!BN_mul(tmp, a,b, ctx)Description
TRUEnever evaluated
FALSEevaluated 77635 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-77635
161 goto err;
never executed: goto err;
0
162 }
executed 77635 times by 14 tests: end of block
Executed by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • exptest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
77635
163 /* reduce from aRR to aR */-
164#ifdef MONT_WORD-
165 if (!BN_from_montgomery_word(r, tmp, mont))
!BN_from_montg...(r, tmp, mont)Description
TRUEnever evaluated
FALSEevaluated 273353 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-273353
166 goto err;
never executed: goto err;
0
167#else-
168 if (!BN_from_montgomery(r, tmp, mont, ctx))-
169 goto err;-
170#endif-
171 bn_check_top(r);-
172 ret = 1;-
173err:
code before this statement executed 273353 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
273353
174 BN_CTX_end(ctx);-
175 return (ret);
executed 273353 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
273353
176}-
177-
178#ifdef MONT_WORD-
179static int-
180BN_from_montgomery_word(BIGNUM *ret, BIGNUM *r, BN_MONT_CTX *mont)-
181{-
182 BIGNUM *n;-
183 BN_ULONG *ap, *np, *rp, n0, v, carry;-
184 int nl, max, i;-
185-
186 n = &(mont->N);-
187 nl = n->top;-
188 if (nl == 0) {
nl == 0Description
TRUEnever evaluated
FALSEevaluated 278629 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-278629
189 ret->top = 0;-
190 return (1);
never executed: return (1);
0
191 }-
192-
193 max = (2 * nl); /* carry is stored separately */-
194 if (bn_wexpand(r, max) == NULL)
(((max) <= (r)...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 278629 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
((max) <= (r)->dmax)Description
TRUEevaluated 276991 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
FALSEevaluated 1638 times by 12 tests
Evaluated by:
  • bntest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • exptest
  • libcrypto.so.44.0.1
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
0-278629
195 return (0);
never executed: return (0);
0
196-
197 r->neg ^= n->neg;-
198 np = n->d;-
199 rp = r->d;-
200-
201 /* clear the top words of T */-
202#if 1-
203 for (i=r->top; i<max; i++) /* memset? XXX */
i<maxDescription
TRUEevaluated 418482 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
FALSEevaluated 278629 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
278629-418482
204 rp[i] = 0;
executed 418482 times by 14 tests: rp[i] = 0;
Executed by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • exptest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
418482
205#else-
206 memset(&(rp[r->top]), 0, (max - r->top) * sizeof(BN_ULONG));-
207#endif-
208-
209 r->top = max;-
210 n0 = mont->n0[0];-
211-
212#ifdef BN_COUNT-
213 fprintf(stderr, "word BN_from_montgomery_word %d * %d\n", nl, nl);-
214#endif-
215 for (carry = 0, i = 0; i < nl; i++, rp++) {
i < nlDescription
TRUEevaluated 412180 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
FALSEevaluated 278629 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
278629-412180
216 v = bn_mul_add_words(rp, np, nl, (rp[0] * n0) & BN_MASK2);-
217 v = (v + carry + rp[nl]) & BN_MASK2;-
218 carry |= (v != rp[nl]);-
219 carry &= (v <= rp[nl]);-
220 rp[nl] = v;-
221 }
executed 412180 times by 14 tests: end of block
Executed by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • exptest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
412180
222-
223 if (bn_wexpand(ret, nl) == NULL)
(((nl) <= (ret...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 278629 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
((nl) <= (ret)->dmax)Description
TRUEevaluated 277030 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
FALSEevaluated 1599 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-278629
224 return (0);
never executed: return (0);
0
225 ret->top = nl;-
226 ret->neg = r->neg;-
227-
228 rp = ret->d;-
229 ap = &(r->d[nl]);-
230-
231#define BRANCH_FREE 1-
232#if BRANCH_FREE-
233 {-
234 BN_ULONG *nrp;-
235 size_t m;-
236-
237 v = bn_sub_words(rp, ap, np, nl) - carry;-
238 /* if subtraction result is real, then-
239 * trick unconditional memcpy below to perform in-place-
240 * "refresh" instead of actual copy. */-
241 m = (0 - (size_t)v);-
242 nrp = (BN_ULONG *)(((uintptr_t)rp & ~m)|((uintptr_t)ap & m));-
243-
244 for (i = 0, nl -= 4; i < nl; i += 4) {
i < nlDescription
TRUEevaluated 18283 times by 12 tests
Evaluated by:
  • bntest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • exptest
  • libcrypto.so.44.0.1
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
FALSEevaluated 278629 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
18283-278629
245 BN_ULONG t1, t2, t3, t4;-
246-
247 t1 = nrp[i + 0];-
248 t2 = nrp[i + 1];-
249 t3 = nrp[i + 2];-
250 ap[i + 0] = 0;-
251 t4 = nrp[i + 3];-
252 ap[i + 1] = 0;-
253 rp[i + 0] = t1;-
254 ap[i + 2] = 0;-
255 rp[i + 1] = t2;-
256 ap[i + 3] = 0;-
257 rp[i + 2] = t3;-
258 rp[i + 3] = t4;-
259 }
executed 18283 times by 12 tests: end of block
Executed by:
  • bntest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • exptest
  • libcrypto.so.44.0.1
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
18283
260 for (nl += 4; i < nl; i++)
i < nlDescription
TRUEevaluated 339048 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
FALSEevaluated 278629 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
278629-339048
261 rp[i] = nrp[i], ap[i] = 0;
executed 339048 times by 14 tests: rp[i] = nrp[i], ap[i] = 0;
Executed by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • exptest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
339048
262 }-
263#else-
264 if (bn_sub_words (rp, ap, np, nl) - carry)-
265 memcpy(rp, ap, nl*sizeof(BN_ULONG));-
266#endif-
267 bn_correct_top(r);
never executed: break;
executed 278629 times by 14 tests: end of block
Executed by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • exptest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
tmp_top > 0Description
TRUEevaluated 278629 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
FALSEnever evaluated
*(ftl--)Description
TRUEnever evaluated
FALSEevaluated 824360 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
tmp_top > 0Description
TRUEevaluated 824360 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
FALSEevaluated 278629 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-824360
268 bn_correct_top(ret);
executed 266087 times by 14 tests: break;
Executed by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • exptest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
executed 278629 times by 14 tests: end of block
Executed by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • exptest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
tmp_top > 0Description
TRUEevaluated 278629 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
FALSEnever evaluated
*(ftl--)Description
TRUEevaluated 266087 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
FALSEevaluated 50519 times by 9 tests
Evaluated by:
  • bntest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • exptest
  • libcrypto.so.44.0.1
  • rsa_test
  • servertest
tmp_top > 0Description
TRUEevaluated 316606 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
FALSEevaluated 12542 times by 4 tests
Evaluated by:
  • bntest
  • ecdsatest
  • ectest
  • rsa_test
0-316606
269 bn_check_top(ret);-
270-
271 return (1);
executed 278629 times by 14 tests: return (1);
Executed by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • exptest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
278629
272}-
273#endif /* MONT_WORD */-
274-
275int-
276BN_from_montgomery(BIGNUM *ret, const BIGNUM *a, BN_MONT_CTX *mont, BN_CTX *ctx)-
277{-
278 int retn = 0;-
279#ifdef MONT_WORD-
280 BIGNUM *t;-
281-
282 BN_CTX_start(ctx);-
283 if ((t = BN_CTX_get(ctx)) && BN_copy(t, a))
(t = BN_CTX_get(ctx))Description
TRUEevaluated 5276 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
FALSEnever evaluated
BN_copy(t, a)Description
TRUEevaluated 5276 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
FALSEnever evaluated
0-5276
284 retn = BN_from_montgomery_word(ret, t, mont);
executed 5276 times by 14 tests: retn = BN_from_montgomery_word(ret, t, mont);
Executed by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • exptest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
5276
285 BN_CTX_end(ctx);-
286#else /* !MONT_WORD */-
287 BIGNUM *t1, *t2;-
288-
289 BN_CTX_start(ctx);-
290 if ((t1 = BN_CTX_get(ctx)) == NULL)-
291 goto err;-
292 if ((t2 = BN_CTX_get(ctx)) == NULL)-
293 goto err;-
294-
295 if (!BN_copy(t1, a))-
296 goto err;-
297 BN_mask_bits(t1, mont->ri);-
298-
299 if (!BN_mul(t2, t1, &mont->Ni, ctx))-
300 goto err;-
301 BN_mask_bits(t2, mont->ri);-
302-
303 if (!BN_mul(t1, t2, &mont->N, ctx))-
304 goto err;-
305 if (!BN_add(t2, a, t1))-
306 goto err;-
307 if (!BN_rshift(ret, t2, mont->ri))-
308 goto err;-
309-
310 if (BN_ucmp(ret, &(mont->N)) >= 0) {-
311 if (!BN_usub(ret, ret, &(mont->N)))-
312 goto err;-
313 }-
314 retn = 1;-
315 bn_check_top(ret);-
316-
317err:-
318 BN_CTX_end(ctx);-
319#endif /* MONT_WORD */-
320 return (retn);
executed 5276 times by 14 tests: return (retn);
Executed by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • exptest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
5276
321}-
322-
323BN_MONT_CTX *-
324BN_MONT_CTX_new(void)-
325{-
326 BN_MONT_CTX *ret;-
327-
328 if ((ret = malloc(sizeof(BN_MONT_CTX))) == NULL)
(ret = malloc(...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 3016 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-3016
329 return (NULL);
never executed: return ( ((void *)0) );
0
330-
331 BN_MONT_CTX_init(ret);-
332 ret->flags = BN_FLG_MALLOCED;-
333 return (ret);
executed 3016 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
3016
334}-
335-
336void-
337BN_MONT_CTX_init(BN_MONT_CTX *ctx)-
338{-
339 ctx->ri = 0;-
340 BN_init(&(ctx->RR));-
341 BN_init(&(ctx->N));-
342 BN_init(&(ctx->Ni));-
343 ctx->n0[0] = ctx->n0[1] = 0;-
344 ctx->flags = 0;-
345}
executed 3016 times by 14 tests: end of block
Executed by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • exptest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
3016
346-
347void-
348BN_MONT_CTX_free(BN_MONT_CTX *mont)-
349{-
350 if (mont == NULL)
mont == ((void *)0)Description
TRUEevaluated 1266 times by 8 tests
Evaluated by:
  • ecdhtest
  • ecdsatest
  • ectest
  • freenull
  • libcrypto.so.44.0.1
  • servertest
  • ssltest
  • tlstest
FALSEevaluated 3012 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
1266-3012
351 return;
executed 1266 times by 8 tests: return;
Executed by:
  • ecdhtest
  • ecdsatest
  • ectest
  • freenull
  • libcrypto.so.44.0.1
  • servertest
  • ssltest
  • tlstest
1266
352-
353 BN_clear_free(&(mont->RR));-
354 BN_clear_free(&(mont->N));-
355 BN_clear_free(&(mont->Ni));-
356 if (mont->flags & BN_FLG_MALLOCED)
mont->flags & 0x01Description
TRUEevaluated 3012 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
FALSEnever evaluated
0-3012
357 free(mont);
executed 3012 times by 14 tests: free(mont);
Executed by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • exptest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
3012
358}
executed 3012 times by 14 tests: end of block
Executed by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • exptest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
3012
359-
360int-
361BN_MONT_CTX_set(BN_MONT_CTX *mont, const BIGNUM *mod, BN_CTX *ctx)-
362{-
363 int ret = 0;-
364 BIGNUM *Ri, *R;-
365-
366 BN_CTX_start(ctx);-
367 if ((Ri = BN_CTX_get(ctx)) == NULL)
(Ri = BN_CTX_g...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 2881 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-2881
368 goto err;
never executed: goto err;
0
369 R = &(mont->RR); /* grab RR as a temp */-
370 if (!BN_copy(&(mont->N), mod))
!BN_copy(&(mont->N), mod)Description
TRUEnever evaluated
FALSEevaluated 2881 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-2881
371 goto err; /* Set N */
never executed: goto err;
0
372 mont->N.neg = 0;-
373-
374#ifdef MONT_WORD-
375 {-
376 BIGNUM tmod;-
377 BN_ULONG buf[2];-
378-
379 BN_init(&tmod);-
380 tmod.d = buf;-
381 tmod.dmax = 2;-
382 tmod.neg = 0;-
383-
384 mont->ri = (BN_num_bits(mod) +-
385 (BN_BITS2 - 1)) / BN_BITS2 * BN_BITS2;-
386-
387#if defined(OPENSSL_BN_ASM_MONT) && (BN_BITS2<=32)-
388 /* Only certain BN_BITS2<=32 platforms actually make use of-
389 * n0[1], and we could use the #else case (with a shorter R-
390 * value) for the others. However, currently only the assembler-
391 * files do know which is which. */-
392-
393 BN_zero(R);-
394 if (!(BN_set_bit(R, 2 * BN_BITS2)))-
395 goto err;-
396-
397 tmod.top = 0;-
398 if ((buf[0] = mod->d[0]))-
399 tmod.top = 1;-
400 if ((buf[1] = mod->top > 1 ? mod->d[1] : 0))-
401 tmod.top = 2;-
402-
403 if ((BN_mod_inverse_ct(Ri, R, &tmod, ctx)) == NULL)-
404 goto err;-
405 if (!BN_lshift(Ri, Ri, 2 * BN_BITS2))-
406 goto err; /* R*Ri */-
407 if (!BN_is_zero(Ri)) {-
408 if (!BN_sub_word(Ri, 1))-
409 goto err;-
410 }-
411 else /* if N mod word size == 1 */-
412 {-
413 if (bn_expand(Ri, (int)sizeof(BN_ULONG) * 2) == NULL)-
414 goto err;-
415 /* Ri-- (mod double word size) */-
416 Ri->neg = 0;-
417 Ri->d[0] = BN_MASK2;-
418 Ri->d[1] = BN_MASK2;-
419 Ri->top = 2;-
420 }-
421 if (!BN_div_ct(Ri, NULL, Ri, &tmod, ctx))-
422 goto err;-
423 /* Ni = (R*Ri-1)/N,-
424 * keep only couple of least significant words: */-
425 mont->n0[0] = (Ri->top > 0) ? Ri->d[0] : 0;-
426 mont->n0[1] = (Ri->top > 1) ? Ri->d[1] : 0;-
427#else-
428 BN_zero(R);-
429 if (!(BN_set_bit(R, BN_BITS2)))
!(BN_set_bit(R, 64))Description
TRUEnever evaluated
FALSEevaluated 2881 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-2881
430 goto err; /* R */
never executed: goto err;
0
431-
432 buf[0] = mod->d[0]; /* tmod = N mod word size */-
433 buf[1] = 0;-
434 tmod.top = buf[0] != 0 ? 1 : 0;
buf[0] != 0Description
TRUEevaluated 2880 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
FALSEevaluated 1 time by 1 test
Evaluated by:
  • bntest
1-2880
435 /* Ri = R^-1 mod N*/-
436 if ((BN_mod_inverse_ct(Ri, R, &tmod, ctx)) == NULL)
(BN_mod_invers...== ((void *)0)Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • bntest
FALSEevaluated 2879 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
2-2879
437 goto err;
executed 2 times by 1 test: goto err;
Executed by:
  • bntest
2
438 if (!BN_lshift(Ri, Ri, BN_BITS2))
!BN_lshift(Ri, Ri, 64)Description
TRUEnever evaluated
FALSEevaluated 2879 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-2879
439 goto err; /* R*Ri */
never executed: goto err;
0
440 if (!BN_is_zero(Ri)) {
!((Ri)->top == 0)Description
TRUEevaluated 2867 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
FALSEevaluated 12 times by 3 tests
Evaluated by:
  • ecdhtest
  • ecdsatest
  • ectest
12-2867
441 if (!BN_sub_word(Ri, 1))
!BN_sub_word(Ri, 1)Description
TRUEnever evaluated
FALSEevaluated 2867 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-2867
442 goto err;
never executed: goto err;
0
443 }
executed 2867 times by 14 tests: end of block
Executed by:
  • bntest
  • dhtest
  • dsatest
  • ecdhtest
  • ecdsatest
  • ectest
  • exptest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
2867
444 else /* if N mod word size == 1 */-
445 {-
446 if (!BN_set_word(Ri, BN_MASK2))
!BN_set_word(R...fffffffffffL))Description
TRUEnever evaluated
FALSEevaluated 12 times by 3 tests
Evaluated by:
  • ecdhtest
  • ecdsatest
  • ectest
0-12
447 goto err; /* Ri-- (mod word size) */
never executed: goto err;
0
448 }
executed 12 times by 3 tests: end of block
Executed by:
  • ecdhtest
  • ecdsatest
  • ectest
12
449 if (!BN_div_ct(Ri, NULL, Ri, &tmod, ctx))
!BN_div_ct(Ri,...i, &tmod, ctx)Description
TRUEnever evaluated
FALSEevaluated 2879 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-2879
450 goto err;
never executed: goto err;
0
451 /* Ni = (R*Ri-1)/N,-
452 * keep only least significant word: */-
453 mont->n0[0] = (Ri->top > 0) ? Ri->d[0] : 0;
(Ri->top > 0)Description
TRUEevaluated 2879 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
FALSEnever evaluated
0-2879
454 mont->n0[1] = 0;-
455#endif-
456 }-
457#else /* !MONT_WORD */-
458 { /* bignum version */-
459 mont->ri = BN_num_bits(&mont->N);-
460 BN_zero(R);-
461 if (!BN_set_bit(R, mont->ri))-
462 goto err; /* R = 2^ri */-
463 /* Ri = R^-1 mod N*/-
464 if ((BN_mod_inverse_ct(Ri, R, &mont->N, ctx)) == NULL)-
465 goto err;-
466 if (!BN_lshift(Ri, Ri, mont->ri))-
467 goto err; /* R*Ri */-
468 if (!BN_sub_word(Ri, 1))-
469 goto err;-
470 /* Ni = (R*Ri-1) / N */-
471 if (!BN_div_ct(&(mont->Ni), NULL, Ri, &mont->N, ctx))-
472 goto err;-
473 }-
474#endif-
475-
476 /* setup RR for conversions */-
477 BN_zero(&(mont->RR));-
478 if (!BN_set_bit(&(mont->RR), mont->ri*2))
!BN_set_bit(&(...), mont->ri*2)Description
TRUEnever evaluated
FALSEevaluated 2879 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-2879
479 goto err;
never executed: goto err;
0
480 if (!BN_mod_ct(&(mont->RR), &(mont->RR), &(mont->N), ctx))
!BN_div_ct( ((...nt->N)),(ctx))Description
TRUEnever evaluated
FALSEevaluated 2879 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-2879
481 goto err;
never executed: goto err;
0
482-
483 ret = 1;-
484-
485err:
code before this statement executed 2879 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
2879
486 BN_CTX_end(ctx);-
487 return ret;
executed 2881 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
2881
488}-
489-
490BN_MONT_CTX *-
491BN_MONT_CTX_copy(BN_MONT_CTX *to, BN_MONT_CTX *from)-
492{-
493 if (to == from)
to == fromDescription
TRUEnever evaluated
FALSEevaluated 143 times by 3 tests
Evaluated by:
  • ecdsatest
  • ectest
  • ssltest
0-143
494 return (to);
never executed: return (to);
0
495-
496 if (!BN_copy(&(to->RR), &(from->RR)))
!BN_copy(&(to-..., &(from->RR))Description
TRUEnever evaluated
FALSEevaluated 143 times by 3 tests
Evaluated by:
  • ecdsatest
  • ectest
  • ssltest
0-143
497 return NULL;
never executed: return ((void *)0) ;
0
498 if (!BN_copy(&(to->N), &(from->N)))
!BN_copy(&(to->N), &(from->N))Description
TRUEnever evaluated
FALSEevaluated 143 times by 3 tests
Evaluated by:
  • ecdsatest
  • ectest
  • ssltest
0-143
499 return NULL;
never executed: return ((void *)0) ;
0
500 if (!BN_copy(&(to->Ni), &(from->Ni)))
!BN_copy(&(to-..., &(from->Ni))Description
TRUEnever evaluated
FALSEevaluated 143 times by 3 tests
Evaluated by:
  • ecdsatest
  • ectest
  • ssltest
0-143
501 return NULL;
never executed: return ((void *)0) ;
0
502 to->ri = from->ri;-
503 to->n0[0] = from->n0[0];-
504 to->n0[1] = from->n0[1];-
505 return (to);
executed 143 times by 3 tests: return (to);
Executed by:
  • ecdsatest
  • ectest
  • ssltest
143
506}-
507-
508BN_MONT_CTX *-
509BN_MONT_CTX_set_locked(BN_MONT_CTX **pmont, int lock, const BIGNUM *mod,-
510 BN_CTX *ctx)-
511{-
512 int got_write_lock = 0;-
513 BN_MONT_CTX *ret;-
514-
515 CRYPTO_r_lock(lock);-
516 if (!*pmont) {
!*pmontDescription
TRUEevaluated 386 times by 9 tests
Evaluated by:
  • dhtest
  • dsatest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
FALSEevaluated 1557 times by 6 tests
Evaluated by:
  • dhtest
  • dsatest
  • mont
  • pkcs7test
  • rsa_test
  • ssltest
386-1557
517 CRYPTO_r_unlock(lock);-
518 CRYPTO_w_lock(lock);-
519 got_write_lock = 1;-
520-
521 if (!*pmont) {
!*pmontDescription
TRUEevaluated 386 times by 9 tests
Evaluated by:
  • dhtest
  • dsatest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
FALSEnever evaluated
0-386
522 ret = BN_MONT_CTX_new();-
523 if (ret && !BN_MONT_CTX_set(ret, mod, ctx))
retDescription
TRUEevaluated 386 times by 9 tests
Evaluated by:
  • dhtest
  • dsatest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
FALSEnever evaluated
!BN_MONT_CTX_s...ret, mod, ctx)Description
TRUEnever evaluated
FALSEevaluated 386 times by 9 tests
Evaluated by:
  • dhtest
  • dsatest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
0-386
524 BN_MONT_CTX_free(ret);
never executed: BN_MONT_CTX_free(ret);
0
525 else-
526 *pmont = ret;
executed 386 times by 9 tests: *pmont = ret;
Executed by:
  • dhtest
  • dsatest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
386
527 }-
528 }
executed 386 times by 9 tests: end of block
Executed by:
  • dhtest
  • dsatest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
386
529-
530 ret = *pmont;-
531-
532 if (got_write_lock)
got_write_lockDescription
TRUEevaluated 386 times by 9 tests
Evaluated by:
  • dhtest
  • dsatest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
FALSEevaluated 1557 times by 6 tests
Evaluated by:
  • dhtest
  • dsatest
  • mont
  • pkcs7test
  • rsa_test
  • ssltest
386-1557
533 CRYPTO_w_unlock(lock);
executed 386 times by 9 tests: CRYPTO_lock(2|8,lock,__FILE__,533);
Executed by:
  • dhtest
  • dsatest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
386
534 else-
535 CRYPTO_r_unlock(lock);
executed 1557 times by 6 tests: CRYPTO_lock(2|4,lock,__FILE__,535);
Executed by:
  • dhtest
  • dsatest
  • mont
  • pkcs7test
  • rsa_test
  • ssltest
1557
536-
537 return ret;
executed 1943 times by 9 tests: return ret;
Executed by:
  • dhtest
  • dsatest
  • libcrypto.so.44.0.1
  • mont
  • pkcs7test
  • rsa_test
  • servertest
  • ssltest
  • tlstest
1943
538}-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.2.2