OpenCoverage

gostr341001.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/libressl/src/crypto/gost/gostr341001.c
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3-
4-
5-
6-
7BIGNUM *-
8GOST_le2bn(const unsigned char *buf, size_t len, BIGNUM *bn)-
9{-
10 unsigned char temp[64];-
11 int i;-
12-
13 if (len > 64
len > 64Description
TRUEnever evaluated
FALSEnever evaluated
)
0
14 return
never executed: return ((void *)0) ;
never executed: return ((void *)0) ;
0
15 ((void *)0)
never executed: return ((void *)0) ;
0
16 ;
never executed: return ((void *)0) ;
0
17-
18 for (i = 0; i < len
i < lenDescription
TRUEnever evaluated
FALSEnever evaluated
; i++) {
0
19 temp[len - 1 - i] = buf[i];-
20 }
never executed: end of block
0
21-
22 return
never executed: return BN_bin2bn(temp, len, bn);
BN_bin2bn(temp, len, bn);
never executed: return BN_bin2bn(temp, len, bn);
0
23}-
24-
25int-
26GOST_bn2le(BIGNUM *bn, unsigned char *buf, int len)-
27{-
28 unsigned char temp[64];-
29 int i, bytes;-
30-
31 bytes = ((BN_num_bits(bn)+7)/8);-
32 if (len > 64
len > 64Description
TRUEnever evaluated
FALSEnever evaluated
|| bytes > len
bytes > lenDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
33 return
never executed: return 0;
0;
never executed: return 0;
0
34-
35 BN_bn2bin(bn, temp);-
36-
37 for (i = 0; i < bytes
i < bytesDescription
TRUEnever evaluated
FALSEnever evaluated
; i++) {
0
38 buf[bytes - 1 - i] = temp[i];-
39 }
never executed: end of block
0
40-
41 memset(buf + bytes, 0, len - bytes);-
42-
43 return
never executed: return 1;
1;
never executed: return 1;
0
44}-
45-
46int-
47gost2001_compute_public(GOST_KEY *ec)-
48{-
49 const EC_GROUP *group = GOST_KEY_get0_group(ec);-
50 EC_POINT *pub_key = -
51 ((void *)0)-
52 ;-
53 const BIGNUM *priv_key = -
54 ((void *)0)-
55 ;-
56 BN_CTX *ctx = -
57 ((void *)0)-
58 ;-
59 int ok = 0;-
60-
61 if (group ==
group == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
62 ((void *)0)
group == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
63 ) {-
64 ERR_put_error(50,(0xfff),(112),__FILE__,112);-
65 return
never executed: return 0;
0;
never executed: return 0;
0
66 }-
67 ctx = BN_CTX_new();-
68 if (ctx ==
ctx == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
69 ((void *)0)
ctx == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
70 ) {-
71 ERR_put_error(50,(0xfff),((1|64)),__FILE__,117);-
72 return
never executed: return 0;
0;
never executed: return 0;
0
73 }-
74 BN_CTX_start(ctx);-
75 if ((
(priv_key = GO...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
priv_key = GOST_KEY_get0_private_key(ec)) ==
(priv_key = GO...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
76 ((void *)0)
(priv_key = GO...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
77 )-
78 goto
never executed: goto err;
err;
never executed: goto err;
0
79-
80 pub_key = EC_POINT_new(group);-
81 if (pub_key ==
pub_key == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
82 ((void *)0)
pub_key == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
83 )-
84 goto
never executed: goto err;
err;
never executed: goto err;
0
85 if (EC_POINT_mul(group, pub_key, priv_key,
EC_POINT_mul(g...0) , ctx) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
86 ((void *)0)
EC_POINT_mul(g...0) , ctx) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
87 ,
EC_POINT_mul(g...0) , ctx) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
88 ((void *)0)
EC_POINT_mul(g...0) , ctx) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
89 , ctx) == 0
EC_POINT_mul(g...0) , ctx) == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
90 goto
never executed: goto err;
err;
never executed: goto err;
0
91 if (GOST_KEY_set_public_key(ec, pub_key) == 0
GOST_KEY_set_p... pub_key) == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
92 goto
never executed: goto err;
err;
never executed: goto err;
0
93 ok = 1;-
94-
95 if (ok == 0
ok == 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
96err:-
97 ERR_put_error(50,(0xfff),(16),__FILE__,135);-
98 }
never executed: end of block
0
99 EC_POINT_free(pub_key);-
100 if (ctx !=
ctx != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
101 ((void *)0)
ctx != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
102 ) {-
103 BN_CTX_end(ctx);-
104 BN_CTX_free(ctx);-
105 }
never executed: end of block
0
106 return
never executed: return ok;
ok;
never executed: return ok;
0
107}-
108-
109ECDSA_SIG *-
110gost2001_do_sign(BIGNUM *md, GOST_KEY *eckey)-
111{-
112 ECDSA_SIG *newsig = -
113 ((void *)0)-
114 ;-
115 BIGNUM *order = -
116 ((void *)0)-
117 ;-
118 const EC_GROUP *group;-
119 const BIGNUM *priv_key;-
120 BIGNUM *r = -
121 ((void *)0)-
122 , *s = -
123 ((void *)0)-
124 , *X = -
125 ((void *)0)-
126 , *tmp = -
127 ((void *)0)-
128 , *tmp2 = -
129 ((void *)0)-
130 , *k =-
131 -
132 ((void *)0)-
133 , *e = -
134 ((void *)0)-
135 ;-
136 EC_POINT *C = -
137 ((void *)0)-
138 ;-
139 BN_CTX *ctx = BN_CTX_new();-
140 int ok = 0;-
141-
142 if (ctx ==
ctx == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
143 ((void *)0)
ctx == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
144 ) {-
145 ERR_put_error(50,(0xfff),((1|64)),__FILE__,159);-
146 return
never executed: return ((void *)0) ;
never executed: return ((void *)0) ;
0
147 ((void *)0)
never executed: return ((void *)0) ;
0
148 ;
never executed: return ((void *)0) ;
0
149 }-
150 BN_CTX_start(ctx);-
151 newsig = ECDSA_SIG_new();-
152 if (newsig ==
newsig == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
153 ((void *)0)
newsig == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
154 ) {-
155 ERR_put_error(50,(0xfff),((1|64)),__FILE__,165);-
156 goto
never executed: goto err;
err;
never executed: goto err;
0
157 }-
158 s = newsig->s;-
159 r = newsig->r;-
160 group = GOST_KEY_get0_group(eckey);-
161 if ((
(order = BN_CT...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
order = BN_CTX_get(ctx)) ==
(order = BN_CT...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
162 ((void *)0)
(order = BN_CT...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
163 )-
164 goto
never executed: goto err;
err;
never executed: goto err;
0
165 if (EC_GROUP_get_order(group, order, ctx) == 0
EC_GROUP_get_o...der, ctx) == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
166 goto
never executed: goto err;
err;
never executed: goto err;
0
167 priv_key = GOST_KEY_get0_private_key(eckey);-
168 if ((
(e = BN_CTX_ge...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
e = BN_CTX_get(ctx)) ==
(e = BN_CTX_ge...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
169 ((void *)0)
(e = BN_CTX_ge...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
170 )-
171 goto
never executed: goto err;
err;
never executed: goto err;
0
172 if (BN_div_ct(
BN_div_ct( ((v...r),(ctx)) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
173 ((void *)0)
BN_div_ct( ((v...r),(ctx)) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
174 ,(e),(md),(order),(ctx)) == 0
BN_div_ct( ((v...r),(ctx)) == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
175 goto
never executed: goto err;
err;
never executed: goto err;
0
176 if (((
((e)->top == 0)Description
TRUEnever evaluated
FALSEnever evaluated
e)->top == 0)
((e)->top == 0)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
177 (
never executed: (BN_set_word((e),1));
BN_set_word((e),1));
never executed: (BN_set_word((e),1));
0
178 if ((
(k = BN_CTX_ge...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
k = BN_CTX_get(ctx)) ==
(k = BN_CTX_ge...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
179 ((void *)0)
(k = BN_CTX_ge...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
180 )-
181 goto
never executed: goto err;
err;
never executed: goto err;
0
182 if ((
(X = BN_CTX_ge...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
X = BN_CTX_get(ctx)) ==
(X = BN_CTX_ge...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
183 ((void *)0)
(X = BN_CTX_ge...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
184 )-
185 goto
never executed: goto err;
err;
never executed: goto err;
0
186 if ((
(C = EC_POINT_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
C = EC_POINT_new(group)) ==
(C = EC_POINT_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
187 ((void *)0)
(C = EC_POINT_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
188 )-
189 goto
never executed: goto err;
err;
never executed: goto err;
0
190 do {-
191 do {-
192 if (!BN_rand_range(k, order)
!BN_rand_range(k, order)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
193 ERR_put_error(50,(0xfff),(120),__FILE__,191);-
194 goto
never executed: goto err;
err;
never executed: goto err;
0
195 }-
196-
197-
198-
199-
200-
201 if (BN_add(k, k, order) == 0
BN_add(k, k, order) == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
202 goto
never executed: goto err;
err;
never executed: goto err;
0
203 if (BN_num_bits(k) <= BN_num_bits(order)
BN_num_bits(k)...um_bits(order)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
204 if (BN_add(k, k, order) == 0
BN_add(k, k, order) == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
205 goto
never executed: goto err;
err;
never executed: goto err;
0
206-
207 if (EC_POINT_mul(group, C, k,
EC_POINT_mul(g...0) , ctx) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
208 ((void *)0)
EC_POINT_mul(g...0) , ctx) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
209 ,
EC_POINT_mul(g...0) , ctx) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
210 ((void *)0)
EC_POINT_mul(g...0) , ctx) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
211 , ctx) == 0
EC_POINT_mul(g...0) , ctx) == 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
212 ERR_put_error(50,(0xfff),(16),__FILE__,206);-
213 goto
never executed: goto err;
err;
never executed: goto err;
0
214 }-
215 if (EC_POINT_get_affine_coordinates_GFp(group, C, X,
EC_POINT_get_a...0) , ctx) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
216
EC_POINT_get_a...0) , ctx) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
217 ((void *)0)
EC_POINT_get_a...0) , ctx) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
218 , ctx) == 0
EC_POINT_get_a...0) , ctx) == 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
219 ERR_put_error(50,(0xfff),(16),__FILE__,211);-
220 goto
never executed: goto err;
err;
never executed: goto err;
0
221 }-
222 if (BN_nnmod(r, X, order, ctx) == 0
BN_nnmod(r, X,...der, ctx) == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
223 goto
never executed: goto err;
err;
never executed: goto err;
0
224 }
never executed: end of block
while (((
((r)->top == 0)Description
TRUEnever evaluated
FALSEnever evaluated
r)->top == 0)
((r)->top == 0)Description
TRUEnever evaluated
FALSEnever evaluated
);
0
225-
226 if (tmp ==
tmp == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
227 ((void *)0)
tmp == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
228 ) {-
229 if ((
(tmp = BN_CTX_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
tmp = BN_CTX_get(ctx)) ==
(tmp = BN_CTX_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
230 ((void *)0)
(tmp = BN_CTX_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
231 )-
232 goto
never executed: goto err;
err;
never executed: goto err;
0
233 }
never executed: end of block
0
234 if (BN_mod_mul(tmp, priv_key, r, order, ctx) == 0
BN_mod_mul(tmp...der, ctx) == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
235 goto
never executed: goto err;
err;
never executed: goto err;
0
236 if (tmp2 ==
tmp2 == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
237 ((void *)0)
tmp2 == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
238 ) {-
239 if ((
(tmp2 = BN_CTX...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
tmp2 = BN_CTX_get(ctx)) ==
(tmp2 = BN_CTX...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
240 ((void *)0)
(tmp2 = BN_CTX...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
241 )-
242 goto
never executed: goto err;
err;
never executed: goto err;
0
243 }
never executed: end of block
0
244 if (BN_mod_mul(tmp2, k, e, order, ctx) == 0
BN_mod_mul(tmp...der, ctx) == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
245 goto
never executed: goto err;
err;
never executed: goto err;
0
246 if (BN_mod_add(s, tmp, tmp2, order, ctx) == 0
BN_mod_add(s, ...der, ctx) == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
247 goto
never executed: goto err;
err;
never executed: goto err;
0
248 }
never executed: end of block
while (((
((s)->top == 0)Description
TRUEnever evaluated
FALSEnever evaluated
s)->top == 0)
((s)->top == 0)Description
TRUEnever evaluated
FALSEnever evaluated
);
0
249 ok = 1;-
250-
251err:
code before this statement never executed: err:
0
252 EC_POINT_free(C);-
253 if (ctx !=
ctx != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
254 ((void *)0)
ctx != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
255 ) {-
256 BN_CTX_end(ctx);-
257 BN_CTX_free(ctx);-
258 }
never executed: end of block
0
259 if (ok == 0
ok == 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
260 ECDSA_SIG_free(newsig);-
261 newsig = -
262 ((void *)0)-
263 ;-
264 }
never executed: end of block
0
265 return
never executed: return newsig;
newsig;
never executed: return newsig;
0
266}-
267-
268int-
269gost2001_do_verify(BIGNUM *md, ECDSA_SIG *sig, GOST_KEY *ec)-
270{-
271 BN_CTX *ctx = BN_CTX_new();-
272 const EC_GROUP *group = GOST_KEY_get0_group(ec);-
273 BIGNUM *order;-
274 BIGNUM *e = -
275 ((void *)0)-
276 , *R = -
277 ((void *)0)-
278 , *v = -
279 ((void *)0)-
280 , *z1 = -
281 ((void *)0)-
282 , *z2 = -
283 ((void *)0)-
284 ;-
285 BIGNUM *X = -
286 ((void *)0)-
287 , *tmp = -
288 ((void *)0)-
289 ;-
290 EC_POINT *C = -
291 ((void *)0)-
292 ;-
293 const EC_POINT *pub_key = -
294 ((void *)0)-
295 ;-
296 int ok = 0;-
297-
298 if (ctx ==
ctx == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
299 ((void *)0)
ctx == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
300 )-
301 goto
never executed: goto err;
err;
never executed: goto err;
0
302 BN_CTX_start(ctx);-
303 if ((
(order = BN_CT...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
order = BN_CTX_get(ctx)) ==
(order = BN_CT...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
304 ((void *)0)
(order = BN_CT...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
305 )-
306 goto
never executed: goto err;
err;
never executed: goto err;
0
307 if ((
(e = BN_CTX_ge...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
e = BN_CTX_get(ctx)) ==
(e = BN_CTX_ge...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
308 ((void *)0)
(e = BN_CTX_ge...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
309 )-
310 goto
never executed: goto err;
err;
never executed: goto err;
0
311 if ((
(z1 = BN_CTX_g...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
z1 = BN_CTX_get(ctx)) ==
(z1 = BN_CTX_g...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
312 ((void *)0)
(z1 = BN_CTX_g...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
313 )-
314 goto
never executed: goto err;
err;
never executed: goto err;
0
315 if ((
(z2 = BN_CTX_g...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
z2 = BN_CTX_get(ctx)) ==
(z2 = BN_CTX_g...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
316 ((void *)0)
(z2 = BN_CTX_g...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
317 )-
318 goto
never executed: goto err;
err;
never executed: goto err;
0
319 if ((
(tmp = BN_CTX_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
tmp = BN_CTX_get(ctx)) ==
(tmp = BN_CTX_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
320 ((void *)0)
(tmp = BN_CTX_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
321 )-
322 goto
never executed: goto err;
err;
never executed: goto err;
0
323 if ((
(X = BN_CTX_ge...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
X = BN_CTX_get(ctx)) ==
(X = BN_CTX_ge...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
324 ((void *)0)
(X = BN_CTX_ge...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
325 )-
326 goto
never executed: goto err;
err;
never executed: goto err;
0
327 if ((
(R = BN_CTX_ge...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
R = BN_CTX_get(ctx)) ==
(R = BN_CTX_ge...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
328 ((void *)0)
(R = BN_CTX_ge...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
329 )-
330 goto
never executed: goto err;
err;
never executed: goto err;
0
331 if ((
(v = BN_CTX_ge...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
v = BN_CTX_get(ctx)) ==
(v = BN_CTX_ge...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
332 ((void *)0)
(v = BN_CTX_ge...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
333 )-
334 goto
never executed: goto err;
err;
never executed: goto err;
0
335-
336 if (EC_GROUP_get_order(group, order, ctx) == 0
EC_GROUP_get_o...der, ctx) == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
337 goto
never executed: goto err;
err;
never executed: goto err;
0
338 pub_key = GOST_KEY_get0_public_key(ec);-
339 if (((
((sig->s)->top == 0)Description
TRUEnever evaluated
FALSEnever evaluated
sig->s)->top == 0)
((sig->s)->top == 0)Description
TRUEnever evaluated
FALSEnever evaluated
|| ((
((sig->r)->top == 0)Description
TRUEnever evaluated
FALSEnever evaluated
sig->r)->top == 0)
((sig->r)->top == 0)Description
TRUEnever evaluated
FALSEnever evaluated
||
0
340 BN_cmp(sig->s, order) >= 1
BN_cmp(sig->s, order) >= 1Description
TRUEnever evaluated
FALSEnever evaluated
|| BN_cmp(sig->r, order) >= 1
BN_cmp(sig->r, order) >= 1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
341 ERR_put_error(50,(0xfff),(122),__FILE__,285);-
342 goto
never executed: goto err;
err;
never executed: goto err;
0
343 }-
344-
345 if (BN_div_ct(
BN_div_ct( ((v...r),(ctx)) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
346 ((void *)0)
BN_div_ct( ((v...r),(ctx)) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
347 ,(e),(md),(order),(ctx)) == 0
BN_div_ct( ((v...r),(ctx)) == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
348 goto
never executed: goto err;
err;
never executed: goto err;
0
349 if (((
((e)->top == 0)Description
TRUEnever evaluated
FALSEnever evaluated
e)->top == 0)
((e)->top == 0)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
350 (
never executed: (BN_set_word((e),1));
BN_set_word((e),1));
never executed: (BN_set_word((e),1));
0
351 if ((
(v = BN_mod_in...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
v = BN_mod_inverse_ct(v, e, order, ctx)) ==
(v = BN_mod_in...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
352 ((void *)0)
(v = BN_mod_in...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
353 )-
354 goto
never executed: goto err;
err;
never executed: goto err;
0
355 if (BN_mod_mul(z1, sig->s, v, order, ctx) == 0
BN_mod_mul(z1,...der, ctx) == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
356 goto
never executed: goto err;
err;
never executed: goto err;
0
357 if (BN_sub(tmp, order, sig->r) == 0
BN_sub(tmp, or..., sig->r) == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
358 goto
never executed: goto err;
err;
never executed: goto err;
0
359 if (BN_mod_mul(z2, tmp, v, order, ctx) == 0
BN_mod_mul(z2,...der, ctx) == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
360 goto
never executed: goto err;
err;
never executed: goto err;
0
361 if ((
(C = EC_POINT_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
C = EC_POINT_new(group)) ==
(C = EC_POINT_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
362 ((void *)0)
(C = EC_POINT_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
363 )-
364 goto
never executed: goto err;
err;
never executed: goto err;
0
365 if (EC_POINT_mul(group, C, z1, pub_key, z2, ctx) == 0
EC_POINT_mul(g... z2, ctx) == 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
366 ERR_put_error(50,(0xfff),(16),__FILE__,304);-
367 goto
never executed: goto err;
err;
never executed: goto err;
0
368 }-
369 if (EC_POINT_get_affine_coordinates_GFp(group, C, X,
EC_POINT_get_a...0) , ctx) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
370 ((void *)0)
EC_POINT_get_a...0) , ctx) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
371 , ctx) == 0
EC_POINT_get_a...0) , ctx) == 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
372 ERR_put_error(50,(0xfff),(16),__FILE__,308);-
373 goto
never executed: goto err;
err;
never executed: goto err;
0
374 }-
375 if (BN_div_ct(
BN_div_ct( ((v...r),(ctx)) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
376 ((void *)0)
BN_div_ct( ((v...r),(ctx)) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
377 ,(R),(X),(order),(ctx)) == 0
BN_div_ct( ((v...r),(ctx)) == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
378 goto
never executed: goto err;
err;
never executed: goto err;
0
379 if (BN_cmp(R, sig->r) != 0
BN_cmp(R, sig->r) != 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
380 ERR_put_error(50,(0xfff),(121),__FILE__,314);-
381 }
never executed: end of block
else {
0
382 ok = 1;-
383 }
never executed: end of block
0
384err:
code before this statement never executed: err:
0
385 EC_POINT_free(C);-
386 if (ctx !=
ctx != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
387 ((void *)0)
ctx != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
388 ) {-
389 BN_CTX_end(ctx);-
390 BN_CTX_free(ctx);-
391 }
never executed: end of block
0
392 return
never executed: return ok;
ok;
never executed: return ok;
0
393}-
394-
395-
396int-
397VKO_compute_key(BIGNUM *X, BIGNUM *Y, const GOST_KEY *pkey, GOST_KEY *priv_key,-
398 const BIGNUM *ukm)-
399{-
400 BIGNUM *p = -
401 ((void *)0)-
402 , *order = -
403 ((void *)0)-
404 ;-
405 const BIGNUM *key = GOST_KEY_get0_private_key(priv_key);-
406 const EC_GROUP *group = GOST_KEY_get0_group(priv_key);-
407 const EC_POINT *pub_key = GOST_KEY_get0_public_key(pkey);-
408 EC_POINT *pnt;-
409 BN_CTX *ctx = -
410 ((void *)0)-
411 ;-
412 int ok = 0;-
413-
414 pnt = EC_POINT_new(group);-
415 if (pnt ==
pnt == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
416 ((void *)0)
pnt == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
417 )-
418 goto
never executed: goto err;
err;
never executed: goto err;
0
419 ctx = BN_CTX_new();-
420 if (ctx ==
ctx == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
421 ((void *)0)
ctx == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
422 )-
423 goto
never executed: goto err;
err;
never executed: goto err;
0
424 BN_CTX_start(ctx);-
425 if ((
(p = BN_CTX_ge...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
p = BN_CTX_get(ctx)) ==
(p = BN_CTX_ge...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
426 ((void *)0)
(p = BN_CTX_ge...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
427 )-
428 goto
never executed: goto err;
err;
never executed: goto err;
0
429 if ((
(order = BN_CT...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
order = BN_CTX_get(ctx)) ==
(order = BN_CT...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
430 ((void *)0)
(order = BN_CT...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
431 )-
432 goto
never executed: goto err;
err;
never executed: goto err;
0
433 if (EC_GROUP_get_order(group, order, ctx) == 0
EC_GROUP_get_o...der, ctx) == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
434 goto
never executed: goto err;
err;
never executed: goto err;
0
435 if (BN_mod_mul(p, key, ukm, order, ctx) == 0
BN_mod_mul(p, ...der, ctx) == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
436 goto
never executed: goto err;
err;
never executed: goto err;
0
437 if (EC_POINT_mul(group, pnt,
EC_POINT_mul(g..., p, ctx) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
438 ((void *)0)
EC_POINT_mul(g..., p, ctx) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
439 , pub_key, p, ctx) == 0
EC_POINT_mul(g..., p, ctx) == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
440 goto
never executed: goto err;
err;
never executed: goto err;
0
441 if (EC_POINT_get_affine_coordinates_GFp(group, pnt, X, Y, ctx) == 0
EC_POINT_get_a..., Y, ctx) == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
442 goto
never executed: goto err;
err;
never executed: goto err;
0
443 ok = 1;-
444-
445err:
code before this statement never executed: err:
0
446 if (ctx !=
ctx != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
447 ((void *)0)
ctx != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
448 ) {-
449 BN_CTX_end(ctx);-
450 BN_CTX_free(ctx);-
451 }
never executed: end of block
0
452 EC_POINT_free(pnt);-
453 return
never executed: return ok;
ok;
never executed: return ok;
0
454}-
455-
456int-
457gost2001_keygen(GOST_KEY *ec)-
458{-
459 BIGNUM *order = BN_new(), *d = BN_new();-
460 const EC_GROUP *group = GOST_KEY_get0_group(ec);-
461 int rc = 0;-
462-
463 if (order ==
order == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
464 ((void *)0)
order == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
465 || d ==
d == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
466 ((void *)0)
d == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
467 )-
468 goto
never executed: goto err;
err;
never executed: goto err;
0
469 if (EC_GROUP_get_order(group, order,
EC_GROUP_get_o...id *)0) ) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
470 ((void *)0)
EC_GROUP_get_o...id *)0) ) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
471 ) == 0
EC_GROUP_get_o...id *)0) ) == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
472 goto
never executed: goto err;
err;
never executed: goto err;
0
473-
474 do {-
475 if (BN_rand_range(d, order) == 0
BN_rand_range(d, order) == 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
476 ERR_put_error(50,(0xfff),(120),__FILE__,384);-
477 goto
never executed: goto err;
err;
never executed: goto err;
0
478 }-
479 }
never executed: end of block
while (((
((d)->top == 0)Description
TRUEnever evaluated
FALSEnever evaluated
d)->top == 0)
((d)->top == 0)Description
TRUEnever evaluated
FALSEnever evaluated
);
0
480-
481 if (GOST_KEY_set_private_key(ec, d) == 0
GOST_KEY_set_p...ey(ec, d) == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
482 goto
never executed: goto err;
err;
never executed: goto err;
0
483 rc = gost2001_compute_public(ec);-
484-
485err:
code before this statement never executed: err:
0
486 BN_free(d);-
487 BN_free(order);-
488 return
never executed: return rc;
rc;
never executed: return rc;
0
489}-
Switch to Source codePreprocessed file

Generated by Squish Coco 4.2.2