OpenCoverage

gostr341001_key.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/libressl/src/crypto/gost/gostr341001_key.c
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3-
4-
5struct gost_key_st {-
6 EC_GROUP *group;-
7-
8 EC_POINT *pub_key;-
9 BIGNUM *priv_key;-
10-
11 int references;-
12-
13 int digest_nid;-
14};-
15-
16GOST_KEY *-
17GOST_KEY_new(void)-
18{-
19 GOST_KEY *ret;-
20-
21 ret = malloc(sizeof(GOST_KEY));-
22 if (ret ==
ret == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
23 ((void *)0)
ret == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
24 ) {-
25 ERR_put_error(50,(0xfff),((1|64)),__FILE__,81);-
26 return
never executed: return ( ((void *)0) );
(
never executed: return ( ((void *)0) );
0
27 ((void *)0)
never executed: return ( ((void *)0) );
0
28 );
never executed: return ( ((void *)0) );
0
29 }-
30 ret->group = -
31 ((void *)0)-
32 ;-
33 ret->pub_key = -
34 ((void *)0)-
35 ;-
36 ret->priv_key = -
37 ((void *)0)-
38 ;-
39 ret->references = 1;-
40 ret->digest_nid = 0;-
41 return
never executed: return (ret);
(ret);
never executed: return (ret);
0
42}-
43-
44void-
45GOST_KEY_free(GOST_KEY *r)-
46{-
47 int i;-
48-
49 if (r ==
r == ((void *)0)Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • freenull
FALSEnever evaluated
0-1
50 ((void *)0)
r == ((void *)0)Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • freenull
FALSEnever evaluated
0-1
51 )-
52 return;
executed 1 time by 1 test: return;
Executed by:
  • freenull
1
53-
54 i = CRYPTO_add_lock(&r->references,-1,33,__FILE__,100);-
55 if (i > 0
i > 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
56 return;
never executed: return;
0
57-
58 EC_GROUP_free(r->group);-
59 EC_POINT_free(r->pub_key);-
60 BN_clear_free(r->priv_key);-
61-
62 freezero(r, sizeof(GOST_KEY));-
63}
never executed: end of block
0
64-
65int-
66GOST_KEY_check_key(const GOST_KEY *key)-
67{-
68 int ok = 0;-
69 BN_CTX *ctx = -
70 ((void *)0)-
71 ;-
72 BIGNUM *order = -
73 ((void *)0)-
74 ;-
75 EC_POINT *point = -
76 ((void *)0)-
77 ;-
78-
79 if (key ==
key == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
80 ((void *)0)
key == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
81 || key->group ==
key->group == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
82 ((void *)0)
key->group == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
83 || key->pub_key ==
key->pub_key == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
84 ((void *)0)
key->pub_key == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
85 ) {-
86 ERR_put_error(50,(0xfff),((3|64)),__FILE__,120);-
87 return
never executed: return 0;
0;
never executed: return 0;
0
88 }-
89 if (EC_POINT_is_at_infinity(key->group, key->pub_key) != 0
EC_POINT_is_at...>pub_key) != 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
90 ERR_put_error(50,(0xfff),(106),__FILE__,124);-
91 goto
never executed: goto err;
err;
never executed: goto err;
0
92 }-
93 if ((
(ctx = BN_CTX_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
ctx = BN_CTX_new()) ==
(ctx = BN_CTX_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
94 ((void *)0)
(ctx = BN_CTX_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
95 )-
96 goto
never executed: goto err;
err;
never executed: goto err;
0
97 if ((
(point = EC_PO...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
point = EC_POINT_new(key->group)) ==
(point = EC_PO...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
98 ((void *)0)
(point = EC_PO...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
99 )-
100 goto
never executed: goto err;
err;
never executed: goto err;
0
101-
102-
103 if (EC_POINT_is_on_curve(key->group, key->pub_key, ctx) == 0
EC_POINT_is_on...key, ctx) == 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
104 ERR_put_error(50,(0xfff),(107),__FILE__,134);-
105 goto
never executed: goto err;
err;
never executed: goto err;
0
106 }-
107-
108 if ((
(order = BN_ne...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
order = BN_new()) ==
(order = BN_ne...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
109 ((void *)0)
(order = BN_ne...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
110 )-
111 goto
never executed: goto err;
err;
never executed: goto err;
0
112 if (EC_GROUP_get_order(key->group, order, ctx) == 0
EC_GROUP_get_o...der, ctx) == 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
113 ERR_put_error(50,(0xfff),(122),__FILE__,141);-
114 goto
never executed: goto err;
err;
never executed: goto err;
0
115 }-
116 if (EC_POINT_mul(key->group, point,
EC_POINT_mul(k...der, ctx) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
117 ((void *)0)
EC_POINT_mul(k...der, ctx) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
118 , key->pub_key, order,
EC_POINT_mul(k...der, ctx) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
119 ctx) == 0
EC_POINT_mul(k...der, ctx) == 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
120 ERR_put_error(50,(0xfff),(16),__FILE__,146);-
121 goto
never executed: goto err;
err;
never executed: goto err;
0
122 }-
123 if (EC_POINT_is_at_infinity(key->group, point) == 0
EC_POINT_is_at...p, point) == 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
124 ERR_put_error(50,(0xfff),(130),__FILE__,150);-
125 goto
never executed: goto err;
err;
never executed: goto err;
0
126 }-
127-
128-
129-
130-
131 if (key->priv_key !=
key->priv_key != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
132 ((void *)0)
key->priv_key != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
133 ) {-
134 if (BN_cmp(key->priv_key, order) >= 0
BN_cmp(key->pr...y, order) >= 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
135 ERR_put_error(50,(0xfff),(130),__FILE__,159);-
136 goto
never executed: goto err;
err;
never executed: goto err;
0
137 }-
138 if (EC_POINT_mul(key->group, point, key->priv_key,
EC_POINT_mul(k...0) , ctx) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
139 ((void *)0)
EC_POINT_mul(k...0) , ctx) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
140 ,
EC_POINT_mul(k...0) , ctx) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
141 ((void *)0)
EC_POINT_mul(k...0) , ctx) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
142 ,
EC_POINT_mul(k...0) , ctx) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
143 ctx) == 0
EC_POINT_mul(k...0) , ctx) == 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
144 ERR_put_error(50,(0xfff),(16),__FILE__,164);-
145 goto
never executed: goto err;
err;
never executed: goto err;
0
146 }-
147 if (EC_POINT_cmp(key->group, point, key->pub_key, ctx) != 0
EC_POINT_cmp(k...key, ctx) != 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
148 ERR_put_error(50,(0xfff),(123),__FILE__,168);-
149 goto
never executed: goto err;
err;
never executed: goto err;
0
150 }-
151 }
never executed: end of block
0
152 ok = 1;-
153err:
code before this statement never executed: err:
0
154 BN_free(order);-
155 BN_CTX_free(ctx);-
156 EC_POINT_free(point);-
157 return
never executed: return (ok);
(ok);
never executed: return (ok);
0
158}-
159-
160int-
161GOST_KEY_set_public_key_affine_coordinates(GOST_KEY *key, BIGNUM *x, BIGNUM *y)-
162{-
163 BN_CTX *ctx = -
164 ((void *)0)-
165 ;-
166 BIGNUM *tx, *ty;-
167 EC_POINT *point = -
168 ((void *)0)-
169 ;-
170 int ok = 0;-
171-
172 if (key ==
key == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
173 ((void *)0)
key == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
174 || key->group ==
key->group == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
175 ((void *)0)
key->group == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
176 || x ==
x == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
177 ((void *)0)
x == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
178 || y ==
y == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
179 ((void *)0)
y == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
180 ) {-
181 ERR_put_error(50,(0xfff),((3|64)),__FILE__,189);-
182 return
never executed: return 0;
0;
never executed: return 0;
0
183 }-
184 ctx = BN_CTX_new();-
185 if (ctx ==
ctx == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
186 ((void *)0)
ctx == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
187 )-
188 goto
never executed: goto err;
err;
never executed: goto err;
0
189-
190 point = EC_POINT_new(key->group);-
191 if (point ==
point == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
192 ((void *)0)
point == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
193 )-
194 goto
never executed: goto err;
err;
never executed: goto err;
0
195-
196 if ((
(tx = BN_CTX_g...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
tx = BN_CTX_get(ctx)) ==
(tx = BN_CTX_g...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
197 ((void *)0)
(tx = BN_CTX_g...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
198 )-
199 goto
never executed: goto err;
err;
never executed: goto err;
0
200 if ((
(ty = BN_CTX_g...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
ty = BN_CTX_get(ctx)) ==
(ty = BN_CTX_g...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
201 ((void *)0)
(ty = BN_CTX_g...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
202 )-
203 goto
never executed: goto err;
err;
never executed: goto err;
0
204 if (EC_POINT_set_affine_coordinates_GFp(key->group, point, x, y,
EC_POINT_set_a..., y, ctx) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
205 ctx) == 0
EC_POINT_set_a..., y, ctx) == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
206 goto
never executed: goto err;
err;
never executed: goto err;
0
207 if (EC_POINT_get_affine_coordinates_GFp(key->group, point, tx, ty,
EC_POINT_get_a... ty, ctx) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
208 ctx) == 0
EC_POINT_get_a... ty, ctx) == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
209 goto
never executed: goto err;
err;
never executed: goto err;
0
210-
211-
212-
213-
214 if (BN_cmp(x, tx) != 0
BN_cmp(x, tx) != 0Description
TRUEnever evaluated
FALSEnever evaluated
|| BN_cmp(y, ty) != 0
BN_cmp(y, ty) != 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
215 ERR_put_error(50,(0xfff),(146),__FILE__,215);-
216 goto
never executed: goto err;
err;
never executed: goto err;
0
217 }-
218 if (GOST_KEY_set_public_key(key, point) == 0
GOST_KEY_set_p...y, point) == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
219 goto
never executed: goto err;
err;
never executed: goto err;
0
220-
221 if (GOST_KEY_check_key(key) == 0
GOST_KEY_check_key(key) == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
222 goto
never executed: goto err;
err;
never executed: goto err;
0
223-
224 ok = 1;-
225-
226err:
code before this statement never executed: err:
0
227 EC_POINT_free(point);-
228 BN_CTX_free(ctx);-
229 return
never executed: return ok;
ok;
never executed: return ok;
0
230-
231}-
232-
233const EC_GROUP *-
234GOST_KEY_get0_group(const GOST_KEY *key)-
235{-
236 return
never executed: return key->group;
key->group;
never executed: return key->group;
0
237}-
238-
239int-
240GOST_KEY_set_group(GOST_KEY *key, const EC_GROUP *group)-
241{-
242 EC_GROUP_free(key->group);-
243 key->group = EC_GROUP_dup(group);-
244 return
never executed: return (key->group == ((void *)0) ) ? 0 : 1;
(
(key->group == ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
key->group ==
(key->group == ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
never executed: return (key->group == ((void *)0) ) ? 0 : 1;
0
245 ((void *)0)
(key->group == ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
never executed: return (key->group == ((void *)0) ) ? 0 : 1;
0
246 )
(key->group == ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
? 0 : 1;
never executed: return (key->group == ((void *)0) ) ? 0 : 1;
0
247}-
248-
249const BIGNUM *-
250GOST_KEY_get0_private_key(const GOST_KEY *key)-
251{-
252 return
never executed: return key->priv_key;
key->priv_key;
never executed: return key->priv_key;
0
253}-
254-
255int-
256GOST_KEY_set_private_key(GOST_KEY *key, const BIGNUM *priv_key)-
257{-
258 BN_clear_free(key->priv_key);-
259 key->priv_key = BN_dup(priv_key);-
260 return
never executed: return (key->priv_key == ((void *)0) ) ? 0 : 1;
(
(key->priv_key... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
key->priv_key ==
(key->priv_key... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
never executed: return (key->priv_key == ((void *)0) ) ? 0 : 1;
0
261 ((void *)0)
(key->priv_key... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
never executed: return (key->priv_key == ((void *)0) ) ? 0 : 1;
0
262 )
(key->priv_key... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
? 0 : 1;
never executed: return (key->priv_key == ((void *)0) ) ? 0 : 1;
0
263}-
264-
265const EC_POINT *-
266GOST_KEY_get0_public_key(const GOST_KEY *key)-
267{-
268 return
never executed: return key->pub_key;
key->pub_key;
never executed: return key->pub_key;
0
269}-
270-
271int-
272GOST_KEY_set_public_key(GOST_KEY *key, const EC_POINT *pub_key)-
273{-
274 EC_POINT_free(key->pub_key);-
275 key->pub_key = EC_POINT_dup(pub_key, key->group);-
276 return
never executed: return (key->pub_key == ((void *)0) ) ? 0 : 1;
(
(key->pub_key == ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
key->pub_key ==
(key->pub_key == ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
never executed: return (key->pub_key == ((void *)0) ) ? 0 : 1;
0
277 ((void *)0)
(key->pub_key == ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
never executed: return (key->pub_key == ((void *)0) ) ? 0 : 1;
0
278 )
(key->pub_key == ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
? 0 : 1;
never executed: return (key->pub_key == ((void *)0) ) ? 0 : 1;
0
279}-
280-
281int-
282GOST_KEY_get_digest(const GOST_KEY *key)-
283{-
284 return
never executed: return key->digest_nid;
key->digest_nid;
never executed: return key->digest_nid;
0
285}-
286int-
287GOST_KEY_set_digest(GOST_KEY *key, int digest_nid)-
288{-
289 if (digest_nid == 822
digest_nid == 822Description
TRUEnever evaluated
FALSEnever evaluated
||
0
290 digest_nid == 941
digest_nid == 941Description
TRUEnever evaluated
FALSEnever evaluated
||
0
291 digest_nid == 942
digest_nid == 942Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
292 key->digest_nid = digest_nid;-
293 return
never executed: return 1;
1;
never executed: return 1;
0
294 }-
295-
296 return
never executed: return 0;
0;
never executed: return 0;
0
297}-
298-
299size_t-
300GOST_KEY_get_size(const GOST_KEY *r)-
301{-
302 int i;-
303 BIGNUM *order = -
304 ((void *)0)-
305 ;-
306 const EC_GROUP *group;-
307-
308 if (r ==
r == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
309 ((void *)0)
r == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
310 )-
311 return
never executed: return 0;
0;
never executed: return 0;
0
312 group = GOST_KEY_get0_group(r);-
313 if (group ==
group == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
314 ((void *)0)
group == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
315 )-
316 return
never executed: return 0;
0;
never executed: return 0;
0
317-
318 if ((
(order = BN_ne...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
order = BN_new()) ==
(order = BN_ne...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
319 ((void *)0)
(order = BN_ne...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
320 )-
321 return
never executed: return 0;
0;
never executed: return 0;
0
322-
323 if (EC_GROUP_get_order(group, order,
EC_GROUP_get_o...id *)0) ) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
324 ((void *)0)
EC_GROUP_get_o...id *)0) ) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
325 ) == 0
EC_GROUP_get_o...id *)0) ) == 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
326 BN_clear_free(order);-
327 return
never executed: return 0;
0;
never executed: return 0;
0
328 }-
329-
330 i = ((BN_num_bits(order)+7)/8);-
331 BN_clear_free(order);-
332 return
never executed: return (i);
(i);
never executed: return (i);
0
333}-
Switch to Source codePreprocessed file

Generated by Squish Coco 4.2.2