Line | Source | Count |
1 | | - |
2 | | - |
3 | | - |
4 | static BIGNUM *srp_Calc_xy(const BIGNUM *x, const BIGNUM *y, const BIGNUM *N) | - |
5 | { | - |
6 | unsigned char digest[20]; | - |
7 | unsigned char *tmp = | - |
8 | ((void *)0) | - |
9 | ; | - |
10 | int numN = ((BN_num_bits(N)+7)/8); | - |
11 | BIGNUM *res = | - |
12 | ((void *)0) | - |
13 | ; | - |
14 | if (x != NTRUE | evaluated 23 times by 1 test | FALSE | evaluated 26 times by 1 test |
&& BN_ucmp(x, N) >= 0TRUE | never evaluated | FALSE | evaluated 23 times by 1 test |
) | 0-26 |
15 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 |
16 | ((void *)0) never executed: return ((void *)0) ; | 0 |
17 | ; never executed: return ((void *)0) ; | 0 |
18 | if (y != NTRUE | evaluated 49 times by 1 test | FALSE | never evaluated |
&& BN_ucmp(y, N) >= 0TRUE | never evaluated | FALSE | evaluated 49 times by 1 test |
) | 0-49 |
19 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 |
20 | ((void *)0) never executed: return ((void *)0) ; | 0 |
21 | ; never executed: return ((void *)0) ; | 0 |
22 | if ((TRUE | never evaluated | FALSE | evaluated 49 times by 1 test |
tmp = CRYPTO_malloc(numN * 2, __FILE__, 33)) == TRUE | never evaluated | FALSE | evaluated 49 times by 1 test |
| 0-49 |
23 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 49 times by 1 test |
| 0-49 |
24 | ) | - |
25 | goto never executed: goto err; err;never executed: goto err; | 0 |
26 | if (BN_bn2binpad(x, tmp, numN) < 0TRUE | never evaluated | FALSE | evaluated 49 times by 1 test |
| 0-49 |
27 | || BN_bn2binpad(y, tmp + numN, numN) < 0TRUE | never evaluated | FALSE | evaluated 49 times by 1 test |
| 0-49 |
28 | || !EVP_Digest(tmp, numN * 2, digest, TRUE | never evaluated | FALSE | evaluated 49 times by 1 test |
| 0-49 |
29 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 49 times by 1 test |
| 0-49 |
30 | , EVP_sha1(), TRUE | never evaluated | FALSE | evaluated 49 times by 1 test |
| 0-49 |
31 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 49 times by 1 test |
| 0-49 |
32 | )TRUE | never evaluated | FALSE | evaluated 49 times by 1 test |
) | 0-49 |
33 | goto never executed: goto err; err;never executed: goto err; | 0 |
34 | res = BN_bin2bn(digest, sizeof(digest), | - |
35 | ((void *)0) | - |
36 | ); | - |
37 | err:code before this statement executed 49 times by 1 test: err: | 49 |
38 | CRYPTO_free(tmp, __FILE__, 41); | - |
39 | returnexecuted 49 times by 1 test: return res; res;executed 49 times by 1 test: return res; | 49 |
40 | } | - |
41 | | - |
42 | static BIGNUM *srp_Calc_k(const BIGNUM *N, const BIGNUM *g) | - |
43 | { | - |
44 | | - |
45 | returnexecuted 26 times by 1 test: return srp_Calc_xy(N, g, N); srp_Calc_xy(N, g, N);executed 26 times by 1 test: return srp_Calc_xy(N, g, N); | 26 |
46 | } | - |
47 | | - |
48 | BIGNUM *SRP_Calc_u(const BIGNUM *A, const BIGNUM *B, const BIGNUM *N) | - |
49 | { | - |
50 | | - |
51 | returnexecuted 23 times by 1 test: return srp_Calc_xy(A, B, N); srp_Calc_xy(A, B, N);executed 23 times by 1 test: return srp_Calc_xy(A, B, N); | 23 |
52 | } | - |
53 | | - |
54 | BIGNUM *SRP_Calc_server_key(const BIGNUM *A, const BIGNUM *v, const BIGNUM *u, | - |
55 | const BIGNUM *b, const BIGNUM *N) | - |
56 | { | - |
57 | BIGNUM *tmp = | - |
58 | ((void *)0) | - |
59 | , *S = | - |
60 | ((void *)0) | - |
61 | ; | - |
62 | BN_CTX *bn_ctx; | - |
63 | | - |
64 | if (u == TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
65 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
66 | || A == TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
67 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
68 | || v == TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
69 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
70 | || b == TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
71 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
72 | || N == TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
73 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
74 | ) | - |
75 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 |
76 | ((void *)0) never executed: return ((void *)0) ; | 0 |
77 | ; never executed: return ((void *)0) ; | 0 |
78 | | - |
79 | if ((TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
bn_ctx = BN_CTX_new()) == TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
80 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
81 | || (TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
tmp = BN_new()) == TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
82 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
83 | ) | - |
84 | goto never executed: goto err; err;never executed: goto err; | 0 |
85 | | - |
86 | | - |
87 | | - |
88 | if (!BN_mod_exp(tmp, v, u, N, bn_ctx)TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
) | 0-13 |
89 | goto never executed: goto err; err;never executed: goto err; | 0 |
90 | if (!BN_mod_mul(tmp, A, tmp, N, bn_ctx)TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
) | 0-13 |
91 | goto never executed: goto err; err;never executed: goto err; | 0 |
92 | | - |
93 | S = BN_new(); | - |
94 | if (S != TRUE | evaluated 13 times by 1 test | FALSE | never evaluated |
| 0-13 |
95 | ((void *)0)TRUE | evaluated 13 times by 1 test | FALSE | never evaluated |
| 0-13 |
96 | && !BN_mod_exp(S, tmp, b, N, bn_ctx)TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
) { | 0-13 |
97 | BN_free(S); | - |
98 | S = | - |
99 | ((void *)0) | - |
100 | ; | - |
101 | } never executed: end of block | 0 |
102 | err:code before this statement executed 13 times by 1 test: err: | 13 |
103 | BN_CTX_free(bn_ctx); | - |
104 | BN_clear_free(tmp); | - |
105 | returnexecuted 13 times by 1 test: return S; S;executed 13 times by 1 test: return S; | 13 |
106 | } | - |
107 | | - |
108 | BIGNUM *SRP_Calc_B(const BIGNUM *b, const BIGNUM *N, const BIGNUM *g, | - |
109 | const BIGNUM *v) | - |
110 | { | - |
111 | BIGNUM *kv = | - |
112 | ((void *)0) | - |
113 | , *gb = | - |
114 | ((void *)0) | - |
115 | ; | - |
116 | BIGNUM *B = | - |
117 | ((void *)0) | - |
118 | , *k = | - |
119 | ((void *)0) | - |
120 | ; | - |
121 | BN_CTX *bn_ctx; | - |
122 | | - |
123 | if (b == TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
124 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
125 | || N == TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
126 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
127 | || g == TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
128 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
129 | || v == TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
130 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
131 | || | - |
132 | (TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
bn_ctx = BN_CTX_new()) == TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
133 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
134 | ) | - |
135 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 |
136 | ((void *)0) never executed: return ((void *)0) ; | 0 |
137 | ; never executed: return ((void *)0) ; | 0 |
138 | | - |
139 | if ((TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
kv = BN_new()) == TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
140 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
141 | || | - |
142 | (TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
gb = BN_new()) == TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
143 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
144 | || (TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
B = BN_new()) == TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
145 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
146 | ) | - |
147 | goto never executed: goto err; err;never executed: goto err; | 0 |
148 | | - |
149 | | - |
150 | | - |
151 | if (!BN_mod_exp(gb, g, b, N, bn_ctx)TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
152 | || (TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
k = srp_Calc_k(N, g)) == TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
153 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
154 | | - |
155 | || !BN_mod_mul(kv, v, k, N, bn_ctx)TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
156 | || !BN_mod_add(B, gb, kv, N, bn_ctx)TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
) { | 0-13 |
157 | BN_free(B); | - |
158 | B = | - |
159 | ((void *)0) | - |
160 | ; | - |
161 | } never executed: end of block | 0 |
162 | err:code before this statement executed 13 times by 1 test: err: | 13 |
163 | BN_CTX_free(bn_ctx); | - |
164 | BN_clear_free(kv); | - |
165 | BN_clear_free(gb); | - |
166 | BN_free(k); | - |
167 | returnexecuted 13 times by 1 test: return B; B;executed 13 times by 1 test: return B; | 13 |
168 | } | - |
169 | | - |
170 | BIGNUM *SRP_Calc_x(const BIGNUM *s, const char *user, const char *pass) | - |
171 | { | - |
172 | unsigned char dig[20]; | - |
173 | EVP_MD_CTX *ctxt; | - |
174 | unsigned char *cs = | - |
175 | ((void *)0) | - |
176 | ; | - |
177 | BIGNUM *res = | - |
178 | ((void *)0) | - |
179 | ; | - |
180 | | - |
181 | if ((TRUE | never evaluated | FALSE | evaluated 24 times by 1 test |
s == TRUE | never evaluated | FALSE | evaluated 24 times by 1 test |
| 0-24 |
182 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 24 times by 1 test |
| 0-24 |
183 | )TRUE | never evaluated | FALSE | evaluated 24 times by 1 test |
|| (TRUE | never evaluated | FALSE | evaluated 24 times by 1 test |
user == TRUE | never evaluated | FALSE | evaluated 24 times by 1 test |
| 0-24 |
184 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 24 times by 1 test |
| 0-24 |
185 | )TRUE | never evaluated | FALSE | evaluated 24 times by 1 test |
|| (TRUE | never evaluated | FALSE | evaluated 24 times by 1 test |
pass == TRUE | never evaluated | FALSE | evaluated 24 times by 1 test |
| 0-24 |
186 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 24 times by 1 test |
| 0-24 |
187 | )TRUE | never evaluated | FALSE | evaluated 24 times by 1 test |
) | 0-24 |
188 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 |
189 | ((void *)0) never executed: return ((void *)0) ; | 0 |
190 | ; never executed: return ((void *)0) ; | 0 |
191 | | - |
192 | ctxt = EVP_MD_CTX_new(); | - |
193 | if (ctxt == TRUE | never evaluated | FALSE | evaluated 24 times by 1 test |
| 0-24 |
194 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 24 times by 1 test |
| 0-24 |
195 | ) | - |
196 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 |
197 | ((void *)0) never executed: return ((void *)0) ; | 0 |
198 | ; never executed: return ((void *)0) ; | 0 |
199 | if ((TRUE | never evaluated | FALSE | evaluated 24 times by 1 test |
cs = CRYPTO_malloc(((BN_num_bits(s)+7)/8), __FILE__, 132)) == TRUE | never evaluated | FALSE | evaluated 24 times by 1 test |
| 0-24 |
200 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 24 times by 1 test |
| 0-24 |
201 | ) | - |
202 | goto never executed: goto err; err;never executed: goto err; | 0 |
203 | | - |
204 | if (!EVP_DigestInit_ex(ctxt, EVP_sha1(), TRUE | never evaluated | FALSE | evaluated 24 times by 1 test |
| 0-24 |
205 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 24 times by 1 test |
| 0-24 |
206 | )TRUE | never evaluated | FALSE | evaluated 24 times by 1 test |
| 0-24 |
207 | || !EVP_DigestUpdate(ctxt, user, strlen(user))TRUE | never evaluated | FALSE | evaluated 24 times by 1 test |
| 0-24 |
208 | || !EVP_DigestUpdate(ctxt, ":", 1)TRUE | never evaluated | FALSE | evaluated 24 times by 1 test |
| 0-24 |
209 | || !EVP_DigestUpdate(ctxt, pass, strlen(pass))TRUE | never evaluated | FALSE | evaluated 24 times by 1 test |
| 0-24 |
210 | || !EVP_DigestFinal_ex(ctxt, dig, TRUE | never evaluated | FALSE | evaluated 24 times by 1 test |
| 0-24 |
211 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 24 times by 1 test |
| 0-24 |
212 | )TRUE | never evaluated | FALSE | evaluated 24 times by 1 test |
| 0-24 |
213 | || !EVP_DigestInit_ex(ctxt, EVP_sha1(), TRUE | never evaluated | FALSE | evaluated 24 times by 1 test |
| 0-24 |
214 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 24 times by 1 test |
| 0-24 |
215 | )TRUE | never evaluated | FALSE | evaluated 24 times by 1 test |
) | 0-24 |
216 | goto never executed: goto err; err;never executed: goto err; | 0 |
217 | BN_bn2bin(s, cs); | - |
218 | if (!EVP_DigestUpdate(ctxt, cs, ((BN_num_bits(s)+7)/8))TRUE | never evaluated | FALSE | evaluated 24 times by 1 test |
) | 0-24 |
219 | goto never executed: goto err; err;never executed: goto err; | 0 |
220 | | - |
221 | if (!EVP_DigestUpdate(ctxt, dig, sizeof(dig))TRUE | never evaluated | FALSE | evaluated 24 times by 1 test |
| 0-24 |
222 | || !EVP_DigestFinal_ex(ctxt, dig, TRUE | never evaluated | FALSE | evaluated 24 times by 1 test |
| 0-24 |
223 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 24 times by 1 test |
| 0-24 |
224 | )TRUE | never evaluated | FALSE | evaluated 24 times by 1 test |
) | 0-24 |
225 | goto never executed: goto err; err;never executed: goto err; | 0 |
226 | | - |
227 | res = BN_bin2bn(dig, sizeof(dig), | - |
228 | ((void *)0) | - |
229 | ); | - |
230 | | - |
231 | err:code before this statement executed 24 times by 1 test: err: | 24 |
232 | CRYPTO_free(cs, __FILE__, 153); | - |
233 | EVP_MD_CTX_free(ctxt); | - |
234 | returnexecuted 24 times by 1 test: return res; res;executed 24 times by 1 test: return res; | 24 |
235 | } | - |
236 | | - |
237 | BIGNUM *SRP_Calc_A(const BIGNUM *a, const BIGNUM *N, const BIGNUM *g) | - |
238 | { | - |
239 | BN_CTX *bn_ctx; | - |
240 | BIGNUM *A = | - |
241 | ((void *)0) | - |
242 | ; | - |
243 | | - |
244 | if (a == TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
245 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
246 | || N == TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
247 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
248 | || g == TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
249 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
250 | || (TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
bn_ctx = BN_CTX_new()) == TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
251 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
252 | ) | - |
253 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 |
254 | ((void *)0) never executed: return ((void *)0) ; | 0 |
255 | ; never executed: return ((void *)0) ; | 0 |
256 | | - |
257 | if ((TRUE | evaluated 13 times by 1 test | FALSE | never evaluated |
A = BN_new()) != TRUE | evaluated 13 times by 1 test | FALSE | never evaluated |
| 0-13 |
258 | ((void *)0)TRUE | evaluated 13 times by 1 test | FALSE | never evaluated |
| 0-13 |
259 | && !BN_mod_exp(A, g, a, N, bn_ctx)TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
) { | 0-13 |
260 | BN_free(A); | - |
261 | A = | - |
262 | ((void *)0) | - |
263 | ; | - |
264 | } never executed: end of block | 0 |
265 | BN_CTX_free(bn_ctx); | - |
266 | returnexecuted 13 times by 1 test: return A; A;executed 13 times by 1 test: return A; | 13 |
267 | } | - |
268 | | - |
269 | BIGNUM *SRP_Calc_client_key(const BIGNUM *N, const BIGNUM *B, const BIGNUM *g, | - |
270 | const BIGNUM *x, const BIGNUM *a, const BIGNUM *u) | - |
271 | { | - |
272 | BIGNUM *tmp = | - |
273 | ((void *)0) | - |
274 | , *tmp2 = | - |
275 | ((void *)0) | - |
276 | , *tmp3 = | - |
277 | ((void *)0) | - |
278 | , *k = | - |
279 | ((void *)0) | - |
280 | , *K = | - |
281 | ((void *)0) | - |
282 | ; | - |
283 | BN_CTX *bn_ctx; | - |
284 | | - |
285 | if (u == TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
286 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
287 | || B == TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
288 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
289 | || N == TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
290 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
291 | || g == TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
292 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
293 | || x == TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
294 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
295 | | - |
296 | || a == TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
297 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
298 | || (TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
bn_ctx = BN_CTX_new()) == TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
299 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
300 | ) | - |
301 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 |
302 | ((void *)0) never executed: return ((void *)0) ; | 0 |
303 | ; never executed: return ((void *)0) ; | 0 |
304 | | - |
305 | if ((TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
tmp = BN_new()) == TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
306 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
307 | || | - |
308 | (TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
tmp2 = BN_new()) == TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
309 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
310 | || | - |
311 | (TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
tmp3 = BN_new()) == TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
312 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
313 | ) | - |
314 | goto never executed: goto err; err;never executed: goto err; | 0 |
315 | | - |
316 | if (!BN_mod_exp(tmp, g, x, N, bn_ctx)TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
) | 0-13 |
317 | goto never executed: goto err; err;never executed: goto err; | 0 |
318 | if ((TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
k = srp_Calc_k(N, g)) == TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
319 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
| 0-13 |
320 | ) | - |
321 | goto never executed: goto err; err;never executed: goto err; | 0 |
322 | if (!BN_mod_mul(tmp2, tmp, k, N, bn_ctx)TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
) | 0-13 |
323 | goto never executed: goto err; err;never executed: goto err; | 0 |
324 | if (!BN_mod_sub(tmp, B, tmp2, N, bn_ctx)TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
) | 0-13 |
325 | goto never executed: goto err; err;never executed: goto err; | 0 |
326 | if (!BN_mul(tmp3, u, x, bn_ctx)TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
) | 0-13 |
327 | goto never executed: goto err; err;never executed: goto err; | 0 |
328 | if (!BN_add(tmp2, a, tmp3)TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
) | 0-13 |
329 | goto never executed: goto err; err;never executed: goto err; | 0 |
330 | K = BN_new(); | - |
331 | if (K != TRUE | evaluated 13 times by 1 test | FALSE | never evaluated |
| 0-13 |
332 | ((void *)0)TRUE | evaluated 13 times by 1 test | FALSE | never evaluated |
| 0-13 |
333 | && !BN_mod_exp(K, tmp, tmp2, N, bn_ctx)TRUE | never evaluated | FALSE | evaluated 13 times by 1 test |
) { | 0-13 |
334 | BN_free(K); | - |
335 | K = | - |
336 | ((void *)0) | - |
337 | ; | - |
338 | } never executed: end of block | 0 |
339 | | - |
340 | err:code before this statement executed 13 times by 1 test: err: | 13 |
341 | BN_CTX_free(bn_ctx); | - |
342 | BN_clear_free(tmp); | - |
343 | BN_clear_free(tmp2); | - |
344 | BN_clear_free(tmp3); | - |
345 | BN_free(k); | - |
346 | returnexecuted 13 times by 1 test: return K; K;executed 13 times by 1 test: return K; | 13 |
347 | } | - |
348 | | - |
349 | int SRP_Verify_B_mod_N(const BIGNUM *B, const BIGNUM *N) | - |
350 | { | - |
351 | BIGNUM *r; | - |
352 | BN_CTX *bn_ctx; | - |
353 | int ret = 0; | - |
354 | | - |
355 | if (B == TRUE | never evaluated | FALSE | evaluated 26 times by 1 test |
| 0-26 |
356 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 26 times by 1 test |
| 0-26 |
357 | || N == TRUE | never evaluated | FALSE | evaluated 26 times by 1 test |
| 0-26 |
358 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 26 times by 1 test |
| 0-26 |
359 | || (TRUE | never evaluated | FALSE | evaluated 26 times by 1 test |
bn_ctx = BN_CTX_new()) == TRUE | never evaluated | FALSE | evaluated 26 times by 1 test |
| 0-26 |
360 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 26 times by 1 test |
| 0-26 |
361 | ) | - |
362 | return never executed: return 0; 0;never executed: return 0; | 0 |
363 | | - |
364 | if ((TRUE | never evaluated | FALSE | evaluated 26 times by 1 test |
r = BN_new()) == TRUE | never evaluated | FALSE | evaluated 26 times by 1 test |
| 0-26 |
365 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 26 times by 1 test |
| 0-26 |
366 | ) | - |
367 | goto never executed: goto err; err;never executed: goto err; | 0 |
368 | | - |
369 | if (!BN_nnmod(r, B, N, bn_ctx)TRUE | never evaluated | FALSE | evaluated 26 times by 1 test |
) | 0-26 |
370 | goto never executed: goto err; err;never executed: goto err; | 0 |
371 | ret = !BN_is_zero(r); | - |
372 | err:code before this statement executed 26 times by 1 test: err: | 26 |
373 | BN_CTX_free(bn_ctx); | - |
374 | BN_free(r); | - |
375 | returnexecuted 26 times by 1 test: return ret; ret;executed 26 times by 1 test: return ret; | 26 |
376 | } | - |
377 | | - |
378 | int SRP_Verify_A_mod_N(const BIGNUM *A, const BIGNUM *N) | - |
379 | { | - |
380 | | - |
381 | returnexecuted 13 times by 1 test: return SRP_Verify_B_mod_N(A, N); SRP_Verify_B_mod_N(A, N);executed 13 times by 1 test: return SRP_Verify_B_mod_N(A, N); | 13 |
382 | } | - |
383 | | - |
384 | static SRP_gN knowngN[] = { | - |
385 | {"8192", &bn_generator_19, &bn_group_8192}, | - |
386 | {"6144", &bn_generator_5, &bn_group_6144}, | - |
387 | {"4096", &bn_generator_5, &bn_group_4096}, | - |
388 | {"3072", &bn_generator_5, &bn_group_3072}, | - |
389 | {"2048", &bn_generator_2, &bn_group_2048}, | - |
390 | {"1536", &bn_generator_2, &bn_group_1536}, | - |
391 | {"1024", &bn_generator_2, &bn_group_1024}, | - |
392 | }; | - |
393 | | - |
394 | | - |
395 | | - |
396 | | - |
397 | | - |
398 | | - |
399 | | - |
400 | char *SRP_check_known_gN_param(const BIGNUM *g, const BIGNUM *N) | - |
401 | { | - |
402 | size_t i; | - |
403 | if ((TRUE | never evaluated | FALSE | evaluated 10 times by 1 test |
g == TRUE | never evaluated | FALSE | evaluated 10 times by 1 test |
| 0-10 |
404 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 10 times by 1 test |
| 0-10 |
405 | )TRUE | never evaluated | FALSE | evaluated 10 times by 1 test |
|| (TRUE | never evaluated | FALSE | evaluated 10 times by 1 test |
N == TRUE | never evaluated | FALSE | evaluated 10 times by 1 test |
| 0-10 |
406 | ((void *)0)TRUE | never evaluated | FALSE | evaluated 10 times by 1 test |
| 0-10 |
407 | )TRUE | never evaluated | FALSE | evaluated 10 times by 1 test |
) | 0-10 |
408 | return never executed: return 0; 0;never executed: return 0; | 0 |
409 | | - |
410 | for (i = 0; i < sizeof(knowngN) / sizeof(SRP_gN)TRUE | evaluated 26 times by 1 test | FALSE | never evaluated |
; i++) { | 0-26 |
411 | if (BN_cmp(knowngN[i].g, g) == 0TRUE | evaluated 10 times by 1 test | FALSE | evaluated 16 times by 1 test |
&& BN_cmp(knowngN[i].N, N) == 0TRUE | evaluated 10 times by 1 test | FALSE | never evaluated |
) | 0-16 |
412 | returnexecuted 10 times by 1 test: return knowngN[i].id; knowngN[i].id;executed 10 times by 1 test: return knowngN[i].id; | 10 |
413 | }executed 16 times by 1 test: end of block | 16 |
414 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 |
415 | ((void *)0) never executed: return ((void *)0) ; | 0 |
416 | ; never executed: return ((void *)0) ; | 0 |
417 | } | - |
418 | | - |
419 | SRP_gN *SRP_get_default_gN(const char *id) | - |
420 | { | - |
421 | size_t i; | - |
422 | | - |
423 | if (id == TRUE | evaluated 4 times by 1 test | FALSE | evaluated 11 times by 1 test |
| 4-11 |
424 | ((void *)0)TRUE | evaluated 4 times by 1 test | FALSE | evaluated 11 times by 1 test |
| 4-11 |
425 | ) | - |
426 | returnexecuted 4 times by 1 test: return knowngN; knowngN;executed 4 times by 1 test: return knowngN; | 4 |
427 | for (i = 0; i < sizeof(knowngN) / sizeof(SRP_gN)TRUE | evaluated 45 times by 1 test | FALSE | never evaluated |
; i++) { | 0-45 |
428 | if ( | - |
429 | __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (TRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
430 | knowngN[i].idTRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
431 | ) && __builtin_constant_p (TRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
432 | idTRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
433 | ) && (__s1_len = __builtin_strlen (TRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
434 | knowngN[i].idTRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
435 | ), __s2_len = __builtin_strlen (TRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
436 | idTRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
437 | ), (!((size_t)(const void *)((TRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
438 | knowngN[i].idTRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
439 | ) + 1) - (size_t)(const void *)(TRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
440 | knowngN[i].idTRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
441 | ) == 1) || __s1_len >= 4) && (!((size_t)(const void *)((TRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
442 | idTRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
443 | ) + 1) - (size_t)(const void *)(TRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
444 | idTRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
445 | ) == 1) || __s2_len >= 4)) ? __builtin_strcmp (TRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
446 | knowngN[i].idTRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
447 | , TRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
448 | idTRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
449 | ) : (__builtin_constant_p (TRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
450 | knowngN[i].idTRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
451 | ) && ((size_t)(const void *)((TRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
452 | knowngN[i].idTRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
453 | ) + 1) - (size_t)(const void *)(TRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
454 | knowngN[i].idTRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
455 | ) == 1) && (__s1_len = __builtin_strlen (TRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
456 | knowngN[i].idTRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
457 | ), __s1_len < 4) ? (__builtin_constant_p (TRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
458 | idTRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
459 | ) && ((size_t)(const void *)((TRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
460 | idTRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
461 | ) + 1) - (size_t)(const void *)(TRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
462 | idTRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
463 | ) == 1) ? __builtin_strcmp (TRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
464 | knowngN[i].idTRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
465 | , TRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
466 | idTRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
467 | ) : (__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) (TRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
468 | idTRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
469 | ); int __result = (((const unsigned char *) (const char *) (TRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
470 | knowngN[i].idTRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
471 | ))[0] - __s2[0]); if (__s1_len > 0TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) { __result = (((const unsigned char *) (const char *) (TRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 0-34 |
472 | knowngN[i].idTRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
473 | ))[1] - __s2[1]); if (__s1_len > 1TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) { __result = (((const unsigned char *) (const char *) (TRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 0-34 |
474 | knowngN[i].idTRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
475 | ))[2] - __s2[2]); if (__s1_len > 2TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) __result = (((const unsigned char *) (const char *) (never executed: __result = (((const unsigned char *) (const char *) ( knowngN[i].id ))[3] - __s2[3]); TRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 0-34 |
476 | knowngN[i].idTRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
never executed: __result = (((const unsigned char *) (const char *) ( knowngN[i].id ))[3] - __s2[3]); | 0-34 |
477 | ))[3] - __s2[3]);TRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
never executed: __result = (((const unsigned char *) (const char *) ( knowngN[i].id ))[3] - __s2[3]); }never executed: end of block }never executed: end of block __result; }))) : (__builtin_constant_p (TRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 0-34 |
478 | idTRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
479 | ) && ((size_t)(const void *)((TRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
480 | idTRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
481 | ) + 1) - (size_t)(const void *)(TRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
482 | idTRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
483 | ) == 1) && (__s2_len = __builtin_strlen (TRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
484 | idTRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
485 | ), __s2_len < 4) ? (__builtin_constant_p (TRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
486 | knowngN[i].idTRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
487 | ) && ((size_t)(const void *)((TRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
488 | knowngN[i].idTRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
489 | ) + 1) - (size_t)(const void *)(TRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
490 | knowngN[i].idTRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
491 | ) == 1) ? __builtin_strcmp (TRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
492 | knowngN[i].idTRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
493 | , TRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
494 | idTRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
495 | ) : -(__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) (TRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
496 | knowngN[i].idTRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
497 | ); int __result = (((const unsigned char *) (const char *) (TRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
498 | idTRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
499 | ))[0] - __s2[0]); if (__s2_len > 0TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) { __result = (((const unsigned char *) (const char *) (TRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 0-34 |
500 | idTRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
501 | ))[1] - __s2[1]); if (__s2_len > 1TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) { __result = (((const unsigned char *) (const char *) (TRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 0-34 |
502 | idTRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
503 | ))[2] - __s2[2]); if (__s2_len > 2TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) __result = (((const unsigned char *) (const char *) (never executed: __result = (((const unsigned char *) (const char *) ( id ))[3] - __s2[3]); TRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 0-34 |
504 | idTRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
never executed: __result = (((const unsigned char *) (const char *) ( id ))[3] - __s2[3]); | 0-34 |
505 | ))[3] - __s2[3]);TRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
never executed: __result = (((const unsigned char *) (const char *) ( id ))[3] - __s2[3]); }never executed: end of block }never executed: end of block __result; }))) : __builtin_strcmp (TRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 0-34 |
506 | knowngN[i].idTRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
507 | , TRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
508 | idTRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
509 | )))); }) TRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
| 11-34 |
510 | == 0TRUE | evaluated 11 times by 1 test | FALSE | evaluated 34 times by 1 test |
) | 11-34 |
511 | returnexecuted 11 times by 1 test: return knowngN + i; knowngN + i;executed 11 times by 1 test: return knowngN + i; | 11 |
512 | }executed 34 times by 1 test: end of block | 34 |
513 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 |
514 | ((void *)0) never executed: return ((void *)0) ; | 0 |
515 | ; never executed: return ((void *)0) ; | 0 |
516 | } | - |
| | |