| Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/openssl/src/crypto/ec/ecdh_kdf.c |
| Switch to Source code | Preprocessed file |
| Line | Source | Count | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | - | |||||||||||||
| 2 | - | |||||||||||||
| 3 | - | |||||||||||||
| 4 | - | |||||||||||||
| 5 | - | |||||||||||||
| 6 | int ECDH_KDF_X9_62(unsigned char *out, size_t outlen, | - | ||||||||||||
| 7 | const unsigned char *Z, size_t Zlen, | - | ||||||||||||
| 8 | const unsigned char *sinfo, size_t sinfolen, | - | ||||||||||||
| 9 | const EVP_MD *md) | - | ||||||||||||
| 10 | { | - | ||||||||||||
| 11 | EVP_MD_CTX *mctx = | - | ||||||||||||
| 12 | ((void *)0) | - | ||||||||||||
| 13 | ; | - | ||||||||||||
| 14 | int rv = 0; | - | ||||||||||||
| 15 | unsigned int i; | - | ||||||||||||
| 16 | size_t mdlen; | - | ||||||||||||
| 17 | unsigned char ctr[4]; | - | ||||||||||||
| 18 | if (sinfolen > (1 << 30)
| 0-18 | ||||||||||||
| 19 | || Zlen > (1 << 30)
| 0-18 | ||||||||||||
| 20 | return never executed: 0;return 0;never executed: return 0; | 0 | ||||||||||||
| 21 | mctx = EVP_MD_CTX_new(); | - | ||||||||||||
| 22 | if (mctx ==
| 0-18 | ||||||||||||
| 23 | ((void *)0)
| 0-18 | ||||||||||||
| 24 | ) | - | ||||||||||||
| 25 | return never executed: 0;return 0;never executed: return 0; | 0 | ||||||||||||
| 26 | mdlen = EVP_MD_size(md); | - | ||||||||||||
| 27 | for (i = 1;; i++) { | - | ||||||||||||
| 28 | unsigned char mtmp[64]; | - | ||||||||||||
| 29 | if (!EVP_DigestInit_ex(mctx, md,
| 0-26 | ||||||||||||
| 30 | ((void *)0)
| 0-26 | ||||||||||||
| 31 | )
| 0-26 | ||||||||||||
| 32 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 33 | ctr[3] = i & 0xFF; | - | ||||||||||||
| 34 | ctr[2] = (i >> 8) & 0xFF; | - | ||||||||||||
| 35 | ctr[1] = (i >> 16) & 0xFF; | - | ||||||||||||
| 36 | ctr[0] = (i >> 24) & 0xFF; | - | ||||||||||||
| 37 | if (!EVP_DigestUpdate(mctx, Z, Zlen)
| 0-26 | ||||||||||||
| 38 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 39 | if (!EVP_DigestUpdate(mctx, ctr, sizeof(ctr))
| 0-26 | ||||||||||||
| 40 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 41 | if (!EVP_DigestUpdate(mctx, sinfo, sinfolen)
| 0-26 | ||||||||||||
| 42 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 43 | if (outlen >= mdlen
| 8-18 | ||||||||||||
| 44 | if (!EVP_DigestFinal(mctx, out,
| 0-8 | ||||||||||||
| 45 | ((void *)0)
| 0-8 | ||||||||||||
| 46 | )
| 0-8 | ||||||||||||
| 47 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 48 | outlen -= mdlen; | - | ||||||||||||
| 49 | if (outlen == 0
| 0-8 | ||||||||||||
| 50 | break; never executed: break; | 0 | ||||||||||||
| 51 | out += mdlen; | - | ||||||||||||
| 52 | } executed 8 times by 1 test: else {end of blockExecuted by:
| 8 | ||||||||||||
| 53 | if (!EVP_DigestFinal(mctx, mtmp,
| 0-18 | ||||||||||||
| 54 | ((void *)0)
| 0-18 | ||||||||||||
| 55 | )
| 0-18 | ||||||||||||
| 56 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 57 | memcpy(out, mtmp, outlen); | - | ||||||||||||
| 58 | OPENSSL_cleanse(mtmp, mdlen); | - | ||||||||||||
| 59 | break; executed 18 times by 2 tests: break;Executed by:
| 18 | ||||||||||||
| 60 | } | - | ||||||||||||
| 61 | } | - | ||||||||||||
| 62 | rv = 1; | - | ||||||||||||
| 63 | err: code before this statement executed 18 times by 2 tests: err:Executed by:
| 18 | ||||||||||||
| 64 | EVP_MD_CTX_free(mctx); | - | ||||||||||||
| 65 | return executed 18 times by 2 tests: rv;return rv;Executed by:
executed 18 times by 2 tests: return rv;Executed by:
| 18 | ||||||||||||
| 66 | } | - | ||||||||||||
| Switch to Source code | Preprocessed file |