| Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/libressl/src/crypto/pkcs12/p12_key.c |
| Switch to Source code | Preprocessed file |
| Line | Source | Count | ||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | - | |||||||||||||||||||||||||||||||||||||
| 2 | - | |||||||||||||||||||||||||||||||||||||
| 3 | - | |||||||||||||||||||||||||||||||||||||
| 4 | - | |||||||||||||||||||||||||||||||||||||
| 5 | - | |||||||||||||||||||||||||||||||||||||
| 6 | - | |||||||||||||||||||||||||||||||||||||
| 7 | - | |||||||||||||||||||||||||||||||||||||
| 8 | int | - | ||||||||||||||||||||||||||||||||||||
| 9 | PKCS12_key_gen_asc(const char *pass, int passlen, unsigned char *salt, | - | ||||||||||||||||||||||||||||||||||||
| 10 | int saltlen, int id, int iter, int n, unsigned char *out, | - | ||||||||||||||||||||||||||||||||||||
| 11 | const EVP_MD *md_type) | - | ||||||||||||||||||||||||||||||||||||
| 12 | { | - | ||||||||||||||||||||||||||||||||||||
| 13 | int ret; | - | ||||||||||||||||||||||||||||||||||||
| 14 | unsigned char *unipass; | - | ||||||||||||||||||||||||||||||||||||
| 15 | int uniplen; | - | ||||||||||||||||||||||||||||||||||||
| 16 | - | |||||||||||||||||||||||||||||||||||||
| 17 | if (!pass
| 0 | ||||||||||||||||||||||||||||||||||||
| 18 | unipass = | - | ||||||||||||||||||||||||||||||||||||
| 19 | ((void *)0) | - | ||||||||||||||||||||||||||||||||||||
| 20 | ; | - | ||||||||||||||||||||||||||||||||||||
| 21 | uniplen = 0; | - | ||||||||||||||||||||||||||||||||||||
| 22 | } never executed: else if (!OPENSSL_asc2uni(pass, passlen, &unipass, &uniplen)end of block
| 0 | ||||||||||||||||||||||||||||||||||||
| 23 | ERR_put_error(35,(0xfff),((1|64)),__FILE__,84); | - | ||||||||||||||||||||||||||||||||||||
| 24 | return never executed: 0;return 0;never executed: return 0; | 0 | ||||||||||||||||||||||||||||||||||||
| 25 | } | - | ||||||||||||||||||||||||||||||||||||
| 26 | ret = PKCS12_key_gen_uni(unipass, uniplen, salt, saltlen, | - | ||||||||||||||||||||||||||||||||||||
| 27 | id, iter, n, out, md_type); | - | ||||||||||||||||||||||||||||||||||||
| 28 | if (ret <= 0
| 0 | ||||||||||||||||||||||||||||||||||||
| 29 | return never executed: 0;return 0;never executed: return 0; | 0 | ||||||||||||||||||||||||||||||||||||
| 30 | freezero(unipass, uniplen); | - | ||||||||||||||||||||||||||||||||||||
| 31 | return never executed: ret;return ret;never executed: return ret; | 0 | ||||||||||||||||||||||||||||||||||||
| 32 | } | - | ||||||||||||||||||||||||||||||||||||
| 33 | - | |||||||||||||||||||||||||||||||||||||
| 34 | int | - | ||||||||||||||||||||||||||||||||||||
| 35 | PKCS12_key_gen_uni(unsigned char *pass, int passlen, unsigned char *salt, | - | ||||||||||||||||||||||||||||||||||||
| 36 | int saltlen, int id, int iter, int n, unsigned char *out, | - | ||||||||||||||||||||||||||||||||||||
| 37 | const EVP_MD *md_type) | - | ||||||||||||||||||||||||||||||||||||
| 38 | { | - | ||||||||||||||||||||||||||||||||||||
| 39 | unsigned char *B, *D, *I, *p, *Ai; | - | ||||||||||||||||||||||||||||||||||||
| 40 | int Slen, Plen, Ilen, Ijlen; | - | ||||||||||||||||||||||||||||||||||||
| 41 | int i, j, u, v; | - | ||||||||||||||||||||||||||||||||||||
| 42 | int ret = 0; | - | ||||||||||||||||||||||||||||||||||||
| 43 | BIGNUM *Ij, *Bpl1; | - | ||||||||||||||||||||||||||||||||||||
| 44 | EVP_MD_CTX ctx; | - | ||||||||||||||||||||||||||||||||||||
| 45 | - | |||||||||||||||||||||||||||||||||||||
| 46 | v = EVP_MD_block_size(md_type); | - | ||||||||||||||||||||||||||||||||||||
| 47 | u = EVP_MD_size(md_type); | - | ||||||||||||||||||||||||||||||||||||
| 48 | if (u < 0
| 0 | ||||||||||||||||||||||||||||||||||||
| 49 | return never executed: 0;return 0;never executed: return 0; | 0 | ||||||||||||||||||||||||||||||||||||
| 50 | - | |||||||||||||||||||||||||||||||||||||
| 51 | EVP_MD_CTX_init(&ctx); | - | ||||||||||||||||||||||||||||||||||||
| 52 | D = malloc(v); | - | ||||||||||||||||||||||||||||||||||||
| 53 | Ai = malloc(u); | - | ||||||||||||||||||||||||||||||||||||
| 54 | B = malloc(v + 1); | - | ||||||||||||||||||||||||||||||||||||
| 55 | Slen = v * ((saltlen + v - 1) / v); | - | ||||||||||||||||||||||||||||||||||||
| 56 | if (passlen
| 0 | ||||||||||||||||||||||||||||||||||||
| 57 | Plen = v * ((passlen + v - 1)/v); never executed: Plen = v * ((passlen + v - 1)/v); | 0 | ||||||||||||||||||||||||||||||||||||
| 58 | else | - | ||||||||||||||||||||||||||||||||||||
| 59 | Plen = 0; never executed: Plen = 0; | 0 | ||||||||||||||||||||||||||||||||||||
| 60 | Ilen = Slen + Plen; | - | ||||||||||||||||||||||||||||||||||||
| 61 | I = malloc(Ilen); | - | ||||||||||||||||||||||||||||||||||||
| 62 | Ij = BN_new(); | - | ||||||||||||||||||||||||||||||||||||
| 63 | Bpl1 = BN_new(); | - | ||||||||||||||||||||||||||||||||||||
| 64 | if (!D
| 0 | ||||||||||||||||||||||||||||||||||||
| 65 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||||||||||||||||||||
| 66 | for (i = 0; i < v
| 0 | ||||||||||||||||||||||||||||||||||||
| 67 | D[i] = id; never executed: D[i] = id; | 0 | ||||||||||||||||||||||||||||||||||||
| 68 | p = I; | - | ||||||||||||||||||||||||||||||||||||
| 69 | for (i = 0; i < Slen
| 0 | ||||||||||||||||||||||||||||||||||||
| 70 | * never executed: p++ = salt[i % saltlen];*p++ = salt[i % saltlen];never executed: *p++ = salt[i % saltlen]; | 0 | ||||||||||||||||||||||||||||||||||||
| 71 | for (i = 0; i < Plen
| 0 | ||||||||||||||||||||||||||||||||||||
| 72 | * never executed: p++ = pass[i % passlen];*p++ = pass[i % passlen];never executed: *p++ = pass[i % passlen]; | 0 | ||||||||||||||||||||||||||||||||||||
| 73 | for (;;) { | - | ||||||||||||||||||||||||||||||||||||
| 74 | if (!EVP_DigestInit_ex(&ctx, md_type,
| 0 | ||||||||||||||||||||||||||||||||||||
| 75 | ((void *)0)
| 0 | ||||||||||||||||||||||||||||||||||||
| 76 | )
| 0 | ||||||||||||||||||||||||||||||||||||
| 77 | !EVP_DigestUpdate(&ctx, D, v)
| 0 | ||||||||||||||||||||||||||||||||||||
| 78 | !EVP_DigestUpdate(&ctx, I, Ilen)
| 0 | ||||||||||||||||||||||||||||||||||||
| 79 | !EVP_DigestFinal_ex(&ctx, Ai,
| 0 | ||||||||||||||||||||||||||||||||||||
| 80 | ((void *)0)
| 0 | ||||||||||||||||||||||||||||||||||||
| 81 | )
| 0 | ||||||||||||||||||||||||||||||||||||
| 82 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||||||||||||||||||||
| 83 | for (j = 1; j < iter
| 0 | ||||||||||||||||||||||||||||||||||||
| 84 | if (!EVP_DigestInit_ex(&ctx, md_type,
| 0 | ||||||||||||||||||||||||||||||||||||
| 85 | ((void *)0)
| 0 | ||||||||||||||||||||||||||||||||||||
| 86 | )
| 0 | ||||||||||||||||||||||||||||||||||||
| 87 | !EVP_DigestUpdate(&ctx, Ai, u)
| 0 | ||||||||||||||||||||||||||||||||||||
| 88 | !EVP_DigestFinal_ex(&ctx, Ai,
| 0 | ||||||||||||||||||||||||||||||||||||
| 89 | ((void *)0)
| 0 | ||||||||||||||||||||||||||||||||||||
| 90 | )
| 0 | ||||||||||||||||||||||||||||||||||||
| 91 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||||||||||||||||||||
| 92 | } never executed: end of block | 0 | ||||||||||||||||||||||||||||||||||||
| 93 | memcpy (out, Ai, ((n) < (u) ? (n) : (u))); | - | ||||||||||||||||||||||||||||||||||||
| 94 | if (u >= n
| 0 | ||||||||||||||||||||||||||||||||||||
| 95 | ret = 1; | - | ||||||||||||||||||||||||||||||||||||
| 96 | goto never executed: end;goto end;never executed: goto end; | 0 | ||||||||||||||||||||||||||||||||||||
| 97 | } | - | ||||||||||||||||||||||||||||||||||||
| 98 | n -= u; | - | ||||||||||||||||||||||||||||||||||||
| 99 | out += u; | - | ||||||||||||||||||||||||||||||||||||
| 100 | for (j = 0; j < v
| 0 | ||||||||||||||||||||||||||||||||||||
| 101 | B[j] = Ai[j % u]; never executed: B[j] = Ai[j % u]; | 0 | ||||||||||||||||||||||||||||||||||||
| 102 | - | |||||||||||||||||||||||||||||||||||||
| 103 | if (!BN_bin2bn (B, v, Bpl1)
| 0 | ||||||||||||||||||||||||||||||||||||
| 104 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||||||||||||||||||||
| 105 | if (!BN_add_word (Bpl1, 1)
| 0 | ||||||||||||||||||||||||||||||||||||
| 106 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||||||||||||||||||||
| 107 | for (j = 0; j < Ilen
| 0 | ||||||||||||||||||||||||||||||||||||
| 108 | if (!BN_bin2bn(I + j, v, Ij)
| 0 | ||||||||||||||||||||||||||||||||||||
| 109 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||||||||||||||||||||
| 110 | if (!BN_add(Ij, Ij, Bpl1)
| 0 | ||||||||||||||||||||||||||||||||||||
| 111 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||||||||||||||||||||
| 112 | if (!BN_bn2bin(Ij, B)
| 0 | ||||||||||||||||||||||||||||||||||||
| 113 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||||||||||||||||||||
| 114 | Ijlen = ((BN_num_bits(Ij)+7)/8); | - | ||||||||||||||||||||||||||||||||||||
| 115 | - | |||||||||||||||||||||||||||||||||||||
| 116 | if (Ijlen > v
| 0 | ||||||||||||||||||||||||||||||||||||
| 117 | if (!BN_bn2bin (Ij, B)
| 0 | ||||||||||||||||||||||||||||||||||||
| 118 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||||||||||||||||||||
| 119 | memcpy (I + j, B + 1, v); | - | ||||||||||||||||||||||||||||||||||||
| 120 | - | |||||||||||||||||||||||||||||||||||||
| 121 | - | |||||||||||||||||||||||||||||||||||||
| 122 | } never executed: else if (Ijlen < vend of block
| 0 | ||||||||||||||||||||||||||||||||||||
| 123 | memset(I + j, 0, v - Ijlen); | - | ||||||||||||||||||||||||||||||||||||
| 124 | if (!BN_bn2bin(Ij, I + j + v - Ijlen)
| 0 | ||||||||||||||||||||||||||||||||||||
| 125 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||||||||||||||||||||
| 126 | - | |||||||||||||||||||||||||||||||||||||
| 127 | } never executed: else if (!BN_bn2bin (Ij, I + j)end of block
| 0 | ||||||||||||||||||||||||||||||||||||
| 128 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||||||||||||||||||||||||||
| 129 | } never executed: end of block | 0 | ||||||||||||||||||||||||||||||||||||
| 130 | } never executed: end of block | 0 | ||||||||||||||||||||||||||||||||||||
| 131 | - | |||||||||||||||||||||||||||||||||||||
| 132 | err: code before this statement never executed: err: | 0 | ||||||||||||||||||||||||||||||||||||
| 133 | ERR_put_error(35,(0xfff),((1|64)),__FILE__,186); | - | ||||||||||||||||||||||||||||||||||||
| 134 | - | |||||||||||||||||||||||||||||||||||||
| 135 | end: code before this statement never executed: end: | 0 | ||||||||||||||||||||||||||||||||||||
| 136 | free(Ai); | - | ||||||||||||||||||||||||||||||||||||
| 137 | free(B); | - | ||||||||||||||||||||||||||||||||||||
| 138 | free(D); | - | ||||||||||||||||||||||||||||||||||||
| 139 | free(I); | - | ||||||||||||||||||||||||||||||||||||
| 140 | BN_free(Ij); | - | ||||||||||||||||||||||||||||||||||||
| 141 | BN_free(Bpl1); | - | ||||||||||||||||||||||||||||||||||||
| 142 | EVP_MD_CTX_cleanup(&ctx); | - | ||||||||||||||||||||||||||||||||||||
| 143 | return never executed: ret;return ret;never executed: return ret; | 0 | ||||||||||||||||||||||||||||||||||||
| 144 | } | - | ||||||||||||||||||||||||||||||||||||
| Switch to Source code | Preprocessed file |