OpenCoverage

p12_key.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/libressl/src/crypto/pkcs12/p12_key.c
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3-
4-
5-
6-
7-
8int-
9PKCS12_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
!passDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
18 unipass = -
19 ((void *)0)-
20 ;-
21 uniplen = 0;-
22 }
never executed: end of block
else if (!OPENSSL_asc2uni(pass, passlen, &unipass, &uniplen)
!OPENSSL_asc2u...ass, &uniplen)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
23 ERR_put_error(35,(0xfff),((1|64)),__FILE__,84);-
24 return
never executed: return 0;
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
ret <= 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
29 return
never executed: return 0;
0;
never executed: return 0;
0
30 freezero(unipass, uniplen);-
31 return
never executed: return ret;
ret;
never executed: return ret;
0
32}-
33-
34int-
35PKCS12_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
u < 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
49 return
never executed: return 0;
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
passlenDescription
TRUEnever evaluated
FALSEnever evaluated
)
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
!DDescription
TRUEnever evaluated
FALSEnever evaluated
|| !Ai
!AiDescription
TRUEnever evaluated
FALSEnever evaluated
|| !B
!BDescription
TRUEnever evaluated
FALSEnever evaluated
|| !I
!IDescription
TRUEnever evaluated
FALSEnever evaluated
|| !Ij
!IjDescription
TRUEnever evaluated
FALSEnever evaluated
|| !Bpl1
!Bpl1Description
TRUEnever evaluated
FALSEnever evaluated
)
0
65 goto
never executed: goto err;
err;
never executed: goto err;
0
66 for (i = 0; i < v
i < vDescription
TRUEnever evaluated
FALSEnever evaluated
; i++)
0
67 D[i] = id;
never executed: D[i] = id;
0
68 p = I;-
69 for (i = 0; i < Slen
i < SlenDescription
TRUEnever evaluated
FALSEnever evaluated
; i++)
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
i < PlenDescription
TRUEnever evaluated
FALSEnever evaluated
; i++)
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,
!EVP_DigestIni... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
75 ((void *)0)
!EVP_DigestIni... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
76 )
!EVP_DigestIni... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
||
0
77 !EVP_DigestUpdate(&ctx, D, v)
!EVP_DigestUpdate(&ctx, D, v)Description
TRUEnever evaluated
FALSEnever evaluated
||
0
78 !EVP_DigestUpdate(&ctx, I, Ilen)
!EVP_DigestUpd...&ctx, I, Ilen)Description
TRUEnever evaluated
FALSEnever evaluated
||
0
79 !EVP_DigestFinal_ex(&ctx, Ai,
!EVP_DigestFin... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
80 ((void *)0)
!EVP_DigestFin... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
81 )
!EVP_DigestFin... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
)
0
82 goto
never executed: goto err;
err;
never executed: goto err;
0
83 for (j = 1; j < iter
j < iterDescription
TRUEnever evaluated
FALSEnever evaluated
; j++) {
0
84 if (!EVP_DigestInit_ex(&ctx, md_type,
!EVP_DigestIni... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
85 ((void *)0)
!EVP_DigestIni... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
86 )
!EVP_DigestIni... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
||
0
87 !EVP_DigestUpdate(&ctx, Ai, u)
!EVP_DigestUpdate(&ctx, Ai, u)Description
TRUEnever evaluated
FALSEnever evaluated
||
0
88 !EVP_DigestFinal_ex(&ctx, Ai,
!EVP_DigestFin... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
89 ((void *)0)
!EVP_DigestFin... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
90 )
!EVP_DigestFin... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
)
0
91 goto
never executed: goto err;
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
u >= nDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
95 ret = 1;-
96 goto
never executed: goto end;
end;
never executed: goto end;
0
97 }-
98 n -= u;-
99 out += u;-
100 for (j = 0; j < v
j < vDescription
TRUEnever evaluated
FALSEnever evaluated
; j++)
0
101 B[j] = Ai[j % u];
never executed: B[j] = Ai[j % u];
0
102-
103 if (!BN_bin2bn (B, v, Bpl1)
!BN_bin2bn (B, v, Bpl1)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
104 goto
never executed: goto err;
err;
never executed: goto err;
0
105 if (!BN_add_word (Bpl1, 1)
!BN_add_word (Bpl1, 1)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
106 goto
never executed: goto err;
err;
never executed: goto err;
0
107 for (j = 0; j < Ilen
j < IlenDescription
TRUEnever evaluated
FALSEnever evaluated
; j += v) {
0
108 if (!BN_bin2bn(I + j, v, Ij)
!BN_bin2bn(I + j, v, Ij)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
109 goto
never executed: goto err;
err;
never executed: goto err;
0
110 if (!BN_add(Ij, Ij, Bpl1)
!BN_add(Ij, Ij, Bpl1)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
111 goto
never executed: goto err;
err;
never executed: goto err;
0
112 if (!BN_bn2bin(Ij, B)
!BN_bn2bin(Ij, B)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
113 goto
never executed: goto err;
err;
never executed: goto err;
0
114 Ijlen = ((BN_num_bits(Ij)+7)/8);-
115-
116 if (Ijlen > v
Ijlen > vDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
117 if (!BN_bn2bin (Ij, B)
!BN_bn2bin (Ij, B)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
118 goto
never executed: goto err;
err;
never executed: goto err;
0
119 memcpy (I + j, B + 1, v);-
120-
121-
122 }
never executed: end of block
else if (Ijlen < v
Ijlen < vDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
123 memset(I + j, 0, v - Ijlen);-
124 if (!BN_bn2bin(Ij, I + j + v - Ijlen)
!BN_bn2bin(Ij,...j + v - Ijlen)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
125 goto
never executed: goto err;
err;
never executed: goto err;
0
126-
127 }
never executed: end of block
else if (!BN_bn2bin (Ij, I + j)
!BN_bn2bin (Ij, I + j)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
128 goto
never executed: goto err;
err;
never executed: goto err;
0
129 }
never executed: end of block
0
130 }
never executed: end of block
0
131-
132err:
code before this statement never executed: err:
0
133 ERR_put_error(35,(0xfff),((1|64)),__FILE__,186);-
134-
135end:
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: return ret;
ret;
never executed: return ret;
0
144}-
Switch to Source codePreprocessed file

Generated by Squish Coco 4.2.2