Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/openssl/src/crypto/asn1/p5_pbev2.c |
Switch to Source code | Preprocessed file |
Line | Source | Count | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | - | |||||||||||||
2 | - | |||||||||||||
3 | - | |||||||||||||
4 | static const ASN1_TEMPLATE PBE2PARAM_seq_tt[] = { | - | ||||||||||||
5 | { (0), (0), | - | ||||||||||||
6 | __builtin_offsetof ( | - | ||||||||||||
7 | PBE2PARAM | - | ||||||||||||
8 | , | - | ||||||||||||
9 | keyfunc | - | ||||||||||||
10 | ) | - | ||||||||||||
11 | , "keyfunc", (&(X509_ALGOR_it)) }, | - | ||||||||||||
12 | { (0), (0), | - | ||||||||||||
13 | __builtin_offsetof ( | - | ||||||||||||
14 | PBE2PARAM | - | ||||||||||||
15 | , | - | ||||||||||||
16 | encryption | - | ||||||||||||
17 | ) | - | ||||||||||||
18 | , "encryption", (&(X509_ALGOR_it)) } | - | ||||||||||||
19 | } ; const ASN1_ITEM PBE2PARAM_it = { 0x1, 16, PBE2PARAM_seq_tt, sizeof(PBE2PARAM_seq_tt) / sizeof(ASN1_TEMPLATE), | - | ||||||||||||
20 | ((void *)0) | - | ||||||||||||
21 | , sizeof(PBE2PARAM), "PBE2PARAM" }; | - | ||||||||||||
22 | - | |||||||||||||
23 | PBE2PARAM *d2i_PBE2PARAM(PBE2PARAM **a, const unsigned char **in, long len) { return never executed: (PBE2PARAM *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, (&(PBE2PARAM_it)));return (PBE2PARAM *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, (&(PBE2PARAM_it))); never executed: } int i2d_PBE2PARAM(PBE2PARAM *a, unsigned char **out) { returnreturn (PBE2PARAM *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, (&(PBE2PARAM_it))); never executed: ASN1_item_i2d((ASN1_VALUE *)a, out, (&(PBE2PARAM_it)));return ASN1_item_i2d((ASN1_VALUE *)a, out, (&(PBE2PARAM_it))); never executed: } PBE2PARAM *PBE2PARAM_new(void) { returnreturn ASN1_item_i2d((ASN1_VALUE *)a, out, (&(PBE2PARAM_it))); never executed: (PBE2PARAM *)ASN1_item_new((&(PBE2PARAM_it)));return (PBE2PARAM *)ASN1_item_new((&(PBE2PARAM_it))); never executed: } void PBE2PARAM_free(PBE2PARAM *a) { ASN1_item_free((ASN1_VALUE *)a, (&(PBE2PARAM_it))); }return (PBE2PARAM *)ASN1_item_new((&(PBE2PARAM_it))); never executed: end of block | 0 | ||||||||||||
24 | - | |||||||||||||
25 | static const ASN1_TEMPLATE PBKDF2PARAM_seq_tt[] = { | - | ||||||||||||
26 | { (0), (0), | - | ||||||||||||
27 | __builtin_offsetof ( | - | ||||||||||||
28 | PBKDF2PARAM | - | ||||||||||||
29 | , | - | ||||||||||||
30 | salt | - | ||||||||||||
31 | ) | - | ||||||||||||
32 | , "salt", (&(ASN1_ANY_it)) }, | - | ||||||||||||
33 | { (0), (0), | - | ||||||||||||
34 | __builtin_offsetof ( | - | ||||||||||||
35 | PBKDF2PARAM | - | ||||||||||||
36 | , | - | ||||||||||||
37 | iter | - | ||||||||||||
38 | ) | - | ||||||||||||
39 | , "iter", (&(ASN1_INTEGER_it)) }, | - | ||||||||||||
40 | { ((0x1)), (0), | - | ||||||||||||
41 | __builtin_offsetof ( | - | ||||||||||||
42 | PBKDF2PARAM | - | ||||||||||||
43 | , | - | ||||||||||||
44 | keylength | - | ||||||||||||
45 | ) | - | ||||||||||||
46 | , "keylength", (&(ASN1_INTEGER_it)) }, | - | ||||||||||||
47 | { ((0x1)), (0), | - | ||||||||||||
48 | __builtin_offsetof ( | - | ||||||||||||
49 | PBKDF2PARAM | - | ||||||||||||
50 | , | - | ||||||||||||
51 | prf | - | ||||||||||||
52 | ) | - | ||||||||||||
53 | , "prf", (&(X509_ALGOR_it)) } | - | ||||||||||||
54 | } ; const ASN1_ITEM PBKDF2PARAM_it = { 0x1, 16, PBKDF2PARAM_seq_tt, sizeof(PBKDF2PARAM_seq_tt) / sizeof(ASN1_TEMPLATE), | - | ||||||||||||
55 | ((void *)0) | - | ||||||||||||
56 | , sizeof(PBKDF2PARAM), "PBKDF2PARAM" }; | - | ||||||||||||
57 | - | |||||||||||||
58 | PBKDF2PARAM *d2i_PBKDF2PARAM(PBKDF2PARAM **a, const unsigned char **in, long len) { return never executed: (PBKDF2PARAM *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, (&(PBKDF2PARAM_it)));return (PBKDF2PARAM *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, (&(PBKDF2PARAM_it))); never executed: } int i2d_PBKDF2PARAM(PBKDF2PARAM *a, unsigned char **out) { returnreturn (PBKDF2PARAM *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, (&(PBKDF2PARAM_it))); never executed: ASN1_item_i2d((ASN1_VALUE *)a, out, (&(PBKDF2PARAM_it)));return ASN1_item_i2d((ASN1_VALUE *)a, out, (&(PBKDF2PARAM_it))); never executed: } PBKDF2PARAM *PBKDF2PARAM_new(void) { returnreturn ASN1_item_i2d((ASN1_VALUE *)a, out, (&(PBKDF2PARAM_it))); never executed: (PBKDF2PARAM *)ASN1_item_new((&(PBKDF2PARAM_it)));return (PBKDF2PARAM *)ASN1_item_new((&(PBKDF2PARAM_it))); never executed: } void PBKDF2PARAM_free(PBKDF2PARAM *a) { ASN1_item_free((ASN1_VALUE *)a, (&(PBKDF2PARAM_it))); }return (PBKDF2PARAM *)ASN1_item_new((&(PBKDF2PARAM_it))); never executed: end of block | 0 | ||||||||||||
59 | - | |||||||||||||
60 | - | |||||||||||||
61 | - | |||||||||||||
62 | - | |||||||||||||
63 | - | |||||||||||||
64 | - | |||||||||||||
65 | - | |||||||||||||
66 | X509_ALGOR *PKCS5_pbe2_set_iv(const EVP_CIPHER *cipher, int iter, | - | ||||||||||||
67 | unsigned char *salt, int saltlen, | - | ||||||||||||
68 | unsigned char *aiv, int prf_nid) | - | ||||||||||||
69 | { | - | ||||||||||||
70 | X509_ALGOR *scheme = | - | ||||||||||||
71 | ((void *)0) | - | ||||||||||||
72 | , *ret = | - | ||||||||||||
73 | ((void *)0) | - | ||||||||||||
74 | ; | - | ||||||||||||
75 | int alg_nid, keylen; | - | ||||||||||||
76 | EVP_CIPHER_CTX *ctx = | - | ||||||||||||
77 | ((void *)0) | - | ||||||||||||
78 | ; | - | ||||||||||||
79 | unsigned char iv[16]; | - | ||||||||||||
80 | PBE2PARAM *pbe2 = | - | ||||||||||||
81 | ((void *)0) | - | ||||||||||||
82 | ; | - | ||||||||||||
83 | - | |||||||||||||
84 | alg_nid = EVP_CIPHER_type(cipher); | - | ||||||||||||
85 | if (alg_nid == 0
| 0 | ||||||||||||
86 | ERR_put_error(13,(167),(108),__FILE__,53) | - | ||||||||||||
87 | ; | - | ||||||||||||
88 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||
89 | } | - | ||||||||||||
90 | - | |||||||||||||
91 | if ((
| 0 | ||||||||||||
92 | ((void *)0)
| 0 | ||||||||||||
93 | ) | - | ||||||||||||
94 | goto never executed: merr;goto merr; never executed: goto merr; | 0 | ||||||||||||
95 | - | |||||||||||||
96 | - | |||||||||||||
97 | scheme = pbe2->encryption; | - | ||||||||||||
98 | scheme->algorithm = OBJ_nid2obj(alg_nid); | - | ||||||||||||
99 | if ((
| 0 | ||||||||||||
100 | ((void *)0)
| 0 | ||||||||||||
101 | ) | - | ||||||||||||
102 | goto never executed: merr;goto merr; never executed: goto merr; | 0 | ||||||||||||
103 | - | |||||||||||||
104 | - | |||||||||||||
105 | if (EVP_CIPHER_iv_length(cipher)
| 0 | ||||||||||||
106 | if (aiv
| 0 | ||||||||||||
107 | memcpy(iv, aiv, EVP_CIPHER_iv_length(cipher)); never executed: memcpy(iv, aiv, EVP_CIPHER_iv_length(cipher)); | 0 | ||||||||||||
108 | else if (RAND_bytes(iv, EVP_CIPHER_iv_length(cipher)) <= 0
| 0 | ||||||||||||
109 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||
110 | } never executed: end of block | 0 | ||||||||||||
111 | - | |||||||||||||
112 | ctx = EVP_CIPHER_CTX_new(); | - | ||||||||||||
113 | if (ctx ==
| 0 | ||||||||||||
114 | ((void *)0)
| 0 | ||||||||||||
115 | ) | - | ||||||||||||
116 | goto never executed: merr;goto merr; never executed: goto merr; | 0 | ||||||||||||
117 | - | |||||||||||||
118 | - | |||||||||||||
119 | if (!EVP_CipherInit_ex(ctx, cipher,
| 0 | ||||||||||||
120 | ((void *)0)
| 0 | ||||||||||||
121 | ,
| 0 | ||||||||||||
122 | ((void *)0)
| 0 | ||||||||||||
123 | , iv, 0)
| 0 | ||||||||||||
124 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||
125 | if (EVP_CIPHER_param_to_asn1(ctx, scheme->parameter) <= 0
| 0 | ||||||||||||
126 | ERR_put_error(13,(167),(114),__FILE__,82); | - | ||||||||||||
127 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||
128 | } | - | ||||||||||||
129 | - | |||||||||||||
130 | - | |||||||||||||
131 | - | |||||||||||||
132 | - | |||||||||||||
133 | if ((
| 0 | ||||||||||||
134 | EVP_CIPHER_CTX_ctrl(ctx, 0x7, 0, &prf_nid) <= 0
| 0 | ||||||||||||
135 | ERR_clear_error(); | - | ||||||||||||
136 | prf_nid = 799; | - | ||||||||||||
137 | } never executed: end of block | 0 | ||||||||||||
138 | EVP_CIPHER_CTX_free(ctx); | - | ||||||||||||
139 | ctx = | - | ||||||||||||
140 | ((void *)0) | - | ||||||||||||
141 | ; | - | ||||||||||||
142 | - | |||||||||||||
143 | - | |||||||||||||
144 | - | |||||||||||||
145 | if (alg_nid == 37
| 0 | ||||||||||||
146 | keylen = EVP_CIPHER_key_length(cipher); never executed: keylen = EVP_CIPHER_key_length(cipher); | 0 | ||||||||||||
147 | else | - | ||||||||||||
148 | keylen = -1; never executed: keylen = -1; | 0 | ||||||||||||
149 | - | |||||||||||||
150 | - | |||||||||||||
151 | - | |||||||||||||
152 | X509_ALGOR_free(pbe2->keyfunc); | - | ||||||||||||
153 | - | |||||||||||||
154 | pbe2->keyfunc = PKCS5_pbkdf2_set(iter, salt, saltlen, prf_nid, keylen); | - | ||||||||||||
155 | - | |||||||||||||
156 | if (!pbe2->keyfunc
| 0 | ||||||||||||
157 | goto never executed: merr;goto merr; never executed: goto merr; | 0 | ||||||||||||
158 | - | |||||||||||||
159 | - | |||||||||||||
160 | - | |||||||||||||
161 | if ((
| 0 | ||||||||||||
162 | ((void *)0)
| 0 | ||||||||||||
163 | ) | - | ||||||||||||
164 | goto never executed: merr;goto merr; never executed: goto merr; | 0 | ||||||||||||
165 | - | |||||||||||||
166 | ret->algorithm = OBJ_nid2obj(161); | - | ||||||||||||
167 | - | |||||||||||||
168 | - | |||||||||||||
169 | - | |||||||||||||
170 | if (!ASN1_TYPE_pack_sequence((&(PBE2PARAM_it)), pbe2,
| 0 | ||||||||||||
171 | &ret->parameter)
| 0 | ||||||||||||
172 | goto never executed: merr;goto merr; never executed: goto merr; | 0 | ||||||||||||
173 | - | |||||||||||||
174 | PBE2PARAM_free(pbe2); | - | ||||||||||||
175 | pbe2 = | - | ||||||||||||
176 | ((void *)0) | - | ||||||||||||
177 | ; | - | ||||||||||||
178 | - | |||||||||||||
179 | return never executed: ret;return ret; never executed: return ret; | 0 | ||||||||||||
180 | - | |||||||||||||
181 | merr: | - | ||||||||||||
182 | ERR_put_error(13,(167),((1|64)),__FILE__,132); | - | ||||||||||||
183 | - | |||||||||||||
184 | err: code before this statement never executed: err: | 0 | ||||||||||||
185 | EVP_CIPHER_CTX_free(ctx); | - | ||||||||||||
186 | PBE2PARAM_free(pbe2); | - | ||||||||||||
187 | - | |||||||||||||
188 | X509_ALGOR_free(ret); | - | ||||||||||||
189 | - | |||||||||||||
190 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 | ||||||||||||
191 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||
192 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||
193 | } | - | ||||||||||||
194 | - | |||||||||||||
195 | X509_ALGOR *PKCS5_pbe2_set(const EVP_CIPHER *cipher, int iter, | - | ||||||||||||
196 | unsigned char *salt, int saltlen) | - | ||||||||||||
197 | { | - | ||||||||||||
198 | return never executed: PKCS5_pbe2_set_iv(cipher, iter, salt, saltlen, return PKCS5_pbe2_set_iv(cipher, iter, salt, saltlen, ((void *)0) , -1); never executed: return PKCS5_pbe2_set_iv(cipher, iter, salt, saltlen, ((void *)0) , -1); | 0 | ||||||||||||
199 | ((void *)0) never executed: return PKCS5_pbe2_set_iv(cipher, iter, salt, saltlen, ((void *)0) , -1); | 0 | ||||||||||||
200 | , -1); never executed: return PKCS5_pbe2_set_iv(cipher, iter, salt, saltlen, ((void *)0) , -1); | 0 | ||||||||||||
201 | } | - | ||||||||||||
202 | - | |||||||||||||
203 | X509_ALGOR *PKCS5_pbkdf2_set(int iter, unsigned char *salt, int saltlen, | - | ||||||||||||
204 | int prf_nid, int keylen) | - | ||||||||||||
205 | { | - | ||||||||||||
206 | X509_ALGOR *keyfunc = | - | ||||||||||||
207 | ((void *)0) | - | ||||||||||||
208 | ; | - | ||||||||||||
209 | PBKDF2PARAM *kdf = | - | ||||||||||||
210 | ((void *)0) | - | ||||||||||||
211 | ; | - | ||||||||||||
212 | ASN1_OCTET_STRING *osalt = | - | ||||||||||||
213 | ((void *)0) | - | ||||||||||||
214 | ; | - | ||||||||||||
215 | - | |||||||||||||
216 | if ((
| 0 | ||||||||||||
217 | ((void *)0)
| 0 | ||||||||||||
218 | ) | - | ||||||||||||
219 | goto never executed: merr;goto merr; never executed: goto merr; | 0 | ||||||||||||
220 | if ((
| 0 | ||||||||||||
221 | ((void *)0)
| 0 | ||||||||||||
222 | ) | - | ||||||||||||
223 | goto never executed: merr;goto merr; never executed: goto merr; | 0 | ||||||||||||
224 | - | |||||||||||||
225 | kdf->salt->value.octet_string = osalt; | - | ||||||||||||
226 | kdf->salt->type = 4; | - | ||||||||||||
227 | - | |||||||||||||
228 | if (saltlen == 0
| 0 | ||||||||||||
229 | saltlen = 8; never executed: saltlen = 8; | 0 | ||||||||||||
230 | if ((
| 0 | ||||||||||||
231 | ((void *)0)
| 0 | ||||||||||||
232 | ) | - | ||||||||||||
233 | goto never executed: merr;goto merr; never executed: goto merr; | 0 | ||||||||||||
234 | - | |||||||||||||
235 | osalt->length = saltlen; | - | ||||||||||||
236 | - | |||||||||||||
237 | if (salt
| 0 | ||||||||||||
238 | memcpy(osalt->data, salt, saltlen); never executed: memcpy(osalt->data, salt, saltlen); | 0 | ||||||||||||
239 | else if (RAND_bytes(osalt->data, saltlen) <= 0
| 0 | ||||||||||||
240 | goto never executed: merr;goto merr; never executed: goto merr; | 0 | ||||||||||||
241 | - | |||||||||||||
242 | if (iter <= 0
| 0 | ||||||||||||
243 | iter = 2048; never executed: iter = 2048; | 0 | ||||||||||||
244 | - | |||||||||||||
245 | if (!ASN1_INTEGER_set(kdf->iter, iter)
| 0 | ||||||||||||
246 | goto never executed: merr;goto merr; never executed: goto merr; | 0 | ||||||||||||
247 | - | |||||||||||||
248 | - | |||||||||||||
249 | - | |||||||||||||
250 | if (keylen > 0
| 0 | ||||||||||||
251 | if ((
| 0 | ||||||||||||
252 | ((void *)0)
| 0 | ||||||||||||
253 | ) | - | ||||||||||||
254 | goto never executed: merr;goto merr; never executed: goto merr; | 0 | ||||||||||||
255 | if (!ASN1_INTEGER_set(kdf->keylength, keylen)
| 0 | ||||||||||||
256 | goto never executed: merr;goto merr; never executed: goto merr; | 0 | ||||||||||||
257 | } never executed: end of block | 0 | ||||||||||||
258 | - | |||||||||||||
259 | - | |||||||||||||
260 | if (prf_nid > 0
| 0 | ||||||||||||
261 | kdf->prf = X509_ALGOR_new(); | - | ||||||||||||
262 | if (kdf->prf ==
| 0 | ||||||||||||
263 | ((void *)0)
| 0 | ||||||||||||
264 | ) | - | ||||||||||||
265 | goto never executed: merr;goto merr; never executed: goto merr; | 0 | ||||||||||||
266 | X509_ALGOR_set0(kdf->prf, OBJ_nid2obj(prf_nid), 5, | - | ||||||||||||
267 | ((void *)0) | - | ||||||||||||
268 | ); | - | ||||||||||||
269 | } never executed: end of block | 0 | ||||||||||||
270 | - | |||||||||||||
271 | - | |||||||||||||
272 | - | |||||||||||||
273 | keyfunc = X509_ALGOR_new(); | - | ||||||||||||
274 | if (keyfunc ==
| 0 | ||||||||||||
275 | ((void *)0)
| 0 | ||||||||||||
276 | ) | - | ||||||||||||
277 | goto never executed: merr;goto merr; never executed: goto merr; | 0 | ||||||||||||
278 | - | |||||||||||||
279 | keyfunc->algorithm = OBJ_nid2obj(69); | - | ||||||||||||
280 | - | |||||||||||||
281 | - | |||||||||||||
282 | - | |||||||||||||
283 | if (!ASN1_TYPE_pack_sequence((&(PBKDF2PARAM_it)), kdf,
| 0 | ||||||||||||
284 | &keyfunc->parameter)
| 0 | ||||||||||||
285 | goto never executed: merr;goto merr; never executed: goto merr; | 0 | ||||||||||||
286 | - | |||||||||||||
287 | PBKDF2PARAM_free(kdf); | - | ||||||||||||
288 | return never executed: keyfunc;return keyfunc; never executed: return keyfunc; | 0 | ||||||||||||
289 | - | |||||||||||||
290 | merr: | - | ||||||||||||
291 | ERR_put_error(13,(219),((1|64)),__FILE__,217); | - | ||||||||||||
292 | PBKDF2PARAM_free(kdf); | - | ||||||||||||
293 | X509_ALGOR_free(keyfunc); | - | ||||||||||||
294 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 | ||||||||||||
295 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||
296 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||
297 | } | - | ||||||||||||
Switch to Source code | Preprocessed file |