Line | Source | Count |
1 | | - |
2 | | - |
3 | | - |
4 | int RSA_X931_derive_ex(RSA *rsa, BIGNUM *p1, BIGNUM *p2, BIGNUM *q1, | - |
5 | BIGNUM *q2, const BIGNUM *Xp1, const BIGNUM *Xp2, | - |
6 | const BIGNUM *Xp, const BIGNUM *Xq1, const BIGNUM *Xq2, | - |
7 | const BIGNUM *Xq, const BIGNUM *e, BN_GENCB *cb) | - |
8 | { | - |
9 | BIGNUM *r0 = | - |
10 | ((void *)0) | - |
11 | , *r1 = | - |
12 | ((void *)0) | - |
13 | , *r2 = | - |
14 | ((void *)0) | - |
15 | , *r3 = | - |
16 | ((void *)0) | - |
17 | ; | - |
18 | BN_CTX *ctx = | - |
19 | ((void *)0) | - |
20 | , *ctx2 = | - |
21 | ((void *)0) | - |
22 | ; | - |
23 | int ret = 0; | - |
24 | | - |
25 | if (!rsaTRUE | never evaluated | FALSE | never evaluated |
) | 0 |
26 | goto never executed: goto err; err;never executed: goto err; | 0 |
27 | | - |
28 | ctx = BN_CTX_new(); | - |
29 | if (ctx == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
30 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
31 | ) | - |
32 | goto never executed: goto err; err;never executed: goto err; | 0 |
33 | BN_CTX_start(ctx); | - |
34 | | - |
35 | r0 = BN_CTX_get(ctx); | - |
36 | r1 = BN_CTX_get(ctx); | - |
37 | r2 = BN_CTX_get(ctx); | - |
38 | r3 = BN_CTX_get(ctx); | - |
39 | | - |
40 | if (r3 == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
41 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
42 | ) | - |
43 | goto never executed: goto err; err;never executed: goto err; | 0 |
44 | if (!rsa->eTRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
45 | rsa->e = BN_dup(e); | - |
46 | if (!rsa->eTRUE | never evaluated | FALSE | never evaluated |
) | 0 |
47 | goto never executed: goto err; err;never executed: goto err; | 0 |
48 | } never executed: end of block else { | 0 |
49 | e = rsa->e; | - |
50 | } never executed: end of block | 0 |
51 | | - |
52 | | - |
53 | | - |
54 | | - |
55 | | - |
56 | | - |
57 | if (XpTRUE | never evaluated | FALSE | never evaluated |
&& rsa->p == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
58 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
59 | ) { | - |
60 | rsa->p = BN_new(); | - |
61 | if (rsa->p == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
62 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
63 | ) | - |
64 | goto never executed: goto err; err;never executed: goto err; | 0 |
65 | | - |
66 | if (!BN_X931_derive_prime_ex(rsa->p, p1, p2,TRUE | never evaluated | FALSE | never evaluated |
| 0 |
67 | Xp, Xp1, Xp2, e, ctx, cb)TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
68 | goto never executed: goto err; err;never executed: goto err; | 0 |
69 | } never executed: end of block | 0 |
70 | | - |
71 | if (XqTRUE | never evaluated | FALSE | never evaluated |
&& rsa->q == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
72 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
73 | ) { | - |
74 | rsa->q = BN_new(); | - |
75 | if (rsa->q == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
76 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
77 | ) | - |
78 | goto never executed: goto err; err;never executed: goto err; | 0 |
79 | if (!BN_X931_derive_prime_ex(rsa->q, q1, q2,TRUE | never evaluated | FALSE | never evaluated |
| 0 |
80 | Xq, Xq1, Xq2, e, ctx, cb)TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
81 | goto never executed: goto err; err;never executed: goto err; | 0 |
82 | } never executed: end of block | 0 |
83 | | - |
84 | if (rsa->p == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
85 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
86 | || rsa->q == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
87 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
88 | ) { | - |
89 | BN_CTX_end(ctx); | - |
90 | BN_CTX_free(ctx); | - |
91 | return never executed: return 2; 2;never executed: return 2; | 0 |
92 | } | - |
93 | | - |
94 | | - |
95 | | - |
96 | | - |
97 | | - |
98 | | - |
99 | | - |
100 | rsa->n = BN_new(); | - |
101 | if (rsa->n == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
102 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
103 | ) | - |
104 | goto never executed: goto err; err;never executed: goto err; | 0 |
105 | if (!BN_mul(rsa->n, rsa->p, rsa->q, ctx)TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
106 | goto never executed: goto err; err;never executed: goto err; | 0 |
107 | | - |
108 | | - |
109 | if (!BN_sub(r1, rsa->p, BN_value_one())TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
110 | goto never executed: goto err; err;never executed: goto err; | 0 |
111 | if (!BN_sub(r2, rsa->q, BN_value_one())TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
112 | goto never executed: goto err; err;never executed: goto err; | 0 |
113 | if (!BN_mul(r0, r1, r2, ctx)TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
114 | goto never executed: goto err; err;never executed: goto err; | 0 |
115 | | - |
116 | if (!BN_gcd(r3, r1, r2, ctx)TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
117 | goto never executed: goto err; err;never executed: goto err; | 0 |
118 | | - |
119 | if (!BN_div(r0, TRUE | never evaluated | FALSE | never evaluated |
| 0 |
120 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
121 | , r0, r3, ctx)TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
122 | goto never executed: goto err; err;never executed: goto err; | 0 |
123 | | - |
124 | ctx2 = BN_CTX_new(); | - |
125 | if (ctx2 == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
126 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
127 | ) | - |
128 | goto never executed: goto err; err;never executed: goto err; | 0 |
129 | | - |
130 | rsa->d = BN_mod_inverse( | - |
131 | ((void *)0) | - |
132 | , rsa->e, r0, ctx2); | - |
133 | if (rsa->d == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
134 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
135 | ) | - |
136 | goto never executed: goto err; err;never executed: goto err; | 0 |
137 | | - |
138 | | - |
139 | rsa->dmp1 = BN_new(); | - |
140 | if (rsa->dmp1 == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
141 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
142 | ) | - |
143 | goto never executed: goto err; err;never executed: goto err; | 0 |
144 | if (!BN_div(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
145 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
146 | ,(rsa->dmp1),(rsa->d),(r1),(ctx))TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
147 | goto never executed: goto err; err;never executed: goto err; | 0 |
148 | | - |
149 | | - |
150 | rsa->dmq1 = BN_new(); | - |
151 | if (rsa->dmq1 == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
152 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
153 | ) | - |
154 | goto never executed: goto err; err;never executed: goto err; | 0 |
155 | if (!BN_div(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
156 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
157 | ,(rsa->dmq1),(rsa->d),(r2),(ctx))TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
158 | goto never executed: goto err; err;never executed: goto err; | 0 |
159 | | - |
160 | | - |
161 | rsa->iqmp = BN_mod_inverse( | - |
162 | ((void *)0) | - |
163 | , rsa->q, rsa->p, ctx2); | - |
164 | | - |
165 | ret = 1; | - |
166 | err: code before this statement never executed: err: | 0 |
167 | if (ctxTRUE | never evaluated | FALSE | never evaluated |
) | 0 |
168 | BN_CTX_end(ctx); never executed: BN_CTX_end(ctx); | 0 |
169 | BN_CTX_free(ctx); | - |
170 | BN_CTX_free(ctx2); | - |
171 | | - |
172 | return never executed: return ret; ret;never executed: return ret; | 0 |
173 | | - |
174 | } | - |
175 | | - |
176 | int RSA_X931_generate_key_ex(RSA *rsa, int bits, const BIGNUM *e, | - |
177 | BN_GENCB *cb) | - |
178 | { | - |
179 | int ok = 0; | - |
180 | BIGNUM *Xp = | - |
181 | ((void *)0) | - |
182 | , *Xq = | - |
183 | ((void *)0) | - |
184 | ; | - |
185 | BN_CTX *ctx = | - |
186 | ((void *)0) | - |
187 | ; | - |
188 | | - |
189 | ctx = BN_CTX_new(); | - |
190 | if (ctx == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
191 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
192 | ) | - |
193 | goto never executed: goto error; error;never executed: goto error; | 0 |
194 | | - |
195 | BN_CTX_start(ctx); | - |
196 | Xp = BN_CTX_get(ctx); | - |
197 | Xq = BN_CTX_get(ctx); | - |
198 | if (Xq == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
199 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
200 | ) | - |
201 | goto never executed: goto error; error;never executed: goto error; | 0 |
202 | if (!BN_X931_generate_Xpq(Xp, Xq, bits, ctx)TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
203 | goto never executed: goto error; error;never executed: goto error; | 0 |
204 | | - |
205 | rsa->p = BN_new(); | - |
206 | rsa->q = BN_new(); | - |
207 | if (rsa->p == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
208 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
209 | || rsa->q == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
210 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
211 | ) | - |
212 | goto never executed: goto error; error;never executed: goto error; | 0 |
213 | | - |
214 | | - |
215 | | - |
216 | if (!BN_X931_generate_prime_ex(rsa->p, TRUE | never evaluated | FALSE | never evaluated |
| 0 |
217 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
218 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
219 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
220 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
221 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
222 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
223 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
224 | , Xp,TRUE | never evaluated | FALSE | never evaluated |
| 0 |
225 | e, ctx, cb)TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
226 | goto never executed: goto error; error;never executed: goto error; | 0 |
227 | | - |
228 | if (!BN_X931_generate_prime_ex(rsa->q, TRUE | never evaluated | FALSE | never evaluated |
| 0 |
229 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
230 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
231 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
232 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
233 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
234 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
235 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
236 | , Xq,TRUE | never evaluated | FALSE | never evaluated |
| 0 |
237 | e, ctx, cb)TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
238 | goto never executed: goto error; error;never executed: goto error; | 0 |
239 | | - |
240 | | - |
241 | | - |
242 | | - |
243 | | - |
244 | | - |
245 | if (!RSA_X931_derive_ex(rsa, TRUE | never evaluated | FALSE | never evaluated |
| 0 |
246 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
247 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
248 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
249 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
250 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
251 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
252 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
253 | ,TRUE | never evaluated | FALSE | never evaluated |
| 0 |
254 | TRUE | never evaluated | FALSE | never evaluated |
| 0 |
255 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
256 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
257 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
258 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
259 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
260 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
261 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
262 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
263 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
264 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
265 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
266 | , e, cb)TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
267 | goto never executed: goto error; error;never executed: goto error; | 0 |
268 | | - |
269 | ok = 1; | - |
270 | | - |
271 | error: code before this statement never executed: error: | 0 |
272 | if (ctxTRUE | never evaluated | FALSE | never evaluated |
) | 0 |
273 | BN_CTX_end(ctx); never executed: BN_CTX_end(ctx); | 0 |
274 | BN_CTX_free(ctx); | - |
275 | | - |
276 | if (okTRUE | never evaluated | FALSE | never evaluated |
) | 0 |
277 | return never executed: return 1; 1;never executed: return 1; | 0 |
278 | | - |
279 | return never executed: return 0; 0;never executed: return 0; | 0 |
280 | | - |
281 | } | - |
| | |