Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/openssl/src/crypto/ec/ec_kmeth.c |
Switch to Source code | Preprocessed file |
Line | Source | Count | ||||||
---|---|---|---|---|---|---|---|---|
1 | - | |||||||
2 | - | |||||||
3 | - | |||||||
4 | static 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 | - | |||||||
17 | static const EC_KEY_METHOD *default_ec_key_meth = &openssl_ec_key_method; | - | ||||||
18 | - | |||||||
19 | const EC_KEY_METHOD *EC_KEY_OpenSSL(void) | - | ||||||
20 | { | - | ||||||
21 | return never executed: &openssl_ec_key_method;return &openssl_ec_key_method; never executed: return &openssl_ec_key_method; | 0 | ||||||
22 | } | - | ||||||
23 | - | |||||||
24 | const EC_KEY_METHOD *EC_KEY_get_default_method(void) | - | ||||||
25 | { | - | ||||||
26 | return executed 41090 times by 2 tests: default_ec_key_meth;return default_ec_key_meth; Executed by:
executed 41090 times by 2 tests: return default_ec_key_meth; Executed by:
| 41090 | ||||||
27 | } | - | ||||||
28 | - | |||||||
29 | void EC_KEY_set_default_method(const EC_KEY_METHOD *meth) | - | ||||||
30 | { | - | ||||||
31 | if (meth ==
| 0 | ||||||
32 | ((void *)0)
| 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 | - | |||||||
39 | const EC_KEY_METHOD *EC_KEY_get_method(const EC_KEY *key) | - | ||||||
40 | { | - | ||||||
41 | return never executed: key->meth;return key->meth; never executed: return key->meth; | 0 | ||||||
42 | } | - | ||||||
43 | - | |||||||
44 | int 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 !=
| 0 | ||||||
49 | ((void *)0)
| 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 !=
| 0 | ||||||
62 | ((void *)0)
| 0 | ||||||
63 | ) | - | ||||||
64 | return never executed: meth->init(key);return meth->init(key); never executed: return meth->init(key); | 0 | ||||||
65 | return never executed: 1;return 1; never executed: return 1; | 0 | ||||||
66 | } | - | ||||||
67 | - | |||||||
68 | EC_KEY *EC_KEY_new_method(ENGINE *engine) | - | ||||||
69 | { | - | ||||||
70 | EC_KEY *ret = CRYPTO_zalloc(sizeof(*ret), __FILE__, 75); | - | ||||||
71 | - | |||||||
72 | if (ret ==
| 0-41090 | ||||||
73 | ((void *)0)
| 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 ==
| 0-41090 | ||||||
84 | ((void *)0)
| 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 !=
| 0-41090 | ||||||
96 | ((void *)0)
| 0-41090 | ||||||
97 | ) { | - | ||||||
98 | if (!ENGINE_init(engine)
| 0 | ||||||
99 | ERR_put_error(16,(245),(38),__FILE__,94); | - | ||||||
100 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||
101 | } | - | ||||||
102 | ret->engine = engine; | - | ||||||
103 | } never executed: elseend of block | 0 | ||||||
104 | ret->engine = ENGINE_get_default_EC(); executed 41090 times by 2 tests: ret->engine = ENGINE_get_default_EC(); Executed by:
| 41090 | ||||||
105 | if (ret->engine !=
| 0-41090 | ||||||
106 | ((void *)0)
| 0-41090 | ||||||
107 | ) { | - | ||||||
108 | ret->meth = ENGINE_get_EC(ret->engine); | - | ||||||
109 | if (ret->meth ==
| 0 | ||||||
110 | ((void *)0)
| 0 | ||||||
111 | ) { | - | ||||||
112 | ERR_put_error(16,(245),(38),__FILE__,103); | - | ||||||
113 | goto never executed: err;goto 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)
| 0-41090 | ||||||
122 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||
123 | } | - | ||||||
124 | - | |||||||
125 | if (ret->meth->init !=
| 0-41090 | ||||||
126 | ((void *)0)
| 0-41090 | ||||||
127 | && ret->meth->init(ret) == 0
| 0 | ||||||
128 | ERR_put_error(16,(245),((6|64)),__FILE__,117); | - | ||||||
129 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||
130 | } | - | ||||||
131 | return executed 41090 times by 2 tests: ret;return ret; Executed by:
executed 41090 times by 2 tests: return ret; Executed by:
| 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 | - | |||||||
140 | int 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 ==
| 0-1213 | ||||||
150 | ((void *)0)
| 0-1213 | ||||||
151 | ) { | - | ||||||
152 | ERR_put_error(16,(246),(152),__FILE__,135); | - | ||||||
153 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||
154 | } | - | ||||||
155 | if (outlen > 0x7fffffff
| 0-1213 | ||||||
156 | ERR_put_error(16,(246),(161),__FILE__,139); | - | ||||||
157 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||
158 | } | - | ||||||
159 | if (!eckey->meth->compute_key(&sec, &seclen, pub_key, eckey)
| 93-1120 | ||||||
160 | return executed 93 times by 1 test: 0;return 0; Executed by:
executed 93 times by 1 test: return 0; Executed by:
| 93 | ||||||
161 | if (KDF !=
| 0-1120 | ||||||
162 | ((void *)0)
| 0-1120 | ||||||
163 | ) { | - | ||||||
164 | KDF(sec, seclen, out, &outlen); | - | ||||||
165 | } never executed: else {end of block | 0 | ||||||
166 | if (outlen > seclen
| 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:
| 1120 | ||||||
170 | CRYPTO_clear_free(sec, seclen, __FILE__, 151); | - | ||||||
171 | return executed 1120 times by 1 test: outlen;return outlen; Executed by:
executed 1120 times by 1 test: return outlen; Executed by:
| 1120 | ||||||
172 | } | - | ||||||
173 | - | |||||||
174 | EC_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 ==
| 0 | ||||||
179 | ((void *)0)
| 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 !=
| 0 | ||||||
185 | ((void *)0)
| 0 | ||||||
186 | ) | - | ||||||
187 | * never executed: ret = *meth;*ret = *meth; never executed: *ret = *meth; | 0 | ||||||
188 | ret->flags |= 1; | - | ||||||
189 | return never executed: ret;return ret; never executed: return ret; | 0 | ||||||
190 | } | - | ||||||
191 | - | |||||||
192 | void EC_KEY_METHOD_free(EC_KEY_METHOD *meth) | - | ||||||
193 | { | - | ||||||
194 | if (meth->flags & 1
| 0 | ||||||
195 | CRYPTO_free(meth, __FILE__, 170); never executed: CRYPTO_free(meth, __FILE__, 170); | 0 | ||||||
196 | } never executed: end of block | 0 | ||||||
197 | - | |||||||
198 | void 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 | - | |||||||
216 | void 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 | - | |||||||
222 | void 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 | - | |||||||
231 | void 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 | - | |||||||
250 | void 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 | - | |||||||
264 | void 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 !=
| 0 | ||||||
276 | ((void *)0)
| 0 | ||||||
277 | ) | - | ||||||
278 | * never executed: pinit = meth->init;*pinit = meth->init; never executed: *pinit = meth->init; | 0 | ||||||
279 | if (pfinish !=
| 0 | ||||||
280 | ((void *)0)
| 0 | ||||||
281 | ) | - | ||||||
282 | * never executed: pfinish = meth->finish;*pfinish = meth->finish; never executed: *pfinish = meth->finish; | 0 | ||||||
283 | if (pcopy !=
| 0 | ||||||
284 | ((void *)0)
| 0 | ||||||
285 | ) | - | ||||||
286 | * never executed: pcopy = meth->copy;*pcopy = meth->copy; never executed: *pcopy = meth->copy; | 0 | ||||||
287 | if (pset_group !=
| 0 | ||||||
288 | ((void *)0)
| 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 !=
| 0 | ||||||
292 | ((void *)0)
| 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 !=
| 0 | ||||||
296 | ((void *)0)
| 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 | - | |||||||
301 | void EC_KEY_METHOD_get_keygen(const EC_KEY_METHOD *meth, | - | ||||||
302 | int (**pkeygen)(EC_KEY *key)) | - | ||||||
303 | { | - | ||||||
304 | if (pkeygen !=
| 0 | ||||||
305 | ((void *)0)
| 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 | - | |||||||
310 | void 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 !=
| 0 | ||||||
317 | ((void *)0)
| 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 | - | |||||||
322 | void 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 !=
| 0 | ||||||
337 | ((void *)0)
| 0 | ||||||
338 | ) | - | ||||||
339 | * never executed: psign = meth->sign;*psign = meth->sign; never executed: *psign = meth->sign; | 0 | ||||||
340 | if (psign_setup !=
| 0 | ||||||
341 | ((void *)0)
| 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 !=
| 0 | ||||||
345 | ((void *)0)
| 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 | - | |||||||
350 | void 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 !=
| 0 | ||||||
361 | ((void *)0)
| 0 | ||||||
362 | ) | - | ||||||
363 | * never executed: pverify = meth->verify;*pverify = meth->verify; never executed: *pverify = meth->verify; | 0 | ||||||
364 | if (pverify_sig !=
| 0 | ||||||
365 | ((void *)0)
| 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 code | Preprocessed file |