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 |