| Line | Source | Count |
| 1 | | - |
| 2 | | - |
| 3 | | - |
| 4 | | - |
| 5 | | - |
| 6 | | - |
| 7 | | - |
| 8 | | - |
| 9 | | - |
| 10 | | - |
| 11 | | - |
| 12 | | - |
| 13 | | - |
| 14 | | - |
| 15 | | - |
| 16 | | - |
| 17 | | - |
| 18 | | - |
| 19 | | - |
| 20 | | - |
| 21 | | - |
| 22 | | - |
| 23 | | - |
| 24 | | - |
| 25 | | - |
| 26 | | - |
| 27 | | - |
| 28 | | - |
| 29 | | - |
| 30 | | - |
| 31 | | - |
| 32 | | - |
| 33 | | - |
| 34 | | - |
| 35 | | - |
| 36 | | - |
| 37 | | - |
| 38 | | - |
| 39 | | - |
| 40 | | - |
| 41 | | - |
| 42 | | - |
| 43 | | - |
| 44 | | - |
| 45 | | - |
| 46 | | - |
| 47 | | - |
| 48 | | - |
| 49 | | - |
| 50 | | - |
| 51 | | - |
| 52 | | - |
| 53 | | - |
| 54 | | - |
| 55 | | - |
| 56 | | - |
| 57 | | - |
| 58 | | - |
| 59 | #include <stdio.h> | - |
| 60 | #include <stdlib.h> | - |
| 61 | | - |
| 62 | #include <openssl/err.h> | - |
| 63 | #include <openssl/evp.h> | - |
| 64 | #include <openssl/objects.h> | - |
| 65 | | - |
| 66 | #include "evp_locl.h" | - |
| 67 | | - |
| 68 | #define M_check_autoarg(ctx, arg, arglen, err) \ | - |
| 69 | if (ctx->pmeth->flags & EVP_PKEY_FLAG_AUTOARGLEN) \ | - |
| 70 | { \ | - |
| 71 | size_t pksize = (size_t)EVP_PKEY_size(ctx->pkey); \ | - |
| 72 | if (!arg) \ | - |
| 73 | { \ | - |
| 74 | *arglen = pksize; \ | - |
| 75 | return 1; \ | - |
| 76 | } \ | - |
| 77 | else if (*arglen < pksize) \ | - |
| 78 | { \ | - |
| 79 | EVPerror(EVP_R_BUFFER_TOO_SMALL); /*ckerr_ignore*/\ | - |
| 80 | return 0; \ | - |
| 81 | } \ | - |
| 82 | } | - |
| 83 | | - |
| 84 | int | - |
| 85 | EVP_PKEY_sign_init(EVP_PKEY_CTX *ctx) | - |
| 86 | { | - |
| 87 | int ret; | - |
| 88 | | - |
| 89 | if (!ctx || !ctx->pmeth || !ctx->pmeth->sign) {| TRUE | never evaluated | | FALSE | evaluated 44 times by 5 testsEvaluated by:- libcrypto.so.44.0.1
- pkcs7test
- servertest
- ssltest
- tlstest
|
| TRUE | never evaluated | | FALSE | evaluated 44 times by 5 testsEvaluated by:- libcrypto.so.44.0.1
- pkcs7test
- servertest
- ssltest
- tlstest
|
| TRUE | never evaluated | | FALSE | evaluated 44 times by 5 testsEvaluated by:- libcrypto.so.44.0.1
- pkcs7test
- servertest
- ssltest
- tlstest
|
| 0-44 |
| 90 | EVPerror(EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE); | - |
| 91 | return -2; never executed: return -2; | 0 |
| 92 | } | - |
| 93 | ctx->operation = EVP_PKEY_OP_SIGN; | - |
| 94 | if (!ctx->pmeth->sign_init)| TRUE | evaluated 44 times by 5 testsEvaluated by:- libcrypto.so.44.0.1
- pkcs7test
- servertest
- ssltest
- tlstest
| | FALSE | never evaluated |
| 0-44 |
| 95 | return 1;executed 44 times by 5 tests: return 1;Executed by:- libcrypto.so.44.0.1
- pkcs7test
- servertest
- ssltest
- tlstest
| 44 |
| 96 | ret = ctx->pmeth->sign_init(ctx); | - |
| 97 | if (ret <= 0)| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 98 | ctx->operation = EVP_PKEY_OP_UNDEFINED; never executed: ctx->operation = 0; | 0 |
| 99 | return ret; never executed: return ret; | 0 |
| 100 | } | - |
| 101 | | - |
| 102 | int | - |
| 103 | EVP_PKEY_sign(EVP_PKEY_CTX *ctx, unsigned char *sig, size_t *siglen, | - |
| 104 | const unsigned char *tbs, size_t tbslen) | - |
| 105 | { | - |
| 106 | if (!ctx || !ctx->pmeth || !ctx->pmeth->sign) {| TRUE | never evaluated | | FALSE | evaluated 39 times by 5 testsEvaluated by:- libcrypto.so.44.0.1
- pkcs7test
- servertest
- ssltest
- tlstest
|
| TRUE | never evaluated | | FALSE | evaluated 39 times by 5 testsEvaluated by:- libcrypto.so.44.0.1
- pkcs7test
- servertest
- ssltest
- tlstest
|
| TRUE | never evaluated | | FALSE | evaluated 39 times by 5 testsEvaluated by:- libcrypto.so.44.0.1
- pkcs7test
- servertest
- ssltest
- tlstest
|
| 0-39 |
| 107 | EVPerror(EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE); | - |
| 108 | return -2; never executed: return -2; | 0 |
| 109 | } | - |
| 110 | if (ctx->operation != EVP_PKEY_OP_SIGN) {| TRUE | never evaluated | | FALSE | evaluated 39 times by 5 testsEvaluated by:- libcrypto.so.44.0.1
- pkcs7test
- servertest
- ssltest
- tlstest
|
| 0-39 |
| 111 | EVPerror(EVP_R_OPERATON_NOT_INITIALIZED); | - |
| 112 | return -1; never executed: return -1; | 0 |
| 113 | } | - |
| 114 | M_check_autoarg(ctx, sig, siglen, EVP_F_EVP_PKEY_SIGN)executed 2 times by 1 test: return 1; never executed: return 0; executed 37 times by 5 tests: end of blockExecuted by:- libcrypto.so.44.0.1
- pkcs7test
- servertest
- ssltest
- tlstest
| TRUE | evaluated 39 times by 5 testsEvaluated by:- libcrypto.so.44.0.1
- pkcs7test
- servertest
- ssltest
- tlstest
| | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | evaluated 37 times by 5 testsEvaluated by:- libcrypto.so.44.0.1
- pkcs7test
- servertest
- ssltest
- tlstest
|
| TRUE | evaluated 2 times by 1 test | | FALSE | evaluated 37 times by 5 testsEvaluated by:- libcrypto.so.44.0.1
- pkcs7test
- servertest
- ssltest
- tlstest
|
| 0-39 |
| 115 | return ctx->pmeth->sign(ctx, sig, siglen, tbs, tbslen);executed 37 times by 5 tests: return ctx->pmeth->sign(ctx, sig, siglen, tbs, tbslen);Executed by:- libcrypto.so.44.0.1
- pkcs7test
- servertest
- ssltest
- tlstest
| 37 |
| 116 | } | - |
| 117 | | - |
| 118 | int | - |
| 119 | EVP_PKEY_verify_init(EVP_PKEY_CTX *ctx) | - |
| 120 | { | - |
| 121 | int ret; | - |
| 122 | | - |
| 123 | if (!ctx || !ctx->pmeth || !ctx->pmeth->verify) {| TRUE | never evaluated | | FALSE | evaluated 106 times by 3 tests |
| TRUE | never evaluated | | FALSE | evaluated 106 times by 3 tests |
| TRUE | never evaluated | | FALSE | evaluated 106 times by 3 tests |
| 0-106 |
| 124 | EVPerror(EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE); | - |
| 125 | return -2; never executed: return -2; | 0 |
| 126 | } | - |
| 127 | ctx->operation = EVP_PKEY_OP_VERIFY; | - |
| 128 | if (!ctx->pmeth->verify_init)| TRUE | evaluated 106 times by 3 tests | | FALSE | never evaluated |
| 0-106 |
| 129 | return 1;executed 106 times by 3 tests: return 1; | 106 |
| 130 | ret = ctx->pmeth->verify_init(ctx); | - |
| 131 | if (ret <= 0)| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 132 | ctx->operation = EVP_PKEY_OP_UNDEFINED; never executed: ctx->operation = 0; | 0 |
| 133 | return ret; never executed: return ret; | 0 |
| 134 | } | - |
| 135 | | - |
| 136 | int | - |
| 137 | EVP_PKEY_verify(EVP_PKEY_CTX *ctx, const unsigned char *sig, size_t siglen, | - |
| 138 | const unsigned char *tbs, size_t tbslen) | - |
| 139 | { | - |
| 140 | if (!ctx || !ctx->pmeth || !ctx->pmeth->verify) {| TRUE | never evaluated | | FALSE | evaluated 106 times by 3 tests |
| TRUE | never evaluated | | FALSE | evaluated 106 times by 3 tests |
| TRUE | never evaluated | | FALSE | evaluated 106 times by 3 tests |
| 0-106 |
| 141 | EVPerror(EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE); | - |
| 142 | return -2; never executed: return -2; | 0 |
| 143 | } | - |
| 144 | if (ctx->operation != EVP_PKEY_OP_VERIFY) {| TRUE | never evaluated | | FALSE | evaluated 106 times by 3 tests |
| 0-106 |
| 145 | EVPerror(EVP_R_OPERATON_NOT_INITIALIZED); | - |
| 146 | return -1; never executed: return -1; | 0 |
| 147 | } | - |
| 148 | return ctx->pmeth->verify(ctx, sig, siglen, tbs, tbslen);executed 106 times by 3 tests: return ctx->pmeth->verify(ctx, sig, siglen, tbs, tbslen); | 106 |
| 149 | } | - |
| 150 | | - |
| 151 | int | - |
| 152 | EVP_PKEY_verify_recover_init(EVP_PKEY_CTX *ctx) | - |
| 153 | { | - |
| 154 | int ret; | - |
| 155 | | - |
| 156 | if (!ctx || !ctx->pmeth || !ctx->pmeth->verify_recover) {| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 157 | EVPerror(EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE); | - |
| 158 | return -2; never executed: return -2; | 0 |
| 159 | } | - |
| 160 | ctx->operation = EVP_PKEY_OP_VERIFYRECOVER; | - |
| 161 | if (!ctx->pmeth->verify_recover_init)| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 162 | return 1; never executed: return 1; | 0 |
| 163 | ret = ctx->pmeth->verify_recover_init(ctx); | - |
| 164 | if (ret <= 0)| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 165 | ctx->operation = EVP_PKEY_OP_UNDEFINED; never executed: ctx->operation = 0; | 0 |
| 166 | return ret; never executed: return ret; | 0 |
| 167 | } | - |
| 168 | | - |
| 169 | int | - |
| 170 | EVP_PKEY_verify_recover(EVP_PKEY_CTX *ctx, unsigned char *rout, size_t *routlen, | - |
| 171 | const unsigned char *sig, size_t siglen) | - |
| 172 | { | - |
| 173 | if (!ctx || !ctx->pmeth || !ctx->pmeth->verify_recover) {| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 174 | EVPerror(EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE); | - |
| 175 | return -2; never executed: return -2; | 0 |
| 176 | } | - |
| 177 | if (ctx->operation != EVP_PKEY_OP_VERIFYRECOVER) {| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 178 | EVPerror(EVP_R_OPERATON_NOT_INITIALIZED); | - |
| 179 | return -1; never executed: return -1; | 0 |
| 180 | } | - |
| 181 | M_check_autoarg(ctx, rout, routlen, EVP_F_EVP_PKEY_VERIFY_RECOVER) never executed: return 1; never executed: return 0; never executed: end of block | TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 182 | return ctx->pmeth->verify_recover(ctx, rout, routlen, sig, siglen); never executed: return ctx->pmeth->verify_recover(ctx, rout, routlen, sig, siglen); | 0 |
| 183 | } | - |
| 184 | | - |
| 185 | int | - |
| 186 | EVP_PKEY_encrypt_init(EVP_PKEY_CTX *ctx) | - |
| 187 | { | - |
| 188 | int ret; | - |
| 189 | | - |
| 190 | if (!ctx || !ctx->pmeth || !ctx->pmeth->encrypt) {| TRUE | never evaluated | | FALSE | evaluated 1 time by 1 test |
| TRUE | never evaluated | | FALSE | evaluated 1 time by 1 test |
| TRUE | never evaluated | | FALSE | evaluated 1 time by 1 test |
| 0-1 |
| 191 | EVPerror(EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE); | - |
| 192 | return -2; never executed: return -2; | 0 |
| 193 | } | - |
| 194 | ctx->operation = EVP_PKEY_OP_ENCRYPT; | - |
| 195 | if (!ctx->pmeth->encrypt_init)| TRUE | evaluated 1 time by 1 test | | FALSE | never evaluated |
| 0-1 |
| 196 | return 1;executed 1 time by 1 test: return 1; | 1 |
| 197 | ret = ctx->pmeth->encrypt_init(ctx); | - |
| 198 | if (ret <= 0)| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 199 | ctx->operation = EVP_PKEY_OP_UNDEFINED; never executed: ctx->operation = 0; | 0 |
| 200 | return ret; never executed: return ret; | 0 |
| 201 | } | - |
| 202 | | - |
| 203 | int | - |
| 204 | EVP_PKEY_encrypt(EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen, | - |
| 205 | const unsigned char *in, size_t inlen) | - |
| 206 | { | - |
| 207 | if (!ctx || !ctx->pmeth || !ctx->pmeth->encrypt) {| TRUE | never evaluated | | FALSE | evaluated 2 times by 1 test |
| TRUE | never evaluated | | FALSE | evaluated 2 times by 1 test |
| TRUE | never evaluated | | FALSE | evaluated 2 times by 1 test |
| 0-2 |
| 208 | EVPerror(EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE); | - |
| 209 | return -2; never executed: return -2; | 0 |
| 210 | } | - |
| 211 | if (ctx->operation != EVP_PKEY_OP_ENCRYPT) {| TRUE | never evaluated | | FALSE | evaluated 2 times by 1 test |
| 0-2 |
| 212 | EVPerror(EVP_R_OPERATON_NOT_INITIALIZED); | - |
| 213 | return -1; never executed: return -1; | 0 |
| 214 | } | - |
| 215 | M_check_autoarg(ctx, out, outlen, EVP_F_EVP_PKEY_ENCRYPT)executed 1 time by 1 test: return 1; never executed: return 0; executed 1 time by 1 test: end of block | TRUE | evaluated 2 times by 1 test | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | evaluated 1 time by 1 test |
| TRUE | evaluated 1 time by 1 test | | FALSE | evaluated 1 time by 1 test |
| 0-2 |
| 216 | return ctx->pmeth->encrypt(ctx, out, outlen, in, inlen);executed 1 time by 1 test: return ctx->pmeth->encrypt(ctx, out, outlen, in, inlen); | 1 |
| 217 | } | - |
| 218 | | - |
| 219 | int | - |
| 220 | EVP_PKEY_decrypt_init(EVP_PKEY_CTX *ctx) | - |
| 221 | { | - |
| 222 | int ret; | - |
| 223 | | - |
| 224 | if (!ctx || !ctx->pmeth || !ctx->pmeth->decrypt) {| TRUE | never evaluated | | FALSE | evaluated 1 time by 1 test |
| TRUE | never evaluated | | FALSE | evaluated 1 time by 1 test |
| TRUE | never evaluated | | FALSE | evaluated 1 time by 1 test |
| 0-1 |
| 225 | EVPerror(EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE); | - |
| 226 | return -2; never executed: return -2; | 0 |
| 227 | } | - |
| 228 | ctx->operation = EVP_PKEY_OP_DECRYPT; | - |
| 229 | if (!ctx->pmeth->decrypt_init)| TRUE | evaluated 1 time by 1 test | | FALSE | never evaluated |
| 0-1 |
| 230 | return 1;executed 1 time by 1 test: return 1; | 1 |
| 231 | ret = ctx->pmeth->decrypt_init(ctx); | - |
| 232 | if (ret <= 0)| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 233 | ctx->operation = EVP_PKEY_OP_UNDEFINED; never executed: ctx->operation = 0; | 0 |
| 234 | return ret; never executed: return ret; | 0 |
| 235 | } | - |
| 236 | | - |
| 237 | int | - |
| 238 | EVP_PKEY_decrypt(EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen, | - |
| 239 | const unsigned char *in, size_t inlen) | - |
| 240 | { | - |
| 241 | if (!ctx || !ctx->pmeth || !ctx->pmeth->decrypt) {| TRUE | never evaluated | | FALSE | evaluated 2 times by 1 test |
| TRUE | never evaluated | | FALSE | evaluated 2 times by 1 test |
| TRUE | never evaluated | | FALSE | evaluated 2 times by 1 test |
| 0-2 |
| 242 | EVPerror(EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE); | - |
| 243 | return -2; never executed: return -2; | 0 |
| 244 | } | - |
| 245 | if (ctx->operation != EVP_PKEY_OP_DECRYPT) {| TRUE | never evaluated | | FALSE | evaluated 2 times by 1 test |
| 0-2 |
| 246 | EVPerror(EVP_R_OPERATON_NOT_INITIALIZED); | - |
| 247 | return -1; never executed: return -1; | 0 |
| 248 | } | - |
| 249 | M_check_autoarg(ctx, out, outlen, EVP_F_EVP_PKEY_DECRYPT)executed 1 time by 1 test: return 1; never executed: return 0; executed 1 time by 1 test: end of block | TRUE | evaluated 2 times by 1 test | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | evaluated 1 time by 1 test |
| TRUE | evaluated 1 time by 1 test | | FALSE | evaluated 1 time by 1 test |
| 0-2 |
| 250 | return ctx->pmeth->decrypt(ctx, out, outlen, in, inlen);executed 1 time by 1 test: return ctx->pmeth->decrypt(ctx, out, outlen, in, inlen); | 1 |
| 251 | } | - |
| 252 | | - |
| 253 | int | - |
| 254 | EVP_PKEY_derive_init(EVP_PKEY_CTX *ctx) | - |
| 255 | { | - |
| 256 | int ret; | - |
| 257 | | - |
| 258 | if (!ctx || !ctx->pmeth || !ctx->pmeth->derive) {| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 259 | EVPerror(EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE); | - |
| 260 | return -2; never executed: return -2; | 0 |
| 261 | } | - |
| 262 | ctx->operation = EVP_PKEY_OP_DERIVE; | - |
| 263 | if (!ctx->pmeth->derive_init)| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 264 | return 1; never executed: return 1; | 0 |
| 265 | ret = ctx->pmeth->derive_init(ctx); | - |
| 266 | if (ret <= 0)| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 267 | ctx->operation = EVP_PKEY_OP_UNDEFINED; never executed: ctx->operation = 0; | 0 |
| 268 | return ret; never executed: return ret; | 0 |
| 269 | } | - |
| 270 | | - |
| 271 | int | - |
| 272 | EVP_PKEY_derive_set_peer(EVP_PKEY_CTX *ctx, EVP_PKEY *peer) | - |
| 273 | { | - |
| 274 | int ret; | - |
| 275 | | - |
| 276 | if (!ctx || !ctx->pmeth || !(ctx->pmeth->derive ||| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 277 | ctx->pmeth->encrypt || ctx->pmeth->decrypt) ||| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 278 | !ctx->pmeth->ctrl) {| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 279 | EVPerror(EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE); | - |
| 280 | return -2; never executed: return -2; | 0 |
| 281 | } | - |
| 282 | if (ctx->operation != EVP_PKEY_OP_DERIVE &&| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 283 | ctx->operation != EVP_PKEY_OP_ENCRYPT &&| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 284 | ctx->operation != EVP_PKEY_OP_DECRYPT) {| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 285 | EVPerror(EVP_R_OPERATON_NOT_INITIALIZED); | - |
| 286 | return -1; never executed: return -1; | 0 |
| 287 | } | - |
| 288 | | - |
| 289 | ret = ctx->pmeth->ctrl(ctx, EVP_PKEY_CTRL_PEER_KEY, 0, peer); | - |
| 290 | | - |
| 291 | if (ret <= 0)| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 292 | return ret; never executed: return ret; | 0 |
| 293 | | - |
| 294 | if (ret == 2)| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 295 | return 1; never executed: return 1; | 0 |
| 296 | | - |
| 297 | if (!ctx->pkey) {| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 298 | EVPerror(EVP_R_NO_KEY_SET); | - |
| 299 | return -1; never executed: return -1; | 0 |
| 300 | } | - |
| 301 | | - |
| 302 | if (ctx->pkey->type != peer->type) {| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 303 | EVPerror(EVP_R_DIFFERENT_KEY_TYPES); | - |
| 304 | return -1; never executed: return -1; | 0 |
| 305 | } | - |
| 306 | | - |
| 307 | | - |
| 308 | | - |
| 309 | | - |
| 310 | | - |
| 311 | | - |
| 312 | if (!EVP_PKEY_missing_parameters(peer) &&| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 313 | !EVP_PKEY_cmp_parameters(ctx->pkey, peer)) {| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 314 | EVPerror(EVP_R_DIFFERENT_PARAMETERS); | - |
| 315 | return -1; never executed: return -1; | 0 |
| 316 | } | - |
| 317 | | - |
| 318 | EVP_PKEY_free(ctx->peerkey); | - |
| 319 | ctx->peerkey = peer; | - |
| 320 | | - |
| 321 | ret = ctx->pmeth->ctrl(ctx, EVP_PKEY_CTRL_PEER_KEY, 1, peer); | - |
| 322 | | - |
| 323 | if (ret <= 0) {| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 324 | ctx->peerkey = NULL; | - |
| 325 | return ret; never executed: return ret; | 0 |
| 326 | } | - |
| 327 | | - |
| 328 | CRYPTO_add(&peer->references, 1, CRYPTO_LOCK_EVP_PKEY); | - |
| 329 | return 1; never executed: return 1; | 0 |
| 330 | } | - |
| 331 | | - |
| 332 | int | - |
| 333 | EVP_PKEY_derive(EVP_PKEY_CTX *ctx, unsigned char *key, size_t *pkeylen) | - |
| 334 | { | - |
| 335 | if (!ctx || !ctx->pmeth || !ctx->pmeth->derive) {| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 336 | EVPerror(EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE); | - |
| 337 | return -2; never executed: return -2; | 0 |
| 338 | } | - |
| 339 | if (ctx->operation != EVP_PKEY_OP_DERIVE) {| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 340 | EVPerror(EVP_R_OPERATON_NOT_INITIALIZED); | - |
| 341 | return -1; never executed: return -1; | 0 |
| 342 | } | - |
| 343 | M_check_autoarg(ctx, key, pkeylen, EVP_F_EVP_PKEY_DERIVE) never executed: return 1; never executed: return 0; never executed: end of block | TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 344 | return ctx->pmeth->derive(ctx, key, pkeylen); never executed: return ctx->pmeth->derive(ctx, key, pkeylen); | 0 |
| 345 | } | - |
| | |