OpenCoverage

p5_scrypt.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/openssl/src/crypto/asn1/p5_scrypt.c
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3-
4-
5-
6static const ASN1_TEMPLATE SCRYPT_PARAMS_seq_tt[] = {-
7 { (0), (0), -
8 __builtin_offsetof (-
9 SCRYPT_PARAMS-
10 , -
11 salt-
12 )-
13 , "salt", (&(ASN1_OCTET_STRING_it)) },-
14 { (0), (0), -
15 __builtin_offsetof (-
16 SCRYPT_PARAMS-
17 , -
18 costParameter-
19 )-
20 , "costParameter", (&(ASN1_INTEGER_it)) },-
21 { (0), (0), -
22 __builtin_offsetof (-
23 SCRYPT_PARAMS-
24 , -
25 blockSize-
26 )-
27 , "blockSize", (&(ASN1_INTEGER_it)) },-
28 { (0), (0), -
29 __builtin_offsetof (-
30 SCRYPT_PARAMS-
31 , -
32 parallelizationParameter-
33 )-
34 , "parallelizationParameter", (&(ASN1_INTEGER_it)) },-
35 { ((0x1)), (0), -
36 __builtin_offsetof (-
37 SCRYPT_PARAMS-
38 , -
39 keyLength-
40 )-
41 , "keyLength", (&(ASN1_INTEGER_it)) },-
42} ; const ASN1_ITEM SCRYPT_PARAMS_it = { 0x1, 16, SCRYPT_PARAMS_seq_tt, sizeof(SCRYPT_PARAMS_seq_tt) / sizeof(ASN1_TEMPLATE), -
43 ((void *)0)-
44 , sizeof(SCRYPT_PARAMS), "SCRYPT_PARAMS" };-
45-
46SCRYPT_PARAMS *d2i_SCRYPT_PARAMS(SCRYPT_PARAMS **a, const unsigned char **in, long len) { return
never executed: return (SCRYPT_PARAMS *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, (&(SCRYPT_PARAMS_it)));
(SCRYPT_PARAMS *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, (&(SCRYPT_PARAMS_it)));
never executed: return (SCRYPT_PARAMS *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, (&(SCRYPT_PARAMS_it)));
} int i2d_SCRYPT_PARAMS(SCRYPT_PARAMS *a, unsigned char **out) { return
never executed: return ASN1_item_i2d((ASN1_VALUE *)a, out, (&(SCRYPT_PARAMS_it)));
ASN1_item_i2d((ASN1_VALUE *)a, out, (&(SCRYPT_PARAMS_it)));
never executed: return ASN1_item_i2d((ASN1_VALUE *)a, out, (&(SCRYPT_PARAMS_it)));
} SCRYPT_PARAMS *SCRYPT_PARAMS_new(void) { return
never executed: return (SCRYPT_PARAMS *)ASN1_item_new((&(SCRYPT_PARAMS_it)));
(SCRYPT_PARAMS *)ASN1_item_new((&(SCRYPT_PARAMS_it)));
never executed: return (SCRYPT_PARAMS *)ASN1_item_new((&(SCRYPT_PARAMS_it)));
} void SCRYPT_PARAMS_free(SCRYPT_PARAMS *a) { ASN1_item_free((ASN1_VALUE *)a, (&(SCRYPT_PARAMS_it))); }
never executed: end of block
0
47-
48static X509_ALGOR *pkcs5_scrypt_set(const unsigned char *salt, size_t saltlen,-
49 size_t keylen, uint64_t N, uint64_t r,-
50 uint64_t p);-
51-
52-
53-
54-
55-
56X509_ALGOR *PKCS5_pbe2_set_scrypt(const EVP_CIPHER *cipher,-
57 const unsigned char *salt, int saltlen,-
58 unsigned char *aiv, uint64_t N, uint64_t r,-
59 uint64_t p)-
60{-
61 X509_ALGOR *scheme = -
62 ((void *)0)-
63 , *ret = -
64 ((void *)0)-
65 ;-
66 int alg_nid;-
67 size_t keylen = 0;-
68 EVP_CIPHER_CTX *ctx = -
69 ((void *)0)-
70 ;-
71 unsigned char iv[16];-
72 PBE2PARAM *pbe2 = -
73 ((void *)0)-
74 ;-
75-
76 if (!cipher
!cipherDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
77 ERR_put_error(13,(231),((3|64)),__FILE__,52);-
78 goto
never executed: goto err;
err;
never executed: goto err;
0
79 }-
80-
81 if (EVP_PBE_scrypt(
EVP_PBE_scrypt...*)0) , 0) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
82 ((void *)0)
EVP_PBE_scrypt...*)0) , 0) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
83 , 0,
EVP_PBE_scrypt...*)0) , 0) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
84 ((void *)0)
EVP_PBE_scrypt...*)0) , 0) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
85 , 0, N, r, p, 0,
EVP_PBE_scrypt...*)0) , 0) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
86 ((void *)0)
EVP_PBE_scrypt...*)0) , 0) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
87 , 0) == 0
EVP_PBE_scrypt...*)0) , 0) == 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
88 ERR_put_error(13,(231),(227),__FILE__,58)-
89 ;-
90 goto
never executed: goto err;
err;
never executed: goto err;
0
91 }-
92-
93 alg_nid = EVP_CIPHER_type(cipher);-
94 if (alg_nid == 0
alg_nid == 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
95 ERR_put_error(13,(231),(108),__FILE__,65)-
96 ;-
97 goto
never executed: goto err;
err;
never executed: goto err;
0
98 }-
99-
100 pbe2 = PBE2PARAM_new();-
101 if (pbe2 ==
pbe2 == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
102 ((void *)0)
pbe2 == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
103 )-
104 goto
never executed: goto merr;
merr;
never executed: goto merr;
0
105-
106-
107 scheme = pbe2->encryption;-
108-
109 scheme->algorithm = OBJ_nid2obj(alg_nid);-
110 scheme->parameter = ASN1_TYPE_new();-
111 if (scheme->parameter ==
scheme->parame...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
112 ((void *)0)
scheme->parame...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
113 )-
114 goto
never executed: goto merr;
merr;
never executed: goto merr;
0
115-
116-
117 if (EVP_CIPHER_iv_length(cipher)
EVP_CIPHER_iv_length(cipher)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
118 if (aiv
aivDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
119 memcpy(iv, aiv, EVP_CIPHER_iv_length(cipher));
never executed: memcpy(iv, aiv, EVP_CIPHER_iv_length(cipher));
0
120 else if (RAND_bytes(iv, EVP_CIPHER_iv_length(cipher)) <= 0
RAND_bytes(iv,...(cipher)) <= 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
121 goto
never executed: goto err;
err;
never executed: goto err;
0
122 }
never executed: end of block
0
123-
124 ctx = EVP_CIPHER_CTX_new();-
125 if (ctx ==
ctx == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
126 ((void *)0)
ctx == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
127 )-
128 goto
never executed: goto merr;
merr;
never executed: goto merr;
0
129-
130-
131 if (EVP_CipherInit_ex(ctx, cipher,
EVP_CipherInit... , iv, 0) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
132 ((void *)0)
EVP_CipherInit... , iv, 0) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
133 ,
EVP_CipherInit... , iv, 0) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
134 ((void *)0)
EVP_CipherInit... , iv, 0) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
135 , iv, 0) == 0
EVP_CipherInit... , iv, 0) == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
136 goto
never executed: goto err;
err;
never executed: goto err;
0
137 if (EVP_CIPHER_param_to_asn1(ctx, scheme->parameter) <= 0
EVP_CIPHER_par...arameter) <= 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
138 ERR_put_error(13,(231),(114),__FILE__,98)-
139 ;-
140 goto
never executed: goto err;
err;
never executed: goto err;
0
141 }-
142 EVP_CIPHER_CTX_free(ctx);-
143 ctx = -
144 ((void *)0)-
145 ;-
146-
147-
148-
149 if (alg_nid == 37
alg_nid == 37Description
TRUEnever evaluated
FALSEnever evaluated
)
0
150 keylen = EVP_CIPHER_key_length(cipher);
never executed: keylen = EVP_CIPHER_key_length(cipher);
0
151-
152-
153-
154 X509_ALGOR_free(pbe2->keyfunc);-
155-
156 pbe2->keyfunc = pkcs5_scrypt_set(salt, saltlen, keylen, N, r, p);-
157-
158 if (pbe2->keyfunc ==
pbe2->keyfunc == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
159 ((void *)0)
pbe2->keyfunc == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
160 )-
161 goto
never executed: goto merr;
merr;
never executed: goto merr;
0
162-
163-
164-
165 ret = X509_ALGOR_new();-
166 if (ret ==
ret == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
167 ((void *)0)
ret == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
168 )-
169 goto
never executed: goto merr;
merr;
never executed: goto merr;
0
170-
171 ret->algorithm = OBJ_nid2obj(161);-
172-
173-
174-
175 if (ASN1_TYPE_pack_sequence((&(PBE2PARAM_it)), pbe2,
ASN1_TYPE_pack...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
176 &ret->parameter) ==
ASN1_TYPE_pack...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
177 ((void *)0)
ASN1_TYPE_pack...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
178 )-
179 goto
never executed: goto merr;
merr;
never executed: goto merr;
0
180-
181 PBE2PARAM_free(pbe2);-
182 pbe2 = -
183 ((void *)0)-
184 ;-
185-
186 return
never executed: return ret;
ret;
never executed: return ret;
0
187-
188 merr:-
189 ERR_put_error(13,(231),((1|64)),__FILE__,138);-
190-
191 err:
code before this statement never executed: err:
0
192 PBE2PARAM_free(pbe2);-
193 X509_ALGOR_free(ret);-
194 EVP_CIPHER_CTX_free(ctx);-
195-
196 return
never executed: return ((void *)0) ;
never executed: return ((void *)0) ;
0
197 ((void *)0)
never executed: return ((void *)0) ;
0
198 ;
never executed: return ((void *)0) ;
0
199}-
200-
201static X509_ALGOR *pkcs5_scrypt_set(const unsigned char *salt, size_t saltlen,-
202 size_t keylen, uint64_t N, uint64_t r,-
203 uint64_t p)-
204{-
205 X509_ALGOR *keyfunc = -
206 ((void *)0)-
207 ;-
208 SCRYPT_PARAMS *sparam = SCRYPT_PARAMS_new();-
209-
210 if (sparam ==
sparam == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
211 ((void *)0)
sparam == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
212 )-
213 goto
never executed: goto merr;
merr;
never executed: goto merr;
0
214-
215 if (!saltlen
!saltlenDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
216 saltlen = 8;
never executed: saltlen = 8;
0
217-
218-
219 if (ASN1_STRING_set(sparam->salt, salt, saltlen) == 0
ASN1_STRING_se... saltlen) == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
220 goto
never executed: goto merr;
merr;
never executed: goto merr;
0
221-
222 if (salt ==
salt == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
223 ((void *)0)
salt == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
224 && RAND_bytes(sparam->salt->data, saltlen) <= 0
RAND_bytes(spa... saltlen) <= 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
225 goto
never executed: goto err;
err;
never executed: goto err;
0
226-
227 if (ASN1_INTEGER_set_uint64(sparam->costParameter, N) == 0
ASN1_INTEGER_s...meter, N) == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
228 goto
never executed: goto merr;
merr;
never executed: goto merr;
0
229-
230 if (ASN1_INTEGER_set_uint64(sparam->blockSize, r) == 0
ASN1_INTEGER_s...kSize, r) == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
231 goto
never executed: goto merr;
merr;
never executed: goto merr;
0
232-
233 if (ASN1_INTEGER_set_uint64(sparam->parallelizationParameter, p) == 0
ASN1_INTEGER_s...meter, p) == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
234 goto
never executed: goto merr;
merr;
never executed: goto merr;
0
235-
236-
237-
238 if (keylen > 0
keylen > 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
239 sparam->keyLength = ASN1_INTEGER_new();-
240 if (sparam->keyLength ==
sparam->keyLen...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
241 ((void *)0)
sparam->keyLen...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
242 )-
243 goto
never executed: goto merr;
merr;
never executed: goto merr;
0
244 if (ASN1_INTEGER_set_int64(sparam->keyLength, keylen) == 0
ASN1_INTEGER_s..., keylen) == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
245 goto
never executed: goto merr;
merr;
never executed: goto merr;
0
246 }
never executed: end of block
0
247-
248-
249-
250 keyfunc = X509_ALGOR_new();-
251 if (keyfunc ==
keyfunc == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
252 ((void *)0)
keyfunc == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
253 )-
254 goto
never executed: goto merr;
merr;
never executed: goto merr;
0
255-
256 keyfunc->algorithm = OBJ_nid2obj(973);-
257-
258-
259-
260 if (ASN1_TYPE_pack_sequence((&(SCRYPT_PARAMS_it)), sparam,
ASN1_TYPE_pack...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
261 &keyfunc->parameter) ==
ASN1_TYPE_pack...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
262 ((void *)0)
ASN1_TYPE_pack...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
263 )-
264 goto
never executed: goto merr;
merr;
never executed: goto merr;
0
265-
266 SCRYPT_PARAMS_free(sparam);-
267 return
never executed: return keyfunc;
keyfunc;
never executed: return keyfunc;
0
268-
269 merr:-
270 ERR_put_error(13,(232),((1|64)),__FILE__,205);-
271 err:
code before this statement never executed: err:
0
272 SCRYPT_PARAMS_free(sparam);-
273 X509_ALGOR_free(keyfunc);-
274 return
never executed: return ((void *)0) ;
never executed: return ((void *)0) ;
0
275 ((void *)0)
never executed: return ((void *)0) ;
0
276 ;
never executed: return ((void *)0) ;
0
277}-
278-
279int PKCS5_v2_scrypt_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass,-
280 int passlen, ASN1_TYPE *param,-
281 const EVP_CIPHER *c, const EVP_MD *md, int en_de)-
282{-
283 unsigned char *salt, key[64];-
284 uint64_t p, r, N;-
285 size_t saltlen;-
286 size_t keylen = 0;-
287 int rv = 0;-
288 SCRYPT_PARAMS *sparam = -
289 ((void *)0)-
290 ;-
291-
292 if (EVP_CIPHER_CTX_cipher(ctx) ==
EVP_CIPHER_CTX...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
293 ((void *)0)
EVP_CIPHER_CTX...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
294 ) {-
295 ERR_put_error(6,(180),(131),__FILE__,224);-
296 goto
never executed: goto err;
err;
never executed: goto err;
0
297 }-
298-
299-
300-
301 sparam = ASN1_TYPE_unpack_sequence((&(SCRYPT_PARAMS_it)), param);-
302-
303 if (sparam ==
sparam == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
304 ((void *)0)
sparam == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
305 ) {-
306 ERR_put_error(6,(180),(114),__FILE__,233);-
307 goto
never executed: goto err;
err;
never executed: goto err;
0
308 }-
309-
310 keylen = EVP_CIPHER_CTX_key_length(ctx);-
311-
312-
313-
314 if (sparam->keyLength
sparam->keyLengthDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
315 uint64_t spkeylen;-
316 if ((
(ASN1_INTEGER_...yLength) == 0)Description
TRUEnever evaluated
FALSEnever evaluated
ASN1_INTEGER_get_uint64(&spkeylen, sparam->keyLength) == 0)
(ASN1_INTEGER_...yLength) == 0)Description
TRUEnever evaluated
FALSEnever evaluated
0
317 || (
(spkeylen != keylen)Description
TRUEnever evaluated
FALSEnever evaluated
spkeylen != keylen)
(spkeylen != keylen)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
318 ERR_put_error(6,(180),(123),__FILE__,246)-
319 ;-
320 goto
never executed: goto err;
err;
never executed: goto err;
0
321 }-
322 }
never executed: end of block
0
323-
324 if (ASN1_INTEGER_get_uint64(&N, sparam->costParameter) == 0
ASN1_INTEGER_g...arameter) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
325 || ASN1_INTEGER_get_uint64(&r, sparam->blockSize) == 0
ASN1_INTEGER_g...lockSize) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
326 || ASN1_INTEGER_get_uint64(&p, sparam->parallelizationParameter) == 0
ASN1_INTEGER_g...arameter) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
327 || EVP_PBE_scrypt(
EVP_PBE_scrypt...*)0) , 0) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
328 ((void *)0)
EVP_PBE_scrypt...*)0) , 0) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
329 , 0,
EVP_PBE_scrypt...*)0) , 0) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
330 ((void *)0)
EVP_PBE_scrypt...*)0) , 0) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
331 , 0, N, r, p, 0,
EVP_PBE_scrypt...*)0) , 0) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
332 ((void *)0)
EVP_PBE_scrypt...*)0) , 0) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
333 , 0) == 0
EVP_PBE_scrypt...*)0) , 0) == 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
334 ERR_put_error(6,(180),(171),__FILE__,256)-
335 ;-
336 goto
never executed: goto err;
err;
never executed: goto err;
0
337 }-
338-
339-
340-
341 salt = sparam->salt->data;-
342 saltlen = sparam->salt->length;-
343 if (EVP_PBE_scrypt(pass, passlen, salt, saltlen, N, r, p, 0, key, keylen)
EVP_PBE_scrypt..., keylen) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
344 == 0
EVP_PBE_scrypt..., keylen) == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
345 goto
never executed: goto err;
err;
never executed: goto err;
0
346 rv = EVP_CipherInit_ex(ctx, -
347 ((void *)0)-
348 , -
349 ((void *)0)-
350 , key, -
351 ((void *)0)-
352 , en_de);-
353 err:
code before this statement never executed: err:
0
354 if (keylen
keylenDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
355 OPENSSL_cleanse(key, keylen);
never executed: OPENSSL_cleanse(key, keylen);
0
356 SCRYPT_PARAMS_free(sparam);-
357 return
never executed: return rv;
rv;
never executed: return rv;
0
358}-
Switch to Source codePreprocessed file

Generated by Squish Coco 4.2.2