| Line | Source | Count | 
|---|
| 1 |  | - | 
| 2 |  | - | 
| 3 |  | - | 
| 4 |  | - | 
| 5 |  | - | 
| 6 |  | - | 
| 7 | typedef struct { | - | 
| 8 |  | - | 
| 9 | int prime_len; | - | 
| 10 | int generator; | - | 
| 11 | int use_dsa; | - | 
| 12 |  | - | 
| 13 | int gentmp[2]; | - | 
| 14 |  | - | 
| 15 | } DH_PKEY_CTX; | - | 
| 16 |  | - | 
| 17 | static int | - | 
| 18 | pkey_dh_init(EVP_PKEY_CTX *ctx) | - | 
| 19 | { | - | 
| 20 | DH_PKEY_CTX *dctx; | - | 
| 21 |  | - | 
| 22 | dctx = malloc(sizeof(DH_PKEY_CTX)); | - | 
| 23 | if (!dctx )| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 24 | return never executed: 0;return 0; never executed: return 0; | 0 | 
| 25 | dctx->prime_len = 1024; | - | 
| 26 | dctx->generator = 2; | - | 
| 27 | dctx->use_dsa = 0; | - | 
| 28 |  | - | 
| 29 | ctx->data = dctx; | - | 
| 30 | ctx->keygen_info = dctx->gentmp; | - | 
| 31 | ctx->keygen_info_count = 2; | - | 
| 32 |  | - | 
| 33 | return never executed: 1;return 1; never executed: return 1; | 0 | 
| 34 | } | - | 
| 35 |  | - | 
| 36 | static int | - | 
| 37 | pkey_dh_copy(EVP_PKEY_CTX *dst, EVP_PKEY_CTX *src) | - | 
| 38 | { | - | 
| 39 | DH_PKEY_CTX *dctx, *sctx; | - | 
| 40 |  | - | 
| 41 | if (!pkey_dh_init(dst) )| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 42 | return never executed: 0;return 0; never executed: return 0; | 0 | 
| 43 | sctx = src->data; | - | 
| 44 | dctx = dst->data; | - | 
| 45 | dctx->prime_len = sctx->prime_len; | - | 
| 46 | dctx->generator = sctx->generator; | - | 
| 47 | dctx->use_dsa = sctx->use_dsa; | - | 
| 48 | return never executed: 1;return 1; never executed: return 1; | 0 | 
| 49 | } | - | 
| 50 |  | - | 
| 51 | static void | - | 
| 52 | pkey_dh_cleanup(EVP_PKEY_CTX *ctx) | - | 
| 53 | { | - | 
| 54 | DH_PKEY_CTX *dctx = ctx->data; | - | 
| 55 |  | - | 
| 56 | free(dctx); | - | 
| 57 | } never executed: end of block | 0 | 
| 58 |  | - | 
| 59 | static int | - | 
| 60 | pkey_dh_ctrl(EVP_PKEY_CTX *ctx, int type, int p1, void *p2) | - | 
| 61 | { | - | 
| 62 | DH_PKEY_CTX *dctx = ctx->data; | - | 
| 63 |  | - | 
| 64 | switch (type) { | - | 
| 65 | case never executed: (0x1000 + 1):case (0x1000 + 1): never executed: case (0x1000 + 1): | 0 | 
| 66 | if (p1 < 256 )| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 67 | return never executed: -2;return -2; never executed: return -2; | 0 | 
| 68 | dctx->prime_len = p1; | - | 
| 69 | return never executed: 1;return 1; never executed: return 1; | 0 | 
| 70 |  | - | 
| 71 | case never executed: (0x1000 + 2):case (0x1000 + 2): never executed: case (0x1000 + 2): | 0 | 
| 72 | dctx->generator = p1; | - | 
| 73 | return never executed: 1;return 1; never executed: return 1; | 0 | 
| 74 |  | - | 
| 75 | case never executed: 2:case 2: never executed: case 2: | 0 | 
| 76 |  | - | 
| 77 | return never executed: 1;return 1; never executed: return 1; | 0 | 
| 78 |  | - | 
| 79 | default never executed: :default: never executed: default: | 0 | 
| 80 | return never executed: -2;return -2; never executed: return -2; | 0 | 
| 81 | } | - | 
| 82 | } | - | 
| 83 |  | - | 
| 84 | static int | - | 
| 85 | pkey_dh_ctrl_str(EVP_PKEY_CTX *ctx, const char *type, const char *value) | - | 
| 86 | { | - | 
| 87 | long lval; | - | 
| 88 | char *ep; | - | 
| 89 | int len; | - | 
| 90 |  | - | 
| 91 | if (! | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 92 | __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 93 | type | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 94 | ) && __builtin_constant_p ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 95 | "dh_paramgen_prime_len" | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 96 | ) && (__s1_len = __builtin_strlen ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 97 | type | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 98 | ), __s2_len = __builtin_strlen ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 99 | "dh_paramgen_prime_len" | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 100 | ), (!((size_t)(const void *)(( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 101 | type | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 102 | ) + 1) - (size_t)(const void *)( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 103 | type | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 104 | ) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 105 | "dh_paramgen_prime_len" | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 106 | ) + 1) - (size_t)(const void *)( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 107 | "dh_paramgen_prime_len" | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 108 | ) == 1) || __s2_len >= 4)) ? __builtin_strcmp ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 109 | type | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 110 | , | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 111 | "dh_paramgen_prime_len" | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 112 | ) : (__builtin_constant_p ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 113 | type | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 114 | ) && ((size_t)(const void *)(( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 115 | type | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 116 | ) + 1) - (size_t)(const void *)( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 117 | type | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 118 | ) == 1) && (__s1_len = __builtin_strlen ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 119 | type | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 120 | ), __s1_len < 4) ? (__builtin_constant_p ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 121 | "dh_paramgen_prime_len" | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 122 | ) && ((size_t)(const void *)(( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 123 | "dh_paramgen_prime_len" | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 124 | ) + 1) - (size_t)(const void *)( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 125 | "dh_paramgen_prime_len" | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 126 | ) == 1) ? __builtin_strcmp ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 127 | type | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 128 | , | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 129 | "dh_paramgen_prime_len" | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 130 | ) : (__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 131 | "dh_paramgen_prime_len" | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 132 | ); int __result = (((const unsigned char *) (const char *) ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 133 | type | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 134 | ))[0] - __s2[0]); if (__s1_len > 0 && __result == 0| TRUE | never evaluated |  | FALSE | never evaluated | 
) { __result = (((const unsigned char *) (const char *) (| TRUE | never evaluated |  | FALSE | never evaluated | 
| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 135 | type | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 136 | ))[1] - __s2[1]); if (__s1_len > 1 && __result == 0| TRUE | never evaluated |  | FALSE | never evaluated | 
) { __result = (((const unsigned char *) (const char *) (| TRUE | never evaluated |  | FALSE | never evaluated | 
| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 137 | type | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 138 | ))[2] - __s2[2]); if (__s1_len > 2 && __result == 0| TRUE | never evaluated |  | FALSE | never evaluated | 
) __result = (((const unsigned char *) (const char *) (| TRUE | never evaluated |  | FALSE | never evaluated | 
never executed: __result = (((const unsigned char *) (const char *) ( type ))[3] - __s2[3]); | 0 | 
| 139 | type | TRUE | never evaluated |  | FALSE | never evaluated | 
never executed: __result = (((const unsigned char *) (const char *) ( type ))[3] - __s2[3]); | 0 | 
| 140 | ))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 141 | "dh_paramgen_prime_len" | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 142 | ) && ((size_t)(const void *)(( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 143 | "dh_paramgen_prime_len" | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 144 | ) + 1) - (size_t)(const void *)( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 145 | "dh_paramgen_prime_len" | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 146 | ) == 1) && (__s2_len = __builtin_strlen ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 147 | "dh_paramgen_prime_len" | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 148 | ), __s2_len < 4) ? (__builtin_constant_p ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 149 | type | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 150 | ) && ((size_t)(const void *)(( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 151 | type | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 152 | ) + 1) - (size_t)(const void *)( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 153 | type | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 154 | ) == 1) ? __builtin_strcmp ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 155 | type | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 156 | , | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 157 | "dh_paramgen_prime_len" | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 158 | ) : -(__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 159 | type | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 160 | ); int __result = (((const unsigned char *) (const char *) ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 161 | "dh_paramgen_prime_len" | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 162 | ))[0] - __s2[0]); if (__s2_len > 0 && __result == 0| TRUE | never evaluated |  | FALSE | never evaluated | 
) { __result = (((const unsigned char *) (const char *) (| TRUE | never evaluated |  | FALSE | never evaluated | 
| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 163 | "dh_paramgen_prime_len" | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 164 | ))[1] - __s2[1]); if (__s2_len > 1 && __result == 0| TRUE | never evaluated |  | FALSE | never evaluated | 
) { __result = (((const unsigned char *) (const char *) (| TRUE | never evaluated |  | FALSE | never evaluated | 
| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 165 | "dh_paramgen_prime_len" | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 166 | ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0| TRUE | never evaluated |  | FALSE | never evaluated | 
) __result = (((const unsigned char *) (const char *) (| TRUE | never evaluated |  | FALSE | never evaluated | 
never executed: __result = (((const unsigned char *) (const char *) ( "dh_paramgen_prime_len" ))[3] - __s2[3]); | 0 | 
| 167 | "dh_paramgen_prime_len" | TRUE | never evaluated |  | FALSE | never evaluated | 
never executed: __result = (((const unsigned char *) (const char *) ( "dh_paramgen_prime_len" ))[3] - __s2[3]); | 0 | 
| 168 | ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 169 | type | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 170 | , | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 171 | "dh_paramgen_prime_len" | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 172 | )))); }) | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 173 | ) { | - | 
| 174 |  | - | 
| 175 | (*__errno_location ()) | - | 
| 176 | = 0; | - | 
| 177 | lval = strtol(value, &ep, 10); | - | 
| 178 | if (value[0] == '\0' || *| TRUE | never evaluated |  | FALSE | never evaluated | 
ep != '\0'| TRUE | never evaluated |  | FALSE | never evaluated | 
)| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 179 | goto never executed: not_a_number;goto not_a_number; never executed: goto not_a_number; | 0 | 
| 180 | if (( | - | 
| 181 | (* __errno_location ())| TRUE | never evaluated |  | FALSE | never evaluated | 
| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 182 | == | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 183 | 34 | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 184 | && | - | 
| 185 | (lval == 0x7fffffffffffffffL || lval ==| TRUE | never evaluated |  | FALSE | never evaluated | 
| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 186 | (-0x7fffffffffffffffL - 1L) | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 187 | )) || | - | 
| 188 | (lval > 0x7fffffff || lval <| TRUE | never evaluated |  | FALSE | never evaluated | 
| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 189 | (-0x7fffffff - 1) | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 190 | )) | - | 
| 191 | goto never executed: out_of_range;goto out_of_range; never executed: goto out_of_range; | 0 | 
| 192 | len = lval; | - | 
| 193 | return never executed: EVP_PKEY_CTX_ctrl(ctx, 28, (1<<1), (0x1000 + 1), len,return EVP_PKEY_CTX_ctrl(ctx, 28, (1<<1), (0x1000 + 1), len, ((void *)0) ); never executed: return EVP_PKEY_CTX_ctrl(ctx, 28, (1<<1), (0x1000 + 1), len, ((void *)0) ); | 0 | 
| 194 | ((void *)0) never executed: return EVP_PKEY_CTX_ctrl(ctx, 28, (1<<1), (0x1000 + 1), len, ((void *)0) ); | 0 | 
| 195 | ); never executed: return EVP_PKEY_CTX_ctrl(ctx, 28, (1<<1), (0x1000 + 1), len, ((void *)0) ); | 0 | 
| 196 | } else if (! | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 197 | __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 198 | type | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 199 | ) && __builtin_constant_p ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 200 | "dh_paramgen_generator" | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 201 | ) && (__s1_len = __builtin_strlen ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 202 | type | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 203 | ), __s2_len = __builtin_strlen ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 204 | "dh_paramgen_generator" | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 205 | ), (!((size_t)(const void *)(( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 206 | type | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 207 | ) + 1) - (size_t)(const void *)( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 208 | type | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 209 | ) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 210 | "dh_paramgen_generator" | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 211 | ) + 1) - (size_t)(const void *)( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 212 | "dh_paramgen_generator" | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 213 | ) == 1) || __s2_len >= 4)) ? __builtin_strcmp ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 214 | type | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 215 | , | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 216 | "dh_paramgen_generator" | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 217 | ) : (__builtin_constant_p ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 218 | type | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 219 | ) && ((size_t)(const void *)(( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 220 | type | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 221 | ) + 1) - (size_t)(const void *)( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 222 | type | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 223 | ) == 1) && (__s1_len = __builtin_strlen ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 224 | type | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 225 | ), __s1_len < 4) ? (__builtin_constant_p ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 226 | "dh_paramgen_generator" | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 227 | ) && ((size_t)(const void *)(( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 228 | "dh_paramgen_generator" | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 229 | ) + 1) - (size_t)(const void *)( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 230 | "dh_paramgen_generator" | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 231 | ) == 1) ? __builtin_strcmp ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 232 | type | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 233 | , | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 234 | "dh_paramgen_generator" | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 235 | ) : (__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 236 | "dh_paramgen_generator" | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 237 | ); int __result = (((const unsigned char *) (const char *) ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 238 | type | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 239 | ))[0] - __s2[0]); if (__s1_len > 0 && __result == 0| TRUE | never evaluated |  | FALSE | never evaluated | 
) { __result = (((const unsigned char *) (const char *) (| TRUE | never evaluated |  | FALSE | never evaluated | 
| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 240 | type | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 241 | ))[1] - __s2[1]); if (__s1_len > 1 && __result == 0| TRUE | never evaluated |  | FALSE | never evaluated | 
) { __result = (((const unsigned char *) (const char *) (| TRUE | never evaluated |  | FALSE | never evaluated | 
| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 242 | type | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 243 | ))[2] - __s2[2]); if (__s1_len > 2 && __result == 0| TRUE | never evaluated |  | FALSE | never evaluated | 
) __result = (((const unsigned char *) (const char *) (| TRUE | never evaluated |  | FALSE | never evaluated | 
never executed: __result = (((const unsigned char *) (const char *) ( type ))[3] - __s2[3]); | 0 | 
| 244 | type | TRUE | never evaluated |  | FALSE | never evaluated | 
never executed: __result = (((const unsigned char *) (const char *) ( type ))[3] - __s2[3]); | 0 | 
| 245 | ))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 246 | "dh_paramgen_generator" | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 247 | ) && ((size_t)(const void *)(( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 248 | "dh_paramgen_generator" | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 249 | ) + 1) - (size_t)(const void *)( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 250 | "dh_paramgen_generator" | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 251 | ) == 1) && (__s2_len = __builtin_strlen ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 252 | "dh_paramgen_generator" | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 253 | ), __s2_len < 4) ? (__builtin_constant_p ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 254 | type | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 255 | ) && ((size_t)(const void *)(( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 256 | type | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 257 | ) + 1) - (size_t)(const void *)( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 258 | type | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 259 | ) == 1) ? __builtin_strcmp ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 260 | type | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 261 | , | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 262 | "dh_paramgen_generator" | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 263 | ) : -(__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 264 | type | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 265 | ); int __result = (((const unsigned char *) (const char *) ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 266 | "dh_paramgen_generator" | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 267 | ))[0] - __s2[0]); if (__s2_len > 0 && __result == 0| TRUE | never evaluated |  | FALSE | never evaluated | 
) { __result = (((const unsigned char *) (const char *) (| TRUE | never evaluated |  | FALSE | never evaluated | 
| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 268 | "dh_paramgen_generator" | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 269 | ))[1] - __s2[1]); if (__s2_len > 1 && __result == 0| TRUE | never evaluated |  | FALSE | never evaluated | 
) { __result = (((const unsigned char *) (const char *) (| TRUE | never evaluated |  | FALSE | never evaluated | 
| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 270 | "dh_paramgen_generator" | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 271 | ))[2] - __s2[2]); if (__s2_len > 2 && __result == 0| TRUE | never evaluated |  | FALSE | never evaluated | 
) __result = (((const unsigned char *) (const char *) (| TRUE | never evaluated |  | FALSE | never evaluated | 
never executed: __result = (((const unsigned char *) (const char *) ( "dh_paramgen_generator" ))[3] - __s2[3]); | 0 | 
| 272 | "dh_paramgen_generator" | TRUE | never evaluated |  | FALSE | never evaluated | 
never executed: __result = (((const unsigned char *) (const char *) ( "dh_paramgen_generator" ))[3] - __s2[3]); | 0 | 
| 273 | ))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp ( | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 274 | type | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 275 | , | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 276 | "dh_paramgen_generator" | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 277 | )))); }) | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 278 | ) { | - | 
| 279 |  | - | 
| 280 | (*__errno_location ()) | - | 
| 281 | = 0; | - | 
| 282 | lval = strtol(value, &ep, 10); | - | 
| 283 | if (value[0] == '\0' || *| TRUE | never evaluated |  | FALSE | never evaluated | 
ep != '\0'| TRUE | never evaluated |  | FALSE | never evaluated | 
)| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 284 | goto never executed: not_a_number;goto not_a_number; never executed: goto not_a_number; | 0 | 
| 285 | if (( | - | 
| 286 | (* __errno_location ())| TRUE | never evaluated |  | FALSE | never evaluated | 
| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 287 | == | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 288 | 34 | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 289 | && | - | 
| 290 | (lval == 0x7fffffffffffffffL || lval ==| TRUE | never evaluated |  | FALSE | never evaluated | 
| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 291 | (-0x7fffffffffffffffL - 1L) | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 292 | )) || | - | 
| 293 | (lval > 0x7fffffff || lval <| TRUE | never evaluated |  | FALSE | never evaluated | 
| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 294 | (-0x7fffffff - 1) | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 295 | )) | - | 
| 296 | goto never executed: out_of_range;goto out_of_range; never executed: goto out_of_range; | 0 | 
| 297 | len = lval; | - | 
| 298 | return never executed: EVP_PKEY_CTX_ctrl(ctx, 28, (1<<1), (0x1000 + 2), len,return EVP_PKEY_CTX_ctrl(ctx, 28, (1<<1), (0x1000 + 2), len, ((void *)0) ); never executed: return EVP_PKEY_CTX_ctrl(ctx, 28, (1<<1), (0x1000 + 2), len, ((void *)0) ); | 0 | 
| 299 | ((void *)0) never executed: return EVP_PKEY_CTX_ctrl(ctx, 28, (1<<1), (0x1000 + 2), len, ((void *)0) ); | 0 | 
| 300 | ); never executed: return EVP_PKEY_CTX_ctrl(ctx, 28, (1<<1), (0x1000 + 2), len, ((void *)0) ); | 0 | 
| 301 | } | - | 
| 302 |  | - | 
| 303 | not_a_number: code before this statement never executed: not_a_number: | 0 | 
| 304 | out_of_range: | - | 
| 305 | return never executed: -2;return -2; never executed: return -2; | 0 | 
| 306 | } | - | 
| 307 |  | - | 
| 308 | static int | - | 
| 309 | pkey_dh_paramgen(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey) | - | 
| 310 | { | - | 
| 311 | DH *dh = | - | 
| 312 | ((void *)0) | - | 
| 313 | ; | - | 
| 314 | DH_PKEY_CTX *dctx = ctx->data; | - | 
| 315 | BN_GENCB *pcb, cb; | - | 
| 316 | int ret; | - | 
| 317 |  | - | 
| 318 | if (ctx->pkey_gencb ) {| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 319 | pcb = &cb; | - | 
| 320 | evp_pkey_set_cb_translate(pcb, ctx); | - | 
| 321 | } never executed: elseend of block | 0 | 
| 322 | pcb = never executed: pcb = ((void *)0) ; | 0 | 
| 323 | ((void *)0) never executed: pcb = ((void *)0) ; | 0 | 
| 324 | ; never executed: pcb = ((void *)0) ; | 0 | 
| 325 | dh = DH_new(); | - | 
| 326 | if (!dh )| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 327 | return never executed: 0;return 0; never executed: return 0; | 0 | 
| 328 | ret = DH_generate_parameters_ex(dh, dctx->prime_len, dctx->generator, | - | 
| 329 | pcb); | - | 
| 330 | if (ret )| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 331 | EVP_PKEY_assign((pkey),28, (char *)(dh)); never executed: EVP_PKEY_assign((pkey),28, (char *)(dh)); | 0 | 
| 332 | else | - | 
| 333 | DH_free(dh); never executed: DH_free(dh); | 0 | 
| 334 | return never executed: ret;return ret; never executed: return ret; | 0 | 
| 335 | } | - | 
| 336 |  | - | 
| 337 | static int | - | 
| 338 | pkey_dh_keygen(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey) | - | 
| 339 | { | - | 
| 340 | DH *dh = | - | 
| 341 | ((void *)0) | - | 
| 342 | ; | - | 
| 343 |  | - | 
| 344 | if (ctx->pkey == | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 345 | ((void *)0) | TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 346 | ) { | - | 
| 347 | ERR_put_error(5,(0xfff),(107),__FILE__,218); | - | 
| 348 | return never executed: 0;return 0; never executed: return 0; | 0 | 
| 349 | } | - | 
| 350 | dh = DH_new(); | - | 
| 351 | if (!dh )| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 352 | return never executed: 0;return 0; never executed: return 0; | 0 | 
| 353 | EVP_PKEY_assign((pkey),28, (char *)(dh)); | - | 
| 354 |  | - | 
| 355 | if (!EVP_PKEY_copy_parameters(pkey, ctx->pkey) )| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 356 | return never executed: 0;return 0; never executed: return 0; | 0 | 
| 357 | return never executed: DH_generate_key(pkey->pkey.dh);return DH_generate_key(pkey->pkey.dh); never executed: return DH_generate_key(pkey->pkey.dh); | 0 | 
| 358 | } | - | 
| 359 |  | - | 
| 360 | static int | - | 
| 361 | pkey_dh_derive(EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen) | - | 
| 362 | { | - | 
| 363 | int ret; | - | 
| 364 |  | - | 
| 365 | if (!ctx->pkey || !ctx->peerkey| TRUE | never evaluated |  | FALSE | never evaluated | 
) {| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 366 | ERR_put_error(5,(0xfff),(108),__FILE__,237); | - | 
| 367 | return never executed: 0;return 0; never executed: return 0; | 0 | 
| 368 | } | - | 
| 369 | ret = DH_compute_key(key, ctx->peerkey->pkey.dh->pub_key, | - | 
| 370 | ctx->pkey->pkey.dh); | - | 
| 371 | if (ret < 0 )| TRUE | never evaluated |  | FALSE | never evaluated | 
 | 0 | 
| 372 | return never executed: ret;return ret; never executed: return ret; | 0 | 
| 373 | *keylen = ret; | - | 
| 374 | return never executed: 1;return 1; never executed: return 1; | 0 | 
| 375 | } | - | 
| 376 |  | - | 
| 377 | const EVP_PKEY_METHOD dh_pkey_meth = { | - | 
| 378 | .pkey_id = 28, | - | 
| 379 | .flags = 2, | - | 
| 380 |  | - | 
| 381 | .init = pkey_dh_init, | - | 
| 382 | .copy = pkey_dh_copy, | - | 
| 383 | .cleanup = pkey_dh_cleanup, | - | 
| 384 |  | - | 
| 385 | .paramgen = pkey_dh_paramgen, | - | 
| 386 |  | - | 
| 387 | .keygen = pkey_dh_keygen, | - | 
| 388 |  | - | 
| 389 | .derive = pkey_dh_derive, | - | 
| 390 |  | - | 
| 391 | .ctrl = pkey_dh_ctrl, | - | 
| 392 | .ctrl_str = pkey_dh_ctrl_str | - | 
| 393 | }; | - | 
|  |  |  |