| 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 (!dctx| TRUE | 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_group| TRUE | never evaluated | | FALSE | never evaluated |
) { | 0 |
| 41 | dctx->gen_group = EC_GROUP_dup(sctx->gen_group); | - |
| 42 | if (!dctx->gen_group| TRUE | 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 (dctx| TRUE | 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 (!sig| TRUE | 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->md| TRUE | 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 <= 0| TRUE | 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->md| TRUE | 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->pkey| TRUE | never evaluated | | FALSE | never evaluated |
|| !ctx->peerkey| TRUE | 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 (!key| TRUE | 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 < 0| TRUE | 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) != 64| TRUE | never evaluated | | FALSE | never evaluated |
&& | 0 |
| 162 | EVP_MD_type((const EVP_MD *) p2) != 416| TRUE | never evaluated | | FALSE | never evaluated |
&& | 0 |
| 163 | EVP_MD_type((const EVP_MD *) p2) != 675| TRUE | never evaluated | | FALSE | never evaluated |
&& | 0 |
| 164 | EVP_MD_type((const EVP_MD *) p2) != 672| TRUE | never evaluated | | FALSE | never evaluated |
&& | 0 |
| 165 | EVP_MD_type((const EVP_MD *) p2) != 673| TRUE | never evaluated | | FALSE | never evaluated |
&& | 0 |
| 166 | EVP_MD_type((const EVP_MD *) p2) != 674| TRUE | 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 | type| TRUE | 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 | type| TRUE | 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 | type| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 201 | ) + 1) - (size_t)(const void *)(| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 202 | type| TRUE | 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 | type| TRUE | 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 | type| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 213 | ) && ((size_t)(const void *)((| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 214 | type| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 215 | ) + 1) - (size_t)(const void *)(| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 216 | type| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 217 | ) == 1) && (__s1_len = __builtin_strlen (| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 218 | type| TRUE | 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 | type| TRUE | 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 | type| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 233 | ))[0] - __s2[0]); if (__s1_len > 0| TRUE | never evaluated | | FALSE | never evaluated |
&& __result == 0| TRUE | never evaluated | | FALSE | never evaluated |
) { __result = (((const unsigned char *) (const char *) (| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 234 | type| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 235 | ))[1] - __s2[1]); if (__s1_len > 1| TRUE | never evaluated | | FALSE | never evaluated |
&& __result == 0| TRUE | never evaluated | | FALSE | never evaluated |
) { __result = (((const unsigned char *) (const char *) (| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 236 | type| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 237 | ))[2] - __s2[2]); if (__s1_len > 2| TRUE | never evaluated | | FALSE | never evaluated |
&& __result == 0| TRUE | 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 | type| TRUE | 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 | type| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 249 | ) && ((size_t)(const void *)((| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 250 | type| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 251 | ) + 1) - (size_t)(const void *)(| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 252 | type| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 253 | ) == 1) ? __builtin_strcmp (| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 254 | type| TRUE | 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 | type| TRUE | 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 > 0| TRUE | never evaluated | | FALSE | never evaluated |
&& __result == 0| TRUE | 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 > 1| TRUE | never evaluated | | FALSE | never evaluated |
&& __result == 0| TRUE | 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 > 2| TRUE | never evaluated | | FALSE | never evaluated |
&& __result == 0| TRUE | 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 | type| TRUE | 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 == 0| TRUE | never evaluated | | FALSE | never evaluated |
) | 0 |
| 276 | nid = OBJ_sn2nid(value); never executed: nid = OBJ_sn2nid(value); | 0 |
| 277 | if (nid == 0| TRUE | never evaluated | | FALSE | never evaluated |
) | 0 |
| 278 | nid = OBJ_ln2nid(value); never executed: nid = OBJ_ln2nid(value); | 0 |
| 279 | if (nid == 0| TRUE | 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 (!ec| TRUE | 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 (ret| TRUE | 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 (!ec| TRUE | 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 | }; | - |
| | |