Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/openssl/src/crypto/cms/cms_pwri.c |
Switch to Source code | Preprocessed file |
Line | Source | Count | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | - | |||||||||||||
2 | - | |||||||||||||
3 | int CMS_RecipientInfo_set0_password(CMS_RecipientInfo *ri, | - | ||||||||||||
4 | unsigned char *pass, ssize_t passlen) | - | ||||||||||||
5 | { | - | ||||||||||||
6 | CMS_PasswordRecipientInfo *pwri; | - | ||||||||||||
7 | if (ri->type != 3
| 0 | ||||||||||||
8 | ERR_put_error(46,(168),(177),__FILE__,26); | - | ||||||||||||
9 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||
10 | } | - | ||||||||||||
11 | - | |||||||||||||
12 | pwri = ri->d.pwri; | - | ||||||||||||
13 | pwri->pass = pass; | - | ||||||||||||
14 | if (pass
| 0 | ||||||||||||
15 | passlen = strlen((char *)pass); never executed: passlen = strlen((char *)pass); | 0 | ||||||||||||
16 | pwri->passlen = passlen; | - | ||||||||||||
17 | return never executed: 1;return 1; never executed: return 1; | 0 | ||||||||||||
18 | } | - | ||||||||||||
19 | - | |||||||||||||
20 | CMS_RecipientInfo *CMS_add0_recipient_password(CMS_ContentInfo *cms, | - | ||||||||||||
21 | int iter, int wrap_nid, | - | ||||||||||||
22 | int pbe_nid, | - | ||||||||||||
23 | unsigned char *pass, | - | ||||||||||||
24 | ssize_t passlen, | - | ||||||||||||
25 | const EVP_CIPHER *kekciph) | - | ||||||||||||
26 | { | - | ||||||||||||
27 | CMS_RecipientInfo *ri = | - | ||||||||||||
28 | ((void *)0) | - | ||||||||||||
29 | ; | - | ||||||||||||
30 | CMS_EnvelopedData *env; | - | ||||||||||||
31 | CMS_PasswordRecipientInfo *pwri; | - | ||||||||||||
32 | EVP_CIPHER_CTX *ctx = | - | ||||||||||||
33 | ((void *)0) | - | ||||||||||||
34 | ; | - | ||||||||||||
35 | X509_ALGOR *encalg = | - | ||||||||||||
36 | ((void *)0) | - | ||||||||||||
37 | ; | - | ||||||||||||
38 | unsigned char iv[16]; | - | ||||||||||||
39 | int ivlen; | - | ||||||||||||
40 | - | |||||||||||||
41 | env = cms_get0_enveloped(cms); | - | ||||||||||||
42 | if (!env
| 0 | ||||||||||||
43 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 | ||||||||||||
44 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||
45 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||
46 | - | |||||||||||||
47 | if (wrap_nid <= 0
| 0 | ||||||||||||
48 | wrap_nid = 893; never executed: wrap_nid = 893; | 0 | ||||||||||||
49 | - | |||||||||||||
50 | if (pbe_nid <= 0
| 0 | ||||||||||||
51 | pbe_nid = 69; never executed: pbe_nid = 69; | 0 | ||||||||||||
52 | - | |||||||||||||
53 | - | |||||||||||||
54 | if (kekciph ==
| 0 | ||||||||||||
55 | ((void *)0)
| 0 | ||||||||||||
56 | ) | - | ||||||||||||
57 | kekciph = env->encryptedContentInfo->cipher; never executed: kekciph = env->encryptedContentInfo->cipher; | 0 | ||||||||||||
58 | - | |||||||||||||
59 | if (kekciph ==
| 0 | ||||||||||||
60 | ((void *)0)
| 0 | ||||||||||||
61 | ) { | - | ||||||||||||
62 | ERR_put_error(46,(165),(126),__FILE__,68); | - | ||||||||||||
63 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 | ||||||||||||
64 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||
65 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||
66 | } | - | ||||||||||||
67 | if (wrap_nid != 893
| 0 | ||||||||||||
68 | ERR_put_error(46,(165),(179),__FILE__,73) | - | ||||||||||||
69 | ; | - | ||||||||||||
70 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 | ||||||||||||
71 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||
72 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||
73 | } | - | ||||||||||||
74 | - | |||||||||||||
75 | - | |||||||||||||
76 | encalg = X509_ALGOR_new(); | - | ||||||||||||
77 | if (encalg ==
| 0 | ||||||||||||
78 | ((void *)0)
| 0 | ||||||||||||
79 | ) { | - | ||||||||||||
80 | goto never executed: merr;goto merr; never executed: goto merr; | 0 | ||||||||||||
81 | } | - | ||||||||||||
82 | ctx = EVP_CIPHER_CTX_new(); | - | ||||||||||||
83 | - | |||||||||||||
84 | if (EVP_EncryptInit_ex(ctx, kekciph,
| 0 | ||||||||||||
85 | ((void *)0)
| 0 | ||||||||||||
86 | ,
| 0 | ||||||||||||
87 | ((void *)0)
| 0 | ||||||||||||
88 | ,
| 0 | ||||||||||||
89 | ((void *)0)
| 0 | ||||||||||||
90 | ) <= 0
| 0 | ||||||||||||
91 | ERR_put_error(46,(165),(6),__FILE__,85); | - | ||||||||||||
92 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||
93 | } | - | ||||||||||||
94 | - | |||||||||||||
95 | ivlen = EVP_CIPHER_CTX_iv_length(ctx); | - | ||||||||||||
96 | - | |||||||||||||
97 | if (ivlen > 0
| 0 | ||||||||||||
98 | if (RAND_bytes(iv, ivlen) <= 0
| 0 | ||||||||||||
99 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||
100 | if (EVP_EncryptInit_ex(ctx,
| 0 | ||||||||||||
101 | ((void *)0)
| 0 | ||||||||||||
102 | ,
| 0 | ||||||||||||
103 | ((void *)0)
| 0 | ||||||||||||
104 | ,
| 0 | ||||||||||||
105 | ((void *)0)
| 0 | ||||||||||||
106 | , iv) <= 0
| 0 | ||||||||||||
107 | ERR_put_error(46,(165),(6),__FILE__,95); | - | ||||||||||||
108 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||
109 | } | - | ||||||||||||
110 | encalg->parameter = ASN1_TYPE_new(); | - | ||||||||||||
111 | if (!encalg->parameter
| 0 | ||||||||||||
112 | ERR_put_error(46,(165),((1|64)),__FILE__,100); | - | ||||||||||||
113 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||
114 | } | - | ||||||||||||
115 | if (EVP_CIPHER_param_to_asn1(ctx, encalg->parameter) <= 0
| 0 | ||||||||||||
116 | ERR_put_error(46,(165),(102),__FILE__,105) | - | ||||||||||||
117 | ; | - | ||||||||||||
118 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||
119 | } | - | ||||||||||||
120 | } never executed: end of block | 0 | ||||||||||||
121 | - | |||||||||||||
122 | encalg->algorithm = OBJ_nid2obj(EVP_CIPHER_type(EVP_CIPHER_CTX_cipher(ctx))); | - | ||||||||||||
123 | - | |||||||||||||
124 | EVP_CIPHER_CTX_free(ctx); | - | ||||||||||||
125 | ctx = | - | ||||||||||||
126 | ((void *)0) | - | ||||||||||||
127 | ; | - | ||||||||||||
128 | - | |||||||||||||
129 | - | |||||||||||||
130 | ri = (CMS_RecipientInfo *)ASN1_item_new((&(CMS_RecipientInfo_it))); | - | ||||||||||||
131 | if (ri ==
| 0 | ||||||||||||
132 | ((void *)0)
| 0 | ||||||||||||
133 | ) | - | ||||||||||||
134 | goto never executed: merr;goto merr; never executed: goto merr; | 0 | ||||||||||||
135 | - | |||||||||||||
136 | ri->d.pwri = (CMS_PasswordRecipientInfo *)ASN1_item_new((&(CMS_PasswordRecipientInfo_it))); | - | ||||||||||||
137 | if (ri->d.pwri ==
| 0 | ||||||||||||
138 | ((void *)0)
| 0 | ||||||||||||
139 | ) | - | ||||||||||||
140 | goto never executed: merr;goto merr; never executed: goto merr; | 0 | ||||||||||||
141 | ri->type = 3; | - | ||||||||||||
142 | - | |||||||||||||
143 | pwri = ri->d.pwri; | - | ||||||||||||
144 | - | |||||||||||||
145 | X509_ALGOR_free(pwri->keyEncryptionAlgorithm); | - | ||||||||||||
146 | pwri->keyEncryptionAlgorithm = X509_ALGOR_new(); | - | ||||||||||||
147 | if (pwri->keyEncryptionAlgorithm ==
| 0 | ||||||||||||
148 | ((void *)0)
| 0 | ||||||||||||
149 | ) | - | ||||||||||||
150 | goto never executed: merr;goto merr; never executed: goto merr; | 0 | ||||||||||||
151 | pwri->keyEncryptionAlgorithm->algorithm = OBJ_nid2obj(wrap_nid); | - | ||||||||||||
152 | pwri->keyEncryptionAlgorithm->parameter = ASN1_TYPE_new(); | - | ||||||||||||
153 | if (pwri->keyEncryptionAlgorithm->parameter ==
| 0 | ||||||||||||
154 | ((void *)0)
| 0 | ||||||||||||
155 | ) | - | ||||||||||||
156 | goto never executed: merr;goto merr; never executed: goto merr; | 0 | ||||||||||||
157 | - | |||||||||||||
158 | if (!ASN1_item_pack(encalg, (&(X509_ALGOR_it)),
| 0 | ||||||||||||
159 | &pwri->keyEncryptionAlgorithm->parameter->
| 0 | ||||||||||||
160 | value.sequence)
| 0 | ||||||||||||
161 | goto never executed: merr;goto merr; never executed: goto merr; | 0 | ||||||||||||
162 | pwri->keyEncryptionAlgorithm->parameter->type = 16; | - | ||||||||||||
163 | - | |||||||||||||
164 | X509_ALGOR_free(encalg); | - | ||||||||||||
165 | encalg = | - | ||||||||||||
166 | ((void *)0) | - | ||||||||||||
167 | ; | - | ||||||||||||
168 | - | |||||||||||||
169 | - | |||||||||||||
170 | - | |||||||||||||
171 | pwri->keyDerivationAlgorithm = PKCS5_pbkdf2_set(iter, | - | ||||||||||||
172 | ((void *)0) | - | ||||||||||||
173 | , 0, -1, -1); | - | ||||||||||||
174 | - | |||||||||||||
175 | if (!pwri->keyDerivationAlgorithm
| 0 | ||||||||||||
176 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||
177 | - | |||||||||||||
178 | CMS_RecipientInfo_set0_password(ri, pass, passlen); | - | ||||||||||||
179 | pwri->version = 0; | - | ||||||||||||
180 | - | |||||||||||||
181 | if (!sk_CMS_RecipientInfo_push(env->recipientInfos, ri)
| 0 | ||||||||||||
182 | goto never executed: merr;goto merr; never executed: goto merr; | 0 | ||||||||||||
183 | - | |||||||||||||
184 | return never executed: ri;return ri; never executed: return ri; | 0 | ||||||||||||
185 | - | |||||||||||||
186 | merr: | - | ||||||||||||
187 | ERR_put_error(46,(165),((1|64)),__FILE__,161); | - | ||||||||||||
188 | err: code before this statement never executed: err: | 0 | ||||||||||||
189 | EVP_CIPHER_CTX_free(ctx); | - | ||||||||||||
190 | if (ri
| 0 | ||||||||||||
191 | ASN1_item_free(((void*) (1 ? ri : (CMS_RecipientInfo*)0)), (&(CMS_RecipientInfo_it))); never executed: ASN1_item_free(((void*) (1 ? ri : (CMS_RecipientInfo*)0)), (&(CMS_RecipientInfo_it))); | 0 | ||||||||||||
192 | X509_ALGOR_free(encalg); | - | ||||||||||||
193 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 | ||||||||||||
194 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||
195 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||
196 | - | |||||||||||||
197 | } | - | ||||||||||||
198 | - | |||||||||||||
199 | - | |||||||||||||
200 | - | |||||||||||||
201 | - | |||||||||||||
202 | - | |||||||||||||
203 | - | |||||||||||||
204 | static int kek_unwrap_key(unsigned char *out, size_t *outlen, | - | ||||||||||||
205 | const unsigned char *in, size_t inlen, | - | ||||||||||||
206 | EVP_CIPHER_CTX *ctx) | - | ||||||||||||
207 | { | - | ||||||||||||
208 | size_t blocklen = EVP_CIPHER_CTX_block_size(ctx); | - | ||||||||||||
209 | unsigned char *tmp; | - | ||||||||||||
210 | int outl, rv = 0; | - | ||||||||||||
211 | if (inlen < 2 * blocklen
| 0 | ||||||||||||
212 | - | |||||||||||||
213 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||
214 | } | - | ||||||||||||
215 | if (inlen % blocklen
| 0 | ||||||||||||
216 | - | |||||||||||||
217 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||
218 | } | - | ||||||||||||
219 | if ((
| 0 | ||||||||||||
220 | ((void *)0)
| 0 | ||||||||||||
221 | ) { | - | ||||||||||||
222 | ERR_put_error(46,(180),((1|64)),__FILE__,192); | - | ||||||||||||
223 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||
224 | } | - | ||||||||||||
225 | - | |||||||||||||
226 | if (!EVP_DecryptUpdate(ctx, tmp + inlen - 2 * blocklen, &outl,
| 0 | ||||||||||||
227 | in + inlen - 2 * blocklen, blocklen * 2)
| 0 | ||||||||||||
228 | - | |||||||||||||
229 | - | |||||||||||||
230 | - | |||||||||||||
231 | - | |||||||||||||
232 | - | |||||||||||||
233 | || !EVP_DecryptUpdate(ctx, tmp, &outl,
| 0 | ||||||||||||
234 | tmp + inlen - blocklen, blocklen)
| 0 | ||||||||||||
235 | - | |||||||||||||
236 | || !EVP_DecryptUpdate(ctx, tmp, &outl, in, inlen - blocklen)
| 0 | ||||||||||||
237 | - | |||||||||||||
238 | - | |||||||||||||
239 | || !EVP_DecryptInit_ex(ctx,
| 0 | ||||||||||||
240 | ((void *)0)
| 0 | ||||||||||||
241 | ,
| 0 | ||||||||||||
242 | ((void *)0)
| 0 | ||||||||||||
243 | ,
| 0 | ||||||||||||
244 | ((void *)0)
| 0 | ||||||||||||
245 | ,
| 0 | ||||||||||||
246 | ((void *)0)
| 0 | ||||||||||||
247 | )
| 0 | ||||||||||||
248 | - | |||||||||||||
249 | || !EVP_DecryptUpdate(ctx, tmp, &outl, tmp, inlen)
| 0 | ||||||||||||
250 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||
251 | - | |||||||||||||
252 | if (((
| 0 | ||||||||||||
253 | - | |||||||||||||
254 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||
255 | } | - | ||||||||||||
256 | if (inlen < (size_t)(tmp[0] - 4)
| 0 | ||||||||||||
257 | - | |||||||||||||
258 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||
259 | } | - | ||||||||||||
260 | *outlen = (size_t)tmp[0]; | - | ||||||||||||
261 | memcpy(out, tmp + 4, *outlen); | - | ||||||||||||
262 | rv = 1; | - | ||||||||||||
263 | err: code before this statement never executed: err: | 0 | ||||||||||||
264 | CRYPTO_clear_free(tmp, inlen, __FILE__, 226); | - | ||||||||||||
265 | return never executed: rv;return rv; never executed: return rv; | 0 | ||||||||||||
266 | - | |||||||||||||
267 | } | - | ||||||||||||
268 | - | |||||||||||||
269 | static int kek_wrap_key(unsigned char *out, size_t *outlen, | - | ||||||||||||
270 | const unsigned char *in, size_t inlen, | - | ||||||||||||
271 | EVP_CIPHER_CTX *ctx) | - | ||||||||||||
272 | { | - | ||||||||||||
273 | size_t blocklen = EVP_CIPHER_CTX_block_size(ctx); | - | ||||||||||||
274 | size_t olen; | - | ||||||||||||
275 | int dummy; | - | ||||||||||||
276 | - | |||||||||||||
277 | - | |||||||||||||
278 | - | |||||||||||||
279 | - | |||||||||||||
280 | olen = (inlen + 4 + blocklen - 1) / blocklen; | - | ||||||||||||
281 | olen *= blocklen; | - | ||||||||||||
282 | if (olen < 2 * blocklen
| 0 | ||||||||||||
283 | - | |||||||||||||
284 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||
285 | } | - | ||||||||||||
286 | if (inlen > 0xFF
| 0 | ||||||||||||
287 | - | |||||||||||||
288 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||
289 | } | - | ||||||||||||
290 | if (out
| 0 | ||||||||||||
291 | - | |||||||||||||
292 | out[0] = (unsigned char)inlen; | - | ||||||||||||
293 | out[1] = in[0] ^ 0xFF; | - | ||||||||||||
294 | out[2] = in[1] ^ 0xFF; | - | ||||||||||||
295 | out[3] = in[2] ^ 0xFF; | - | ||||||||||||
296 | memcpy(out + 4, in, inlen); | - | ||||||||||||
297 | - | |||||||||||||
298 | if (olen > inlen + 4
| 0 | ||||||||||||
299 | && RAND_bytes(out + 4 + inlen, olen - 4 - inlen) <= 0
| 0 | ||||||||||||
300 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||
301 | - | |||||||||||||
302 | if (!EVP_EncryptUpdate(ctx, out, &dummy, out, olen)
| 0 | ||||||||||||
303 | || !EVP_EncryptUpdate(ctx, out, &dummy, out, olen)
| 0 | ||||||||||||
304 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||
305 | } never executed: end of block | 0 | ||||||||||||
306 | - | |||||||||||||
307 | *outlen = olen; | - | ||||||||||||
308 | - | |||||||||||||
309 | return never executed: 1;return 1; never executed: return 1; | 0 | ||||||||||||
310 | } | - | ||||||||||||
311 | - | |||||||||||||
312 | - | |||||||||||||
313 | - | |||||||||||||
314 | int cms_RecipientInfo_pwri_crypt(CMS_ContentInfo *cms, CMS_RecipientInfo *ri, | - | ||||||||||||
315 | int en_de) | - | ||||||||||||
316 | { | - | ||||||||||||
317 | CMS_EncryptedContentInfo *ec; | - | ||||||||||||
318 | CMS_PasswordRecipientInfo *pwri; | - | ||||||||||||
319 | int r = 0; | - | ||||||||||||
320 | X509_ALGOR *algtmp, *kekalg = | - | ||||||||||||
321 | ((void *)0) | - | ||||||||||||
322 | ; | - | ||||||||||||
323 | EVP_CIPHER_CTX *kekctx = | - | ||||||||||||
324 | ((void *)0) | - | ||||||||||||
325 | ; | - | ||||||||||||
326 | const EVP_CIPHER *kekcipher; | - | ||||||||||||
327 | unsigned char *key = | - | ||||||||||||
328 | ((void *)0) | - | ||||||||||||
329 | ; | - | ||||||||||||
330 | size_t keylen; | - | ||||||||||||
331 | - | |||||||||||||
332 | ec = cms->d.envelopedData->encryptedContentInfo; | - | ||||||||||||
333 | - | |||||||||||||
334 | pwri = ri->d.pwri; | - | ||||||||||||
335 | - | |||||||||||||
336 | if (!pwri->pass
| 0 | ||||||||||||
337 | ERR_put_error(46,(167),(178),__FILE__,293); | - | ||||||||||||
338 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||
339 | } | - | ||||||||||||
340 | algtmp = pwri->keyEncryptionAlgorithm; | - | ||||||||||||
341 | - | |||||||||||||
342 | if (!algtmp
| 0 | ||||||||||||
343 | ERR_put_error(46,(167),(179),__FILE__,300) | - | ||||||||||||
344 | ; | - | ||||||||||||
345 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||
346 | } | - | ||||||||||||
347 | - | |||||||||||||
348 | kekalg = ASN1_TYPE_unpack_sequence((&(X509_ALGOR_it)), | - | ||||||||||||
349 | algtmp->parameter); | - | ||||||||||||
350 | - | |||||||||||||
351 | if (kekalg ==
| 0 | ||||||||||||
352 | ((void *)0)
| 0 | ||||||||||||
353 | ) { | - | ||||||||||||
354 | ERR_put_error(46,(167),(176),__FILE__,309) | - | ||||||||||||
355 | ; | - | ||||||||||||
356 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||
357 | } | - | ||||||||||||
358 | - | |||||||||||||
359 | kekcipher = EVP_get_cipherbyname(OBJ_nid2sn(OBJ_obj2nid(kekalg->algorithm))); | - | ||||||||||||
360 | - | |||||||||||||
361 | if (!kekcipher
| 0 | ||||||||||||
362 | ERR_put_error(46,(167),(148),__FILE__,316); | - | ||||||||||||
363 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||
364 | } | - | ||||||||||||
365 | - | |||||||||||||
366 | kekctx = EVP_CIPHER_CTX_new(); | - | ||||||||||||
367 | if (kekctx ==
| 0 | ||||||||||||
368 | ((void *)0)
| 0 | ||||||||||||
369 | ) { | - | ||||||||||||
370 | ERR_put_error(46,(167),((1|64)),__FILE__,322); | - | ||||||||||||
371 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||
372 | } | - | ||||||||||||
373 | - | |||||||||||||
374 | if (!EVP_CipherInit_ex(kekctx, kekcipher,
| 0 | ||||||||||||
375 | ((void *)0)
| 0 | ||||||||||||
376 | ,
| 0 | ||||||||||||
377 | ((void *)0)
| 0 | ||||||||||||
378 | ,
| 0 | ||||||||||||
379 | ((void *)0)
| 0 | ||||||||||||
380 | , en_de)
| 0 | ||||||||||||
381 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||
382 | EVP_CIPHER_CTX_set_padding(kekctx, 0); | - | ||||||||||||
383 | if (EVP_CIPHER_asn1_to_param(kekctx, kekalg->parameter) <= 0
| 0 | ||||||||||||
384 | ERR_put_error(46,(167),(102),__FILE__,331) | - | ||||||||||||
385 | ; | - | ||||||||||||
386 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||
387 | } | - | ||||||||||||
388 | - | |||||||||||||
389 | algtmp = pwri->keyDerivationAlgorithm; | - | ||||||||||||
390 | - | |||||||||||||
391 | - | |||||||||||||
392 | - | |||||||||||||
393 | if (EVP_PBE_CipherInit(algtmp->algorithm,
| 0 | ||||||||||||
394 | (char *)pwri->pass, pwri->passlen,
| 0 | ||||||||||||
395 | algtmp->parameter, kekctx, en_de) < 0
| 0 | ||||||||||||
396 | ERR_put_error(46,(167),(6),__FILE__,342); | - | ||||||||||||
397 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||
398 | } | - | ||||||||||||
399 | - | |||||||||||||
400 | - | |||||||||||||
401 | - | |||||||||||||
402 | if (en_de
| 0 | ||||||||||||
403 | - | |||||||||||||
404 | if (!kek_wrap_key(
| 0 | ||||||||||||
405 | ((void *)0)
| 0 | ||||||||||||
406 | , &keylen, ec->key, ec->keylen, kekctx)
| 0 | ||||||||||||
407 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||
408 | - | |||||||||||||
409 | key = CRYPTO_malloc(keylen, __FILE__, 353); | - | ||||||||||||
410 | - | |||||||||||||
411 | if (key ==
| 0 | ||||||||||||
412 | ((void *)0)
| 0 | ||||||||||||
413 | ) | - | ||||||||||||
414 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||
415 | - | |||||||||||||
416 | if (!kek_wrap_key(key, &keylen, ec->key, ec->keylen, kekctx)
| 0 | ||||||||||||
417 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||
418 | pwri->encryptedKey->data = key; | - | ||||||||||||
419 | pwri->encryptedKey->length = keylen; | - | ||||||||||||
420 | } never executed: else {end of block | 0 | ||||||||||||
421 | key = CRYPTO_malloc(pwri->encryptedKey->length, __FILE__, 363); | - | ||||||||||||
422 | - | |||||||||||||
423 | if (key ==
| 0 | ||||||||||||
424 | ((void *)0)
| 0 | ||||||||||||
425 | ) { | - | ||||||||||||
426 | ERR_put_error(46,(167),((1|64)),__FILE__,366); | - | ||||||||||||
427 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||
428 | } | - | ||||||||||||
429 | if (!kek_unwrap_key(key, &keylen,
| 0 | ||||||||||||
430 | pwri->encryptedKey->data,
| 0 | ||||||||||||
431 | pwri->encryptedKey->length, kekctx)
| 0 | ||||||||||||
432 | ERR_put_error(46,(167),(180),__FILE__,372); | - | ||||||||||||
433 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||
434 | } | - | ||||||||||||
435 | - | |||||||||||||
436 | ec->key = key; | - | ||||||||||||
437 | ec->keylen = keylen; | - | ||||||||||||
438 | - | |||||||||||||
439 | } never executed: end of block | 0 | ||||||||||||
440 | - | |||||||||||||
441 | r = 1; | - | ||||||||||||
442 | - | |||||||||||||
443 | err: code before this statement never executed: err: | 0 | ||||||||||||
444 | - | |||||||||||||
445 | EVP_CIPHER_CTX_free(kekctx); | - | ||||||||||||
446 | - | |||||||||||||
447 | if (!r
| 0 | ||||||||||||
448 | CRYPTO_free(key, __FILE__, 388); never executed: CRYPTO_free(key, __FILE__, 388); | 0 | ||||||||||||
449 | X509_ALGOR_free(kekalg); | - | ||||||||||||
450 | - | |||||||||||||
451 | return never executed: r;return r; never executed: return r; | 0 | ||||||||||||
452 | - | |||||||||||||
453 | } | - | ||||||||||||
Switch to Source code | Preprocessed file |