Line | Source | Count |
1 | | - |
2 | | - |
3 | | - |
4 | | - |
5 | | - |
6 | typedef struct { | - |
7 | | - |
8 | EC_GROUP *gen_group; | - |
9 | | - |
10 | const EVP_MD *md; | - |
11 | } EC_PKEY_CTX; | - |
12 | | - |
13 | static int | - |
14 | pkey_ec_init(EVP_PKEY_CTX * ctx) | - |
15 | { | - |
16 | EC_PKEY_CTX *dctx; | - |
17 | dctx = malloc(sizeof(EC_PKEY_CTX)); | - |
18 | if (!dctxTRUE | never evaluated | FALSE | never evaluated |
) | 0 |
19 | return never executed: return 0; 0;never executed: return 0; | 0 |
20 | dctx->gen_group = | - |
21 | ((void *)0) | - |
22 | ; | - |
23 | dctx->md = | - |
24 | ((void *)0) | - |
25 | ; | - |
26 | | - |
27 | ctx->data = dctx; | - |
28 | | - |
29 | return never executed: return 1; 1;never executed: return 1; | 0 |
30 | } | - |
31 | | - |
32 | static int | - |
33 | pkey_ec_copy(EVP_PKEY_CTX * dst, EVP_PKEY_CTX * src) | - |
34 | { | - |
35 | EC_PKEY_CTX *dctx, *sctx; | - |
36 | if (!pkey_ec_init(dst)TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
37 | return never executed: return 0; 0;never executed: return 0; | 0 |
38 | sctx = src->data; | - |
39 | dctx = dst->data; | - |
40 | if (sctx->gen_groupTRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
41 | dctx->gen_group = EC_GROUP_dup(sctx->gen_group); | - |
42 | if (!dctx->gen_groupTRUE | never evaluated | FALSE | never evaluated |
) | 0 |
43 | return never executed: return 0; 0;never executed: return 0; | 0 |
44 | } never executed: end of block | 0 |
45 | dctx->md = sctx->md; | - |
46 | return never executed: return 1; 1;never executed: return 1; | 0 |
47 | } | - |
48 | | - |
49 | static void | - |
50 | pkey_ec_cleanup(EVP_PKEY_CTX * ctx) | - |
51 | { | - |
52 | EC_PKEY_CTX *dctx = ctx->data; | - |
53 | if (dctxTRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
54 | EC_GROUP_free(dctx->gen_group); | - |
55 | free(dctx); | - |
56 | } never executed: end of block | 0 |
57 | } never executed: end of block | 0 |
58 | | - |
59 | static int | - |
60 | pkey_ec_sign(EVP_PKEY_CTX * ctx, unsigned char *sig, size_t * siglen, | - |
61 | const unsigned char *tbs, size_t tbslen) | - |
62 | { | - |
63 | int ret, type; | - |
64 | unsigned int sltmp; | - |
65 | EC_PKEY_CTX *dctx = ctx->data; | - |
66 | EC_KEY *ec = ctx->pkey->pkey.ec; | - |
67 | | - |
68 | if (!sigTRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
69 | *siglen = ECDSA_size(ec); | - |
70 | return never executed: return 1; 1;never executed: return 1; | 0 |
71 | } else if (*TRUE | never evaluated | FALSE | never evaluated |
siglen < (size_t) ECDSA_size(ec)TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
72 | ERR_put_error(16,(0xfff),(100),__FILE__,135); | - |
73 | return never executed: return 0; 0;never executed: return 0; | 0 |
74 | } | - |
75 | if (dctx->mdTRUE | never evaluated | FALSE | never evaluated |
) | 0 |
76 | type = EVP_MD_type(dctx->md); never executed: type = EVP_MD_type(dctx->md); | 0 |
77 | else | - |
78 | type = 64; never executed: type = 64; | 0 |
79 | | - |
80 | | - |
81 | ret = ECDSA_sign(type, tbs, tbslen, sig, &sltmp, ec); | - |
82 | | - |
83 | if (ret <= 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
84 | return never executed: return ret; ret;never executed: return ret; | 0 |
85 | *siglen = (size_t) sltmp; | - |
86 | return never executed: return 1; 1;never executed: return 1; | 0 |
87 | } | - |
88 | | - |
89 | static int | - |
90 | pkey_ec_verify(EVP_PKEY_CTX * ctx, | - |
91 | const unsigned char *sig, size_t siglen, | - |
92 | const unsigned char *tbs, size_t tbslen) | - |
93 | { | - |
94 | int ret, type; | - |
95 | EC_PKEY_CTX *dctx = ctx->data; | - |
96 | EC_KEY *ec = ctx->pkey->pkey.ec; | - |
97 | | - |
98 | if (dctx->mdTRUE | never evaluated | FALSE | never evaluated |
) | 0 |
99 | type = EVP_MD_type(dctx->md); never executed: type = EVP_MD_type(dctx->md); | 0 |
100 | else | - |
101 | type = 64; never executed: type = 64; | 0 |
102 | | - |
103 | ret = ECDSA_verify(type, tbs, tbslen, sig, siglen, ec); | - |
104 | | - |
105 | return never executed: return ret; ret;never executed: return ret; | 0 |
106 | } | - |
107 | | - |
108 | static int | - |
109 | pkey_ec_derive(EVP_PKEY_CTX * ctx, unsigned char *key, size_t * keylen) | - |
110 | { | - |
111 | int ret; | - |
112 | size_t outlen; | - |
113 | const EC_POINT *pubkey = | - |
114 | ((void *)0) | - |
115 | ; | - |
116 | if (!ctx->pkeyTRUE | never evaluated | FALSE | never evaluated |
|| !ctx->peerkeyTRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
117 | ERR_put_error(16,(0xfff),(140),__FILE__,178); | - |
118 | return never executed: return 0; 0;never executed: return 0; | 0 |
119 | } | - |
120 | if (!keyTRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
121 | const EC_GROUP *group; | - |
122 | group = EC_KEY_get0_group(ctx->pkey->pkey.ec); | - |
123 | *keylen = (EC_GROUP_get_degree(group) + 7) / 8; | - |
124 | return never executed: return 1; 1;never executed: return 1; | 0 |
125 | } | - |
126 | pubkey = EC_KEY_get0_public_key(ctx->peerkey->pkey.ec); | - |
127 | | - |
128 | | - |
129 | | - |
130 | | - |
131 | | - |
132 | | - |
133 | outlen = *keylen; | - |
134 | | - |
135 | ret = ECDH_compute_key(key, outlen, pubkey, ctx->pkey->pkey.ec, 0); | - |
136 | if (ret < 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
137 | return never executed: return ret; ret;never executed: return ret; | 0 |
138 | *keylen = ret; | - |
139 | return never executed: return 1; 1;never executed: return 1; | 0 |
140 | } | - |
141 | | - |
142 | static int | - |
143 | pkey_ec_ctrl(EVP_PKEY_CTX * ctx, int type, int p1, void *p2) | - |
144 | { | - |
145 | EC_PKEY_CTX *dctx = ctx->data; | - |
146 | EC_GROUP *group; | - |
147 | switch (type) { | - |
148 | case never executed: case (0x1000 + 1): (0x1000 + 1):never executed: case (0x1000 + 1): | 0 |
149 | group = EC_GROUP_new_by_curve_name(p1); | - |
150 | if (group == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
151 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
152 | ) { | - |
153 | ERR_put_error(16,(0xfff),(141),__FILE__,212); | - |
154 | return never executed: return 0; 0;never executed: return 0; | 0 |
155 | } | - |
156 | EC_GROUP_free(dctx->gen_group); | - |
157 | dctx->gen_group = group; | - |
158 | return never executed: return 1; 1;never executed: return 1; | 0 |
159 | | - |
160 | case never executed: case 1: 1:never executed: case 1: | 0 |
161 | if (EVP_MD_type((const EVP_MD *) p2) != 64TRUE | never evaluated | FALSE | never evaluated |
&& | 0 |
162 | EVP_MD_type((const EVP_MD *) p2) != 416TRUE | never evaluated | FALSE | never evaluated |
&& | 0 |
163 | EVP_MD_type((const EVP_MD *) p2) != 675TRUE | never evaluated | FALSE | never evaluated |
&& | 0 |
164 | EVP_MD_type((const EVP_MD *) p2) != 672TRUE | never evaluated | FALSE | never evaluated |
&& | 0 |
165 | EVP_MD_type((const EVP_MD *) p2) != 673TRUE | never evaluated | FALSE | never evaluated |
&& | 0 |
166 | EVP_MD_type((const EVP_MD *) p2) != 674TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
167 | ERR_put_error(16,(0xfff),(138),__FILE__,226); | - |
168 | return never executed: return 0; 0;never executed: return 0; | 0 |
169 | } | - |
170 | dctx->md = p2; | - |
171 | return never executed: return 1; 1;never executed: return 1; | 0 |
172 | | - |
173 | case never executed: case 2: 2:never executed: case 2: | 0 |
174 | | - |
175 | case never executed: case 7: 7:never executed: case 7: | 0 |
176 | case never executed: case 5: 5:never executed: case 5: | 0 |
177 | case never executed: case 11: 11:never executed: case 11: | 0 |
178 | return never executed: return 1; 1;never executed: return 1; | 0 |
179 | | - |
180 | default never executed: default: :never executed: default: | 0 |
181 | return never executed: return -2; -2;never executed: return -2; | 0 |
182 | | - |
183 | } | - |
184 | } | - |
185 | | - |
186 | static int | - |
187 | pkey_ec_ctrl_str(EVP_PKEY_CTX * ctx, | - |
188 | const char *type, const char *value) | - |
189 | { | - |
190 | if (!TRUE | never evaluated | FALSE | never evaluated |
| 0 |
191 | __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
192 | typeTRUE | never evaluated | FALSE | never evaluated |
| 0 |
193 | ) && __builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
194 | "ec_paramgen_curve"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
195 | ) && (__s1_len = __builtin_strlen (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
196 | typeTRUE | never evaluated | FALSE | never evaluated |
| 0 |
197 | ), __s2_len = __builtin_strlen (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
198 | "ec_paramgen_curve"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
199 | ), (!((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
200 | typeTRUE | never evaluated | FALSE | never evaluated |
| 0 |
201 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
202 | typeTRUE | never evaluated | FALSE | never evaluated |
| 0 |
203 | ) == 1) || __s1_len >= 4) && (!((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
204 | "ec_paramgen_curve"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
205 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
206 | "ec_paramgen_curve"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
207 | ) == 1) || __s2_len >= 4)) ? __builtin_strcmp (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
208 | typeTRUE | never evaluated | FALSE | never evaluated |
| 0 |
209 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
210 | "ec_paramgen_curve"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
211 | ) : (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
212 | typeTRUE | never evaluated | FALSE | never evaluated |
| 0 |
213 | ) && ((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
214 | typeTRUE | never evaluated | FALSE | never evaluated |
| 0 |
215 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
216 | typeTRUE | never evaluated | FALSE | never evaluated |
| 0 |
217 | ) == 1) && (__s1_len = __builtin_strlen (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
218 | typeTRUE | never evaluated | FALSE | never evaluated |
| 0 |
219 | ), __s1_len < 4) ? (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
220 | "ec_paramgen_curve"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
221 | ) && ((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
222 | "ec_paramgen_curve"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
223 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
224 | "ec_paramgen_curve"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
225 | ) == 1) ? __builtin_strcmp (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
226 | typeTRUE | never evaluated | FALSE | never evaluated |
| 0 |
227 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
228 | "ec_paramgen_curve"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
229 | ) : (__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
230 | "ec_paramgen_curve"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
231 | ); int __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
232 | typeTRUE | never evaluated | FALSE | never evaluated |
| 0 |
233 | ))[0] - __s2[0]); if (__s1_len > 0TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) { __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
234 | typeTRUE | never evaluated | FALSE | never evaluated |
| 0 |
235 | ))[1] - __s2[1]); if (__s1_len > 1TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) { __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
236 | typeTRUE | never evaluated | FALSE | never evaluated |
| 0 |
237 | ))[2] - __s2[2]); if (__s1_len > 2TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) __result = (((const unsigned char *) (const char *) (never executed: __result = (((const unsigned char *) (const char *) ( type ))[3] - __s2[3]); | 0 |
238 | typeTRUE | never evaluated | FALSE | never evaluated |
never executed: __result = (((const unsigned char *) (const char *) ( type ))[3] - __s2[3]); | 0 |
239 | ))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
240 | "ec_paramgen_curve"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
241 | ) && ((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
242 | "ec_paramgen_curve"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
243 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
244 | "ec_paramgen_curve"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
245 | ) == 1) && (__s2_len = __builtin_strlen (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
246 | "ec_paramgen_curve"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
247 | ), __s2_len < 4) ? (__builtin_constant_p (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
248 | typeTRUE | never evaluated | FALSE | never evaluated |
| 0 |
249 | ) && ((size_t)(const void *)((TRUE | never evaluated | FALSE | never evaluated |
| 0 |
250 | typeTRUE | never evaluated | FALSE | never evaluated |
| 0 |
251 | ) + 1) - (size_t)(const void *)(TRUE | never evaluated | FALSE | never evaluated |
| 0 |
252 | typeTRUE | never evaluated | FALSE | never evaluated |
| 0 |
253 | ) == 1) ? __builtin_strcmp (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
254 | typeTRUE | never evaluated | FALSE | never evaluated |
| 0 |
255 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
256 | "ec_paramgen_curve"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
257 | ) : -(__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
258 | typeTRUE | never evaluated | FALSE | never evaluated |
| 0 |
259 | ); int __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
260 | "ec_paramgen_curve"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
261 | ))[0] - __s2[0]); if (__s2_len > 0TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) { __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
262 | "ec_paramgen_curve"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
263 | ))[1] - __s2[1]); if (__s2_len > 1TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) { __result = (((const unsigned char *) (const char *) (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
264 | "ec_paramgen_curve"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
265 | ))[2] - __s2[2]); if (__s2_len > 2TRUE | never evaluated | FALSE | never evaluated |
&& __result == 0TRUE | never evaluated | FALSE | never evaluated |
) __result = (((const unsigned char *) (const char *) (never executed: __result = (((const unsigned char *) (const char *) ( "ec_paramgen_curve" ))[3] - __s2[3]); | 0 |
266 | "ec_paramgen_curve"TRUE | never evaluated | FALSE | never evaluated |
never executed: __result = (((const unsigned char *) (const char *) ( "ec_paramgen_curve" ))[3] - __s2[3]); | 0 |
267 | ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp (TRUE | never evaluated | FALSE | never evaluated |
| 0 |
268 | typeTRUE | never evaluated | FALSE | never evaluated |
| 0 |
269 | , TRUE | never evaluated | FALSE | never evaluated |
| 0 |
270 | "ec_paramgen_curve"TRUE | never evaluated | FALSE | never evaluated |
| 0 |
271 | )))); })TRUE | never evaluated | FALSE | never evaluated |
| 0 |
272 | ) { | - |
273 | int nid; | - |
274 | nid = EC_curve_nist2nid(value); | - |
275 | if (nid == 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
276 | nid = OBJ_sn2nid(value); never executed: nid = OBJ_sn2nid(value); | 0 |
277 | if (nid == 0TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
278 | nid = OBJ_ln2nid(value); never executed: nid = OBJ_ln2nid(value); | 0 |
279 | if (nid == 0TRUE | never evaluated | FALSE | never evaluated |
) { | 0 |
280 | ERR_put_error(16,(0xfff),(141),__FILE__,257); | - |
281 | return never executed: return 0; 0;never executed: return 0; | 0 |
282 | } | - |
283 | return never executed: return EVP_PKEY_CTX_ctrl(ctx, 408, (1<<1), (0x1000 + 1), nid, ((void *)0) ); EVP_PKEY_CTX_ctrl(ctx, 408, (1<<1), (0x1000 + 1), nid, never executed: return EVP_PKEY_CTX_ctrl(ctx, 408, (1<<1), (0x1000 + 1), nid, ((void *)0) ); | 0 |
284 | ((void *)0) never executed: return EVP_PKEY_CTX_ctrl(ctx, 408, (1<<1), (0x1000 + 1), nid, ((void *)0) ); | 0 |
285 | ); never executed: return EVP_PKEY_CTX_ctrl(ctx, 408, (1<<1), (0x1000 + 1), nid, ((void *)0) ); | 0 |
286 | } | - |
287 | return never executed: return -2; -2;never executed: return -2; | 0 |
288 | } | - |
289 | | - |
290 | static int | - |
291 | pkey_ec_paramgen(EVP_PKEY_CTX * ctx, EVP_PKEY * pkey) | - |
292 | { | - |
293 | EC_KEY *ec = | - |
294 | ((void *)0) | - |
295 | ; | - |
296 | EC_PKEY_CTX *dctx = ctx->data; | - |
297 | int ret = 0; | - |
298 | if (dctx->gen_group == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
299 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
300 | ) { | - |
301 | ERR_put_error(16,(0xfff),(139),__FILE__,272); | - |
302 | return never executed: return 0; 0;never executed: return 0; | 0 |
303 | } | - |
304 | ec = EC_KEY_new(); | - |
305 | if (!ecTRUE | never evaluated | FALSE | never evaluated |
) | 0 |
306 | return never executed: return 0; 0;never executed: return 0; | 0 |
307 | ret = EC_KEY_set_group(ec, dctx->gen_group); | - |
308 | if (retTRUE | never evaluated | FALSE | never evaluated |
) | 0 |
309 | EVP_PKEY_assign((pkey),408, (char *)(ec)); never executed: EVP_PKEY_assign((pkey),408, (char *)(ec)); | 0 |
310 | else | - |
311 | EC_KEY_free(ec); never executed: EC_KEY_free(ec); | 0 |
312 | return never executed: return ret; ret;never executed: return ret; | 0 |
313 | } | - |
314 | | - |
315 | static int | - |
316 | pkey_ec_keygen(EVP_PKEY_CTX * ctx, EVP_PKEY * pkey) | - |
317 | { | - |
318 | EC_KEY *ec = | - |
319 | ((void *)0) | - |
320 | ; | - |
321 | if (ctx->pkey == TRUE | never evaluated | FALSE | never evaluated |
| 0 |
322 | ((void *)0)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
323 | ) { | - |
324 | ERR_put_error(16,(0xfff),(139),__FILE__,291); | - |
325 | return never executed: return 0; 0;never executed: return 0; | 0 |
326 | } | - |
327 | ec = EC_KEY_new(); | - |
328 | if (!ecTRUE | never evaluated | FALSE | never evaluated |
) | 0 |
329 | return never executed: return 0; 0;never executed: return 0; | 0 |
330 | EVP_PKEY_assign((pkey),408, (char *)(ec)); | - |
331 | | - |
332 | if (!EVP_PKEY_copy_parameters(pkey, ctx->pkey)TRUE | never evaluated | FALSE | never evaluated |
) | 0 |
333 | return never executed: return 0; 0;never executed: return 0; | 0 |
334 | return never executed: return EC_KEY_generate_key(pkey->pkey.ec); EC_KEY_generate_key(pkey->pkey.ec);never executed: return EC_KEY_generate_key(pkey->pkey.ec); | 0 |
335 | } | - |
336 | | - |
337 | const EVP_PKEY_METHOD ec_pkey_meth = { | - |
338 | .pkey_id = 408, | - |
339 | | - |
340 | .init = pkey_ec_init, | - |
341 | .copy = pkey_ec_copy, | - |
342 | .cleanup = pkey_ec_cleanup, | - |
343 | | - |
344 | .paramgen = pkey_ec_paramgen, | - |
345 | | - |
346 | .keygen = pkey_ec_keygen, | - |
347 | | - |
348 | .sign = pkey_ec_sign, | - |
349 | | - |
350 | .verify = pkey_ec_verify, | - |
351 | | - |
352 | .derive = pkey_ec_derive, | - |
353 | | - |
354 | .ctrl = pkey_ec_ctrl, | - |
355 | .ctrl_str = pkey_ec_ctrl_str | - |
356 | }; | - |
| | |