OpenCoverage

p12_mutl.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/openssl/src/crypto/pkcs12/p12_mutl.c
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3int PKCS12_mac_present(const PKCS12 *p12)-
4{-
5 return
never executed: return p12->mac ? 1 : 0;
p12->mac
p12->macDescription
TRUEnever evaluated
FALSEnever evaluated
? 1 : 0;
never executed: return p12->mac ? 1 : 0;
0
6}-
7-
8void PKCS12_get0_mac(const ASN1_OCTET_STRING **pmac,-
9 const X509_ALGOR **pmacalg,-
10 const ASN1_OCTET_STRING **psalt,-
11 const ASN1_INTEGER **piter,-
12 const PKCS12 *p12)-
13{-
14 if (p12->mac
p12->macDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
15 X509_SIG_get0(p12->mac->dinfo, pmacalg, pmac);-
16 if (psalt
psaltDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
17 *
never executed: *psalt = p12->mac->salt;
psalt = p12->mac->salt;
never executed: *psalt = p12->mac->salt;
0
18 if (piter
piterDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
19 *
never executed: *piter = p12->mac->iter;
piter = p12->mac->iter;
never executed: *piter = p12->mac->iter;
0
20 }
never executed: end of block
else {
0
21 if (pmac
pmacDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
22 *
never executed: *pmac = ((void *)0) ;
pmac =
never executed: *pmac = ((void *)0) ;
0
23 ((void *)0)
never executed: *pmac = ((void *)0) ;
0
24 ;
never executed: *pmac = ((void *)0) ;
0
25 if (pmacalg
pmacalgDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
26 *
never executed: *pmacalg = ((void *)0) ;
pmacalg =
never executed: *pmacalg = ((void *)0) ;
0
27 ((void *)0)
never executed: *pmacalg = ((void *)0) ;
0
28 ;
never executed: *pmacalg = ((void *)0) ;
0
29 if (psalt
psaltDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
30 *
never executed: *psalt = ((void *)0) ;
psalt =
never executed: *psalt = ((void *)0) ;
0
31 ((void *)0)
never executed: *psalt = ((void *)0) ;
0
32 ;
never executed: *psalt = ((void *)0) ;
0
33 if (piter
piterDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
34 *
never executed: *piter = ((void *)0) ;
piter =
never executed: *piter = ((void *)0) ;
0
35 ((void *)0)
never executed: *piter = ((void *)0) ;
0
36 ;
never executed: *piter = ((void *)0) ;
0
37 }
never executed: end of block
0
38}-
39-
40-
41-
42static int pkcs12_gen_gost_mac_key(const char *pass, int passlen,-
43 const unsigned char *salt, int saltlen,-
44 int iter, int keylen, unsigned char *key,-
45 const EVP_MD *digest)-
46{-
47 unsigned char out[96];-
48-
49 if (keylen != 32
keylen != 32Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
50 return
never executed: return 0;
0;
never executed: return 0;
0
51 }-
52-
53 if (!PKCS5_PBKDF2_HMAC(pass, passlen, salt, saltlen, iter,
!PKCS5_PBKDF2_...eof(out), out)Description
TRUEnever evaluated
FALSEnever evaluated
0
54 digest, sizeof(out), out)
!PKCS5_PBKDF2_...eof(out), out)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
55 return
never executed: return 0;
0;
never executed: return 0;
0
56 }-
57 memcpy(key, out + sizeof(out) - 32, 32);-
58 OPENSSL_cleanse(out, sizeof(out));-
59 return
never executed: return 1;
1;
never executed: return 1;
0
60}-
61-
62-
63static int pkcs12_gen_mac(PKCS12 *p12, const char *pass, int passlen,-
64 unsigned char *mac, unsigned int *maclen,-
65 int (*pkcs12_key_gen)(const char *pass, int passlen,-
66 unsigned char *salt, int slen,-
67 int id, int iter, int n,-
68 unsigned char *out,-
69 const EVP_MD *md_type))-
70{-
71 int ret = 0;-
72 const EVP_MD *md_type;-
73 HMAC_CTX *hmac = -
74 ((void *)0)-
75 ;-
76 unsigned char key[64], *salt;-
77 int saltlen, iter;-
78 int md_size = 0;-
79 int md_type_nid;-
80 const X509_ALGOR *macalg;-
81 const ASN1_OBJECT *macoid;-
82-
83 if (pkcs12_key_gen ==
pkcs12_key_gen == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-1
84 ((void *)0)
pkcs12_key_gen == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-1
85 )-
86 pkcs12_key_gen = PKCS12_key_gen_utf8;
never executed: pkcs12_key_gen = PKCS12_key_gen_utf8;
0
87-
88 if (!(OBJ_obj2nid((p12->authsafes)->type) == 21)
!(OBJ_obj2nid(...->type) == 21)Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
) {
0-1
89 ERR_put_error(35,(107),(121),__FILE__,92);-
90 return
never executed: return 0;
0;
never executed: return 0;
0
91 }-
92-
93 salt = p12->mac->salt->data;-
94 saltlen = p12->mac->salt->length;-
95 if (!p12->mac->iter
!p12->mac->iterDescription
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
)
0-1
96 iter = 1;
never executed: iter = 1;
0
97 else-
98 iter = ASN1_INTEGER_get(p12->mac->iter);
executed 1 time by 1 test: iter = ASN1_INTEGER_get(p12->mac->iter);
Executed by:
  • libcrypto.so.1.1
1
99 X509_SIG_get0(p12->mac->dinfo, &macalg, -
100 ((void *)0)-
101 );-
102 X509_ALGOR_get0(&macoid, -
103 ((void *)0)-
104 , -
105 ((void *)0)-
106 , macalg);-
107 if ((
(md_type = EVP...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
md_type = EVP_get_digestbyname(OBJ_nid2sn(OBJ_obj2nid(macoid)))) ==
(md_type = EVP...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-1
108 ((void *)0)
(md_type = EVP...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-1
109 ) {-
110 ERR_put_error(35,(107),(118),__FILE__,105);-
111 return
never executed: return 0;
0;
never executed: return 0;
0
112 }-
113 md_size = EVP_MD_size(md_type);-
114 md_type_nid = EVP_MD_type(md_type);-
115 if (md_size < 0
md_size < 0Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
)
0-1
116 return
never executed: return 0;
0;
never executed: return 0;
0
117 if ((md_type_nid == 809
md_type_nid == 809Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-1
118 || md_type_nid == 982
md_type_nid == 982Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-1
119 || md_type_nid == 983
md_type_nid == 983Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
)
0-1
120 && !getenv("LEGACY_GOST_PKCS12")
!getenv("LEGACY_GOST_PKCS12")Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
121 md_size = 32;-
122 if (!pkcs12_gen_gost_mac_key(pass, passlen, salt, saltlen, iter,
!pkcs12_gen_go... key, md_type)Description
TRUEnever evaluated
FALSEnever evaluated
0
123 md_size, key, md_type)
!pkcs12_gen_go... key, md_type)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
124 ERR_put_error(35,(107),(107),__FILE__,119);-
125 goto
never executed: goto err;
err;
never executed: goto err;
0
126 }-
127 }
never executed: end of block
else
0
128 if (!(*pkcs12_key_gen)(pass, passlen, salt, saltlen, 3,
!(*pkcs12_key_... key, md_type)Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-1
129 iter, md_size, key, md_type)
!(*pkcs12_key_... key, md_type)Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
) {
0-1
130 ERR_put_error(35,(107),(107),__FILE__,125);-
131 goto
never executed: goto err;
err;
never executed: goto err;
0
132 }-
133 if ((
(hmac = HMAC_C...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
hmac = HMAC_CTX_new()) ==
(hmac = HMAC_C...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-1
134 ((void *)0)
(hmac = HMAC_C...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-1
135 -
136 || !HMAC_Init_ex(hmac, key, md_size, md_type,
!HMAC_Init_ex(... ((void *)0) )Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-1
137 ((void *)0)
!HMAC_Init_ex(... ((void *)0) )Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-1
138 )
!HMAC_Init_ex(... ((void *)0) )Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-1
139 || !HMAC_Update(hmac, p12->authsafes->d.data->data,
!HMAC_Update(h....data->length)Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-1
140 p12->authsafes->d.data->length)
!HMAC_Update(h....data->length)Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-1
141 || !HMAC_Final(hmac, mac, maclen)
!HMAC_Final(hmac, mac, maclen)Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
) {
0-1
142 goto
never executed: goto err;
err;
never executed: goto err;
0
143 }-
144 ret = 1;-
145-
146err:
code before this statement executed 1 time by 1 test: err:
Executed by:
  • libcrypto.so.1.1
1
147 OPENSSL_cleanse(key, sizeof(key));-
148 HMAC_CTX_free(hmac);-
149 return
executed 1 time by 1 test: return ret;
Executed by:
  • libcrypto.so.1.1
ret;
executed 1 time by 1 test: return ret;
Executed by:
  • libcrypto.so.1.1
1
150}-
151-
152int PKCS12_gen_mac(PKCS12 *p12, const char *pass, int passlen,-
153 unsigned char *mac, unsigned int *maclen)-
154{-
155 return
never executed: return pkcs12_gen_mac(p12, pass, passlen, mac, maclen, ((void *)0) );
pkcs12_gen_mac(p12, pass, passlen, mac, maclen,
never executed: return pkcs12_gen_mac(p12, pass, passlen, mac, maclen, ((void *)0) );
0
156 ((void *)0)
never executed: return pkcs12_gen_mac(p12, pass, passlen, mac, maclen, ((void *)0) );
0
157 );
never executed: return pkcs12_gen_mac(p12, pass, passlen, mac, maclen, ((void *)0) );
0
158}-
159-
160-
161int PKCS12_verify_mac(PKCS12 *p12, const char *pass, int passlen)-
162{-
163 unsigned char mac[64];-
164 unsigned int maclen;-
165 const ASN1_OCTET_STRING *macoct;-
166-
167 if (p12->mac ==
p12->mac == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-1
168 ((void *)0)
p12->mac == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-1
169 ) {-
170 ERR_put_error(35,(126),(108),__FILE__,157);-
171 return
never executed: return 0;
0;
never executed: return 0;
0
172 }-
173 if (!pkcs12_gen_mac(p12, pass, passlen, mac, &maclen,
!pkcs12_gen_ma..._key_gen_utf8)Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-1
174 PKCS12_key_gen_utf8)
!pkcs12_gen_ma..._key_gen_utf8)Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
) {
0-1
175 ERR_put_error(35,(126),(109),__FILE__,162);-
176 return
never executed: return 0;
0;
never executed: return 0;
0
177 }-
178 X509_SIG_get0(p12->mac->dinfo, -
179 ((void *)0)-
180 , &macoct);-
181 if ((
(maclen != (un...ength(macoct))Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
maclen != (unsigned int)ASN1_STRING_length(macoct))
(maclen != (un...ength(macoct))Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
0-1
182 || CRYPTO_memcmp(mac, ASN1_STRING_get0_data(macoct), maclen) != 0
CRYPTO_memcmp(..., maclen) != 0Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • libcrypto.so.1.1
)
0-1
183 return
never executed: return 0;
0;
never executed: return 0;
0
184-
185 return
executed 1 time by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
1;
executed 1 time by 1 test: return 1;
Executed by:
  • libcrypto.so.1.1
1
186}-
187-
188-
189-
190int PKCS12_set_mac(PKCS12 *p12, const char *pass, int passlen,-
191 unsigned char *salt, int saltlen, int iter,-
192 const EVP_MD *md_type)-
193{-
194 unsigned char mac[64];-
195 unsigned int maclen;-
196 ASN1_OCTET_STRING *macoct;-
197-
198 if (!md_type
!md_typeDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
199 md_type = EVP_sha1();
never executed: md_type = EVP_sha1();
0
200 if (PKCS12_setup_mac(p12, iter, salt, saltlen, md_type) == 0
PKCS12_setup_m... md_type) == 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
201 ERR_put_error(35,(123),(110),__FILE__,186);-
202 return
never executed: return 0;
0;
never executed: return 0;
0
203 }-
204-
205-
206-
207 if (!pkcs12_gen_mac(p12, pass, passlen, mac, &maclen,
!pkcs12_gen_ma..._key_gen_utf8)Description
TRUEnever evaluated
FALSEnever evaluated
0
208 PKCS12_key_gen_utf8)
!pkcs12_gen_ma..._key_gen_utf8)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
209 ERR_put_error(35,(123),(109),__FILE__,194);-
210 return
never executed: return 0;
0;
never executed: return 0;
0
211 }-
212 X509_SIG_getm(p12->mac->dinfo, -
213 ((void *)0)-
214 , &macoct);-
215 if (!ASN1_OCTET_STRING_set(macoct, mac, maclen)
!ASN1_OCTET_ST..., mac, maclen)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
216 ERR_put_error(35,(123),(111),__FILE__,199);-
217 return
never executed: return 0;
0;
never executed: return 0;
0
218 }-
219 return
never executed: return 1;
1;
never executed: return 1;
0
220}-
221-
222-
223int PKCS12_setup_mac(PKCS12 *p12, int iter, unsigned char *salt, int saltlen,-
224 const EVP_MD *md_type)-
225{-
226 X509_ALGOR *macalg;-
227-
228 PKCS12_MAC_DATA_free(p12->mac);-
229 p12->mac = -
230 ((void *)0)-
231 ;-
232-
233 if ((
(p12->mac = PK...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
p12->mac = PKCS12_MAC_DATA_new()) ==
(p12->mac = PK...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
234 ((void *)0)
(p12->mac = PK...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
235 )-
236 return
never executed: return 0;
0;
never executed: return 0;
0
237 if (iter > 1
iter > 1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
238 if ((
(p12->mac->ite...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
p12->mac->iter = ASN1_INTEGER_new()) ==
(p12->mac->ite...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
239 ((void *)0)
(p12->mac->ite...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
240 ) {-
241 ERR_put_error(35,(122),((1|64)),__FILE__,218);-
242 return
never executed: return 0;
0;
never executed: return 0;
0
243 }-
244 if (!ASN1_INTEGER_set(p12->mac->iter, iter)
!ASN1_INTEGER_...c->iter, iter)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
245 ERR_put_error(35,(122),((1|64)),__FILE__,222);-
246 return
never executed: return 0;
0;
never executed: return 0;
0
247 }-
248 }
never executed: end of block
0
249 if (!saltlen
!saltlenDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
250 saltlen = 8;
never executed: saltlen = 8;
0
251 if ((
(p12->mac->sal...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
p12->mac->salt->data = CRYPTO_malloc(saltlen, __FILE__, 228)) ==
(p12->mac->sal...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
252 ((void *)0)
(p12->mac->sal...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
253 ) {-
254 ERR_put_error(35,(122),((1|64)),__FILE__,229);-
255 return
never executed: return 0;
0;
never executed: return 0;
0
256 }-
257 p12->mac->salt->length = saltlen;-
258 if (!salt
!saltDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
259 if (RAND_bytes(p12->mac->salt->data, saltlen) <= 0
RAND_bytes(p12... saltlen) <= 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
260 return
never executed: return 0;
0;
never executed: return 0;
0
261 }
never executed: end of block
else
0
262 memcpy(p12->mac->salt->data, salt, saltlen);
never executed: memcpy(p12->mac->salt->data, salt, saltlen);
0
263 X509_SIG_getm(p12->mac->dinfo, &macalg, -
264 ((void *)0)-
265 );-
266 if (!X509_ALGOR_set0(macalg, OBJ_nid2obj(EVP_MD_type(md_type)),
!X509_ALGOR_se... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
267 5,
!X509_ALGOR_se... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
268 ((void *)0)
!X509_ALGOR_se... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
0
269 )
!X509_ALGOR_se... ((void *)0) )Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
270 ERR_put_error(35,(122),((1|64)),__FILE__,241);-
271 return
never executed: return 0;
0;
never executed: return 0;
0
272 }-
273-
274 return
never executed: return 1;
1;
never executed: return 1;
0
275}-
Switch to Source codePreprocessed file

Generated by Squish Coco 4.2.2