OpenCoverage

ec_kmeth.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/openssl/src/crypto/ec/ec_kmeth.c
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3-
4static const EC_KEY_METHOD openssl_ec_key_method = {-
5 "OpenSSL EC_KEY method",-
6 0,-
7 0,0,0,0,0,0,-
8 ossl_ec_key_gen,-
9 ossl_ecdh_compute_key,-
10 ossl_ecdsa_sign,-
11 ossl_ecdsa_sign_setup,-
12 ossl_ecdsa_sign_sig,-
13 ossl_ecdsa_verify,-
14 ossl_ecdsa_verify_sig-
15};-
16-
17static const EC_KEY_METHOD *default_ec_key_meth = &openssl_ec_key_method;-
18-
19const EC_KEY_METHOD *EC_KEY_OpenSSL(void)-
20{-
21 return
never executed: return &openssl_ec_key_method;
&openssl_ec_key_method;
never executed: return &openssl_ec_key_method;
0
22}-
23-
24const EC_KEY_METHOD *EC_KEY_get_default_method(void)-
25{-
26 return
executed 41090 times by 2 tests: return default_ec_key_meth;
Executed by:
  • libcrypto.so.1.1
  • sm2_internal_test
default_ec_key_meth;
executed 41090 times by 2 tests: return default_ec_key_meth;
Executed by:
  • libcrypto.so.1.1
  • sm2_internal_test
41090
27}-
28-
29void EC_KEY_set_default_method(const EC_KEY_METHOD *meth)-
30{-
31 if (meth ==
meth == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
32 ((void *)0)
meth == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
33 )-
34 default_ec_key_meth = &openssl_ec_key_method;
never executed: default_ec_key_meth = &openssl_ec_key_method;
0
35 else-
36 default_ec_key_meth = meth;
never executed: default_ec_key_meth = meth;
0
37}-
38-
39const EC_KEY_METHOD *EC_KEY_get_method(const EC_KEY *key)-
40{-
41 return
never executed: return key->meth;
key->meth;
never executed: return key->meth;
0
42}-
43-
44int EC_KEY_set_method(EC_KEY *key, const EC_KEY_METHOD *meth)-
45{-
46 void (*finish)(EC_KEY *key) = key->meth->finish;-
47-
48 if (finish !=
finish != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
49 ((void *)0)
finish != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
50 )-
51 finish(key);
never executed: finish(key);
0
52-
53-
54 ENGINE_finish(key->engine);-
55 key->engine = -
56 ((void *)0)-
57 ;-
58-
59-
60 key->meth = meth;-
61 if (meth->init !=
meth->init != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
62 ((void *)0)
meth->init != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
63 )-
64 return
never executed: return meth->init(key);
meth->init(key);
never executed: return meth->init(key);
0
65 return
never executed: return 1;
1;
never executed: return 1;
0
66}-
67-
68EC_KEY *EC_KEY_new_method(ENGINE *engine)-
69{-
70 EC_KEY *ret = CRYPTO_zalloc(sizeof(*ret), __FILE__, 75);-
71-
72 if (ret ==
ret == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 41090 times by 2 tests
Evaluated by:
  • libcrypto.so.1.1
  • sm2_internal_test
0-41090
73 ((void *)0)
ret == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 41090 times by 2 tests
Evaluated by:
  • libcrypto.so.1.1
  • sm2_internal_test
0-41090
74 ) {-
75 ERR_put_error(16,(245),((1|64)),__FILE__,78);-
76 return
never executed: return ((void *)0) ;
never executed: return ((void *)0) ;
0
77 ((void *)0)
never executed: return ((void *)0) ;
0
78 ;
never executed: return ((void *)0) ;
0
79 }-
80-
81 ret->references = 1;-
82 ret->lock = CRYPTO_THREAD_lock_new();-
83 if (ret->lock ==
ret->lock == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 41090 times by 2 tests
Evaluated by:
  • libcrypto.so.1.1
  • sm2_internal_test
0-41090
84 ((void *)0)
ret->lock == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 41090 times by 2 tests
Evaluated by:
  • libcrypto.so.1.1
  • sm2_internal_test
0-41090
85 ) {-
86 ERR_put_error(16,(245),((1|64)),__FILE__,85);-
87 CRYPTO_free(ret, __FILE__, 86);-
88 return
never executed: return ((void *)0) ;
never executed: return ((void *)0) ;
0
89 ((void *)0)
never executed: return ((void *)0) ;
0
90 ;
never executed: return ((void *)0) ;
0
91 }-
92-
93 ret->meth = EC_KEY_get_default_method();-
94-
95 if (engine !=
engine != ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 41090 times by 2 tests
Evaluated by:
  • libcrypto.so.1.1
  • sm2_internal_test
0-41090
96 ((void *)0)
engine != ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 41090 times by 2 tests
Evaluated by:
  • libcrypto.so.1.1
  • sm2_internal_test
0-41090
97 ) {-
98 if (!ENGINE_init(engine)
!ENGINE_init(engine)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
99 ERR_put_error(16,(245),(38),__FILE__,94);-
100 goto
never executed: goto err;
err;
never executed: goto err;
0
101 }-
102 ret->engine = engine;-
103 }
never executed: end of block
else
0
104 ret->engine = ENGINE_get_default_EC();
executed 41090 times by 2 tests: ret->engine = ENGINE_get_default_EC();
Executed by:
  • libcrypto.so.1.1
  • sm2_internal_test
41090
105 if (ret->engine !=
ret->engine != ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 41090 times by 2 tests
Evaluated by:
  • libcrypto.so.1.1
  • sm2_internal_test
0-41090
106 ((void *)0)
ret->engine != ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 41090 times by 2 tests
Evaluated by:
  • libcrypto.so.1.1
  • sm2_internal_test
0-41090
107 ) {-
108 ret->meth = ENGINE_get_EC(ret->engine);-
109 if (ret->meth ==
ret->meth == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
110 ((void *)0)
ret->meth == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
111 ) {-
112 ERR_put_error(16,(245),(38),__FILE__,103);-
113 goto
never executed: goto err;
err;
never executed: goto err;
0
114 }-
115 }
never executed: end of block
0
116-
117-
118 ret->version = 1;-
119 ret->conv_form = POINT_CONVERSION_UNCOMPRESSED;-
120-
121 if (!CRYPTO_new_ex_data(8, ret, &ret->ex_data)
!CRYPTO_new_ex...&ret->ex_data)Description
TRUEnever evaluated
FALSEevaluated 41090 times by 2 tests
Evaluated by:
  • libcrypto.so.1.1
  • sm2_internal_test
) {
0-41090
122 goto
never executed: goto err;
err;
never executed: goto err;
0
123 }-
124-
125 if (ret->meth->init !=
ret->meth->init != ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 41090 times by 2 tests
Evaluated by:
  • libcrypto.so.1.1
  • sm2_internal_test
0-41090
126 ((void *)0)
ret->meth->init != ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 41090 times by 2 tests
Evaluated by:
  • libcrypto.so.1.1
  • sm2_internal_test
0-41090
127 && ret->meth->init(ret) == 0
ret->meth->init(ret) == 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
128 ERR_put_error(16,(245),((6|64)),__FILE__,117);-
129 goto
never executed: goto err;
err;
never executed: goto err;
0
130 }-
131 return
executed 41090 times by 2 tests: return ret;
Executed by:
  • libcrypto.so.1.1
  • sm2_internal_test
ret;
executed 41090 times by 2 tests: return ret;
Executed by:
  • libcrypto.so.1.1
  • sm2_internal_test
41090
132-
133 err:-
134 EC_KEY_free(ret);-
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-
140int ECDH_compute_key(void *out, size_t outlen, const EC_POINT *pub_key,-
141 const EC_KEY *eckey,-
142 void *(*KDF) (const void *in, size_t inlen, void *out,-
143 size_t *outlen))-
144{-
145 unsigned char *sec = -
146 ((void *)0)-
147 ;-
148 size_t seclen;-
149 if (eckey->meth->compute_key ==
eckey->meth->c...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 1213 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-1213
150 ((void *)0)
eckey->meth->c...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 1213 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-1213
151 ) {-
152 ERR_put_error(16,(246),(152),__FILE__,135);-
153 return
never executed: return 0;
0;
never executed: return 0;
0
154 }-
155 if (outlen > 0x7fffffff
outlen > 0x7fffffffDescription
TRUEnever evaluated
FALSEevaluated 1213 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
) {
0-1213
156 ERR_put_error(16,(246),(161),__FILE__,139);-
157 return
never executed: return 0;
0;
never executed: return 0;
0
158 }-
159 if (!eckey->meth->compute_key(&sec, &seclen, pub_key, eckey)
!eckey->meth->...ub_key, eckey)Description
TRUEevaluated 93 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
FALSEevaluated 1120 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
)
93-1120
160 return
executed 93 times by 1 test: return 0;
Executed by:
  • libcrypto.so.1.1
0;
executed 93 times by 1 test: return 0;
Executed by:
  • libcrypto.so.1.1
93
161 if (KDF !=
KDF != ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 1120 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-1120
162 ((void *)0)
KDF != ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 1120 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-1120
163 ) {-
164 KDF(sec, seclen, out, &outlen);-
165 }
never executed: end of block
else {
0
166 if (outlen > seclen
outlen > seclenDescription
TRUEnever evaluated
FALSEevaluated 1120 times by 1 test
Evaluated by:
  • libcrypto.so.1.1
)
0-1120
167 outlen = seclen;
never executed: outlen = seclen;
0
168 memcpy(out, sec, outlen);-
169 }
executed 1120 times by 1 test: end of block
Executed by:
  • libcrypto.so.1.1
1120
170 CRYPTO_clear_free(sec, seclen, __FILE__, 151);-
171 return
executed 1120 times by 1 test: return outlen;
Executed by:
  • libcrypto.so.1.1
outlen;
executed 1120 times by 1 test: return outlen;
Executed by:
  • libcrypto.so.1.1
1120
172}-
173-
174EC_KEY_METHOD *EC_KEY_METHOD_new(const EC_KEY_METHOD *meth)-
175{-
176 EC_KEY_METHOD *ret = CRYPTO_zalloc(sizeof(*meth), __FILE__, 157);-
177-
178 if (ret ==
ret == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
179 ((void *)0)
ret == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
180 )-
181 return
never executed: return ((void *)0) ;
never executed: return ((void *)0) ;
0
182 ((void *)0)
never executed: return ((void *)0) ;
0
183 ;
never executed: return ((void *)0) ;
0
184 if (meth !=
meth != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
185 ((void *)0)
meth != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
186 )-
187 *
never executed: *ret = *meth;
ret = *meth;
never executed: *ret = *meth;
0
188 ret->flags |= 1;-
189 return
never executed: return ret;
ret;
never executed: return ret;
0
190}-
191-
192void EC_KEY_METHOD_free(EC_KEY_METHOD *meth)-
193{-
194 if (meth->flags & 1
meth->flags & 1Description
TRUEnever evaluated
FALSEnever evaluated
)
0
195 CRYPTO_free(meth, __FILE__, 170);
never executed: CRYPTO_free(meth, __FILE__, 170);
0
196}
never executed: end of block
0
197-
198void EC_KEY_METHOD_set_init(EC_KEY_METHOD *meth,-
199 int (*init)(EC_KEY *key),-
200 void (*finish)(EC_KEY *key),-
201 int (*copy)(EC_KEY *dest, const EC_KEY *src),-
202 int (*set_group)(EC_KEY *key, const EC_GROUP *grp),-
203 int (*set_private)(EC_KEY *key,-
204 const BIGNUM *priv_key),-
205 int (*set_public)(EC_KEY *key,-
206 const EC_POINT *pub_key))-
207{-
208 meth->init = init;-
209 meth->finish = finish;-
210 meth->copy = copy;-
211 meth->set_group = set_group;-
212 meth->set_private = set_private;-
213 meth->set_public = set_public;-
214}
never executed: end of block
0
215-
216void EC_KEY_METHOD_set_keygen(EC_KEY_METHOD *meth,-
217 int (*keygen)(EC_KEY *key))-
218{-
219 meth->keygen = keygen;-
220}
never executed: end of block
0
221-
222void EC_KEY_METHOD_set_compute_key(EC_KEY_METHOD *meth,-
223 int (*ckey)(unsigned char **psec,-
224 size_t *pseclen,-
225 const EC_POINT *pub_key,-
226 const EC_KEY *ecdh))-
227{-
228 meth->compute_key = ckey;-
229}
never executed: end of block
0
230-
231void EC_KEY_METHOD_set_sign(EC_KEY_METHOD *meth,-
232 int (*sign)(int type, const unsigned char *dgst,-
233 int dlen, unsigned char *sig,-
234 unsigned int *siglen,-
235 const BIGNUM *kinv, const BIGNUM *r,-
236 EC_KEY *eckey),-
237 int (*sign_setup)(EC_KEY *eckey, BN_CTX *ctx_in,-
238 BIGNUM **kinvp, BIGNUM **rp),-
239 ECDSA_SIG *(*sign_sig)(const unsigned char *dgst,-
240 int dgst_len,-
241 const BIGNUM *in_kinv,-
242 const BIGNUM *in_r,-
243 EC_KEY *eckey))-
244{-
245 meth->sign = sign;-
246 meth->sign_setup = sign_setup;-
247 meth->sign_sig = sign_sig;-
248}
never executed: end of block
0
249-
250void EC_KEY_METHOD_set_verify(EC_KEY_METHOD *meth,-
251 int (*verify)(int type, const unsigned-
252 char *dgst, int dgst_len,-
253 const unsigned char *sigbuf,-
254 int sig_len, EC_KEY *eckey),-
255 int (*verify_sig)(const unsigned char *dgst,-
256 int dgst_len,-
257 const ECDSA_SIG *sig,-
258 EC_KEY *eckey))-
259{-
260 meth->verify = verify;-
261 meth->verify_sig = verify_sig;-
262}
never executed: end of block
0
263-
264void EC_KEY_METHOD_get_init(const EC_KEY_METHOD *meth,-
265 int (**pinit)(EC_KEY *key),-
266 void (**pfinish)(EC_KEY *key),-
267 int (**pcopy)(EC_KEY *dest, const EC_KEY *src),-
268 int (**pset_group)(EC_KEY *key,-
269 const EC_GROUP *grp),-
270 int (**pset_private)(EC_KEY *key,-
271 const BIGNUM *priv_key),-
272 int (**pset_public)(EC_KEY *key,-
273 const EC_POINT *pub_key))-
274{-
275 if (pinit !=
pinit != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
276 ((void *)0)
pinit != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
277 )-
278 *
never executed: *pinit = meth->init;
pinit = meth->init;
never executed: *pinit = meth->init;
0
279 if (pfinish !=
pfinish != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
280 ((void *)0)
pfinish != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
281 )-
282 *
never executed: *pfinish = meth->finish;
pfinish = meth->finish;
never executed: *pfinish = meth->finish;
0
283 if (pcopy !=
pcopy != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
284 ((void *)0)
pcopy != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
285 )-
286 *
never executed: *pcopy = meth->copy;
pcopy = meth->copy;
never executed: *pcopy = meth->copy;
0
287 if (pset_group !=
pset_group != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
288 ((void *)0)
pset_group != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
289 )-
290 *
never executed: *pset_group = meth->set_group;
pset_group = meth->set_group;
never executed: *pset_group = meth->set_group;
0
291 if (pset_private !=
pset_private != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
292 ((void *)0)
pset_private != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
293 )-
294 *
never executed: *pset_private = meth->set_private;
pset_private = meth->set_private;
never executed: *pset_private = meth->set_private;
0
295 if (pset_public !=
pset_public != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
296 ((void *)0)
pset_public != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
297 )-
298 *
never executed: *pset_public = meth->set_public;
pset_public = meth->set_public;
never executed: *pset_public = meth->set_public;
0
299}
never executed: end of block
0
300-
301void EC_KEY_METHOD_get_keygen(const EC_KEY_METHOD *meth,-
302 int (**pkeygen)(EC_KEY *key))-
303{-
304 if (pkeygen !=
pkeygen != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
305 ((void *)0)
pkeygen != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
306 )-
307 *
never executed: *pkeygen = meth->keygen;
pkeygen = meth->keygen;
never executed: *pkeygen = meth->keygen;
0
308}
never executed: end of block
0
309-
310void EC_KEY_METHOD_get_compute_key(const EC_KEY_METHOD *meth,-
311 int (**pck)(unsigned char **pout,-
312 size_t *poutlen,-
313 const EC_POINT *pub_key,-
314 const EC_KEY *ecdh))-
315{-
316 if (pck !=
pck != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
317 ((void *)0)
pck != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
318 )-
319 *
never executed: *pck = meth->compute_key;
pck = meth->compute_key;
never executed: *pck = meth->compute_key;
0
320}
never executed: end of block
0
321-
322void EC_KEY_METHOD_get_sign(const EC_KEY_METHOD *meth,-
323 int (**psign)(int type, const unsigned char *dgst,-
324 int dlen, unsigned char *sig,-
325 unsigned int *siglen,-
326 const BIGNUM *kinv, const BIGNUM *r,-
327 EC_KEY *eckey),-
328 int (**psign_setup)(EC_KEY *eckey, BN_CTX *ctx_in,-
329 BIGNUM **kinvp, BIGNUM **rp),-
330 ECDSA_SIG *(**psign_sig)(const unsigned char *dgst,-
331 int dgst_len,-
332 const BIGNUM *in_kinv,-
333 const BIGNUM *in_r,-
334 EC_KEY *eckey))-
335{-
336 if (psign !=
psign != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
337 ((void *)0)
psign != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
338 )-
339 *
never executed: *psign = meth->sign;
psign = meth->sign;
never executed: *psign = meth->sign;
0
340 if (psign_setup !=
psign_setup != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
341 ((void *)0)
psign_setup != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
342 )-
343 *
never executed: *psign_setup = meth->sign_setup;
psign_setup = meth->sign_setup;
never executed: *psign_setup = meth->sign_setup;
0
344 if (psign_sig !=
psign_sig != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
345 ((void *)0)
psign_sig != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
346 )-
347 *
never executed: *psign_sig = meth->sign_sig;
psign_sig = meth->sign_sig;
never executed: *psign_sig = meth->sign_sig;
0
348}
never executed: end of block
0
349-
350void EC_KEY_METHOD_get_verify(const EC_KEY_METHOD *meth,-
351 int (**pverify)(int type, const unsigned-
352 char *dgst, int dgst_len,-
353 const unsigned char *sigbuf,-
354 int sig_len, EC_KEY *eckey),-
355 int (**pverify_sig)(const unsigned char *dgst,-
356 int dgst_len,-
357 const ECDSA_SIG *sig,-
358 EC_KEY *eckey))-
359{-
360 if (pverify !=
pverify != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
361 ((void *)0)
pverify != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
362 )-
363 *
never executed: *pverify = meth->verify;
pverify = meth->verify;
never executed: *pverify = meth->verify;
0
364 if (pverify_sig !=
pverify_sig != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
365 ((void *)0)
pverify_sig != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
366 )-
367 *
never executed: *pverify_sig = meth->verify_sig;
pverify_sig = meth->verify_sig;
never executed: *pverify_sig = meth->verify_sig;
0
368}
never executed: end of block
0
Switch to Source codePreprocessed file

Generated by Squish Coco 4.2.2