OpenCoverage

p12_npas.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/libressl/src/crypto/pkcs12/p12_npas.c
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3-
4static int newpass_p12(PKCS12 *p12, const char *oldpass, const char *newpass);-
5static int newpass_bags(struct stack_st_PKCS12_SAFEBAG *bags, const char *oldpass,-
6 const char *newpass);-
7static int newpass_bag(PKCS12_SAFEBAG *bag, const char *oldpass,-
8 const char *newpass);-
9static int alg_get(X509_ALGOR *alg, int *pnid, int *piter, int *psaltlen);-
10-
11-
12-
13-
14-
15int-
16PKCS12_newpass(PKCS12 *p12, const char *oldpass, const char *newpass)-
17{-
18-
19-
20 if (!p12
!p12Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
21 ERR_put_error(35,(0xfff),(105),__FILE__,85);-
22 return
never executed: return 0;
0;
never executed: return 0;
0
23 }-
24-
25-
26-
27 if (!PKCS12_verify_mac(p12, oldpass, -1)
!PKCS12_verify..., oldpass, -1)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
28 ERR_put_error(35,(0xfff),(113),__FILE__,92);-
29 return
never executed: return 0;
0;
never executed: return 0;
0
30 }-
31-
32 if (!newpass_p12(p12, oldpass, newpass)
!newpass_p12(p...pass, newpass)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
33 ERR_put_error(35,(0xfff),(114),__FILE__,97);-
34 return
never executed: return 0;
0;
never executed: return 0;
0
35 }-
36-
37 return
never executed: return 1;
1;
never executed: return 1;
0
38}-
39-
40-
41-
42static int-
43newpass_p12(PKCS12 *p12, const char *oldpass, const char *newpass)-
44{-
45 struct stack_st_PKCS7 *asafes, *newsafes;-
46 struct stack_st_PKCS12_SAFEBAG *bags;-
47 int i, bagnid, pbe_nid = 0, pbe_iter = 0, pbe_saltlen = 0;-
48 PKCS7 *p7, *p7new;-
49 ASN1_OCTET_STRING *p12_data_tmp = -
50 ((void *)0)-
51 , *macnew = -
52 ((void *)0)-
53 ;-
54 unsigned char mac[64];-
55 unsigned int maclen;-
56-
57 if (!(asafes = PKCS12_unpack_authsafes(p12))
!(asafes = PKC...uthsafes(p12))Description
TRUEnever evaluated
FALSEnever evaluated
)
0
58 return
never executed: return 0;
0;
never executed: return 0;
0
59 if (!(newsafes = ((struct stack_st_PKCS7 *)sk_new_null()))
!(newsafes = (...k_new_null()))Description
TRUEnever evaluated
FALSEnever evaluated
)
0
60 return
never executed: return 0;
0;
never executed: return 0;
0
61 for (i = 0; i < sk_num(((_STACK*) (1 ? (asafes) : (struct stack_st_PKCS7*)0)))
i < sk_num(((_...st_PKCS7*)0)))Description
TRUEnever evaluated
FALSEnever evaluated
; i++) {
0
62 p7 = ((PKCS7 *)sk_value(((_STACK*) (1 ? (asafes) : (struct stack_st_PKCS7*)0)), (i)));-
63 bagnid = OBJ_obj2nid(p7->type);-
64 if (bagnid == 21
bagnid == 21Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
65 bags = PKCS12_unpack_p7data(p7);-
66 }
never executed: end of block
else if (bagnid == 26
bagnid == 26Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
67 bags = PKCS12_unpack_p7encdata(p7, oldpass, -1);-
68 if (!alg_get(p7->d.encrypted->enc_data->algorithm,
!alg_get(p7->d... &pbe_saltlen)Description
TRUEnever evaluated
FALSEnever evaluated
0
69 &pbe_nid, &pbe_iter, &pbe_saltlen)
!alg_get(p7->d... &pbe_saltlen)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
70 sk_pop_free(((_STACK*) (1 ? (bags) : (struct stack_st_PKCS12_SAFEBAG*)0)), ((void (*)(void *)) ((1 ? (PKCS12_SAFEBAG_free) : (void (*)(PKCS12_SAFEBAG *))0))))-
71 ;-
72 bags = -
73 ((void *)0)-
74 ;-
75 }
never executed: end of block
0
76 }
never executed: end of block
else
0
77 continue;
never executed: continue;
0
78 if (bags ==
bags == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
79 ((void *)0)
bags == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
80 )-
81 goto
never executed: goto err;
err;
never executed: goto err;
0
82 if (!newpass_bags(bags, oldpass, newpass)
!newpass_bags(...pass, newpass)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
83 sk_pop_free(((_STACK*) (1 ? (bags) : (struct stack_st_PKCS12_SAFEBAG*)0)), ((void (*)(void *)) ((1 ? (PKCS12_SAFEBAG_free) : (void (*)(PKCS12_SAFEBAG *))0))));-
84 goto
never executed: goto err;
err;
never executed: goto err;
0
85 }-
86-
87 if (bagnid == 21
bagnid == 21Description
TRUEnever evaluated
FALSEnever evaluated
)
0
88 p7new = PKCS12_pack_p7data(bags);
never executed: p7new = PKCS12_pack_p7data(bags);
0
89 else-
90 p7new = PKCS12_pack_p7encdata(pbe_nid, newpass, -1,
never executed: p7new = PKCS12_pack_p7encdata(pbe_nid, newpass, -1, ((void *)0) , pbe_saltlen, pbe_iter, bags);
0
91
never executed: p7new = PKCS12_pack_p7encdata(pbe_nid, newpass, -1, ((void *)0) , pbe_saltlen, pbe_iter, bags);
0
92 ((void *)0)
never executed: p7new = PKCS12_pack_p7encdata(pbe_nid, newpass, -1, ((void *)0) , pbe_saltlen, pbe_iter, bags);
0
93 , pbe_saltlen, pbe_iter, bags);
never executed: p7new = PKCS12_pack_p7encdata(pbe_nid, newpass, -1, ((void *)0) , pbe_saltlen, pbe_iter, bags);
0
94 sk_pop_free(((_STACK*) (1 ? (bags) : (struct stack_st_PKCS12_SAFEBAG*)0)), ((void (*)(void *)) ((1 ? (PKCS12_SAFEBAG_free) : (void (*)(PKCS12_SAFEBAG *))0))));-
95 if (p7new ==
p7new == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
96 ((void *)0)
p7new == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
97 )-
98 goto
never executed: goto err;
err;
never executed: goto err;
0
99 if (sk_push(((_STACK*) (1 ? (newsafes) : (struct stack_st_PKCS7*)0)), ((void*) (1 ? (p7new) : (PKCS7*)0))) == 0
sk_push(((_STA...CS7*)0))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
100 goto
never executed: goto err;
err;
never executed: goto err;
0
101 }
never executed: end of block
0
102 sk_pop_free(((_STACK*) (1 ? (asafes) : (struct stack_st_PKCS7*)0)), ((void (*)(void *)) ((1 ? (PKCS7_free) : (void (*)(PKCS7 *))0))));-
103-
104-
105-
106 p12_data_tmp = p12->authsafes->d.data;-
107 if (!(p12->authsafes->d.data = ASN1_OCTET_STRING_new())
!(p12->authsaf..._STRING_new())Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
108 p12->authsafes->d.data = p12_data_tmp;-
109 goto
never executed: goto err;
err;
never executed: goto err;
0
110 }-
111 if (!PKCS12_pack_authsafes(p12, newsafes)
!PKCS12_pack_a...p12, newsafes)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
112 goto
never executed: goto saferr;
saferr;
never executed: goto saferr;
0
113-
114 if (!PKCS12_gen_mac(p12, newpass, -1, mac, &maclen)
!PKCS12_gen_ma... mac, &maclen)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
115 goto
never executed: goto saferr;
saferr;
never executed: goto saferr;
0
116 if (!(macnew = ASN1_OCTET_STRING_new())
!(macnew = ASN..._STRING_new())Description
TRUEnever evaluated
FALSEnever evaluated
)
0
117 goto
never executed: goto saferr;
saferr;
never executed: goto saferr;
0
118 if (!ASN1_OCTET_STRING_set(macnew, mac, maclen)
!ASN1_OCTET_ST..., mac, maclen)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
119 goto
never executed: goto saferr;
saferr;
never executed: goto saferr;
0
120 ASN1_OCTET_STRING_free(p12->mac->dinfo->digest);-
121 p12->mac->dinfo->digest = macnew;-
122 ASN1_OCTET_STRING_free(p12_data_tmp);-
123-
124 return
never executed: return 1;
1;
never executed: return 1;
0
125-
126saferr:-
127-
128 ASN1_OCTET_STRING_free(p12->authsafes->d.data);-
129 ASN1_OCTET_STRING_free(macnew);-
130 p12->authsafes->d.data = p12_data_tmp;-
131 return
never executed: return 0;
0;
never executed: return 0;
0
132-
133err:-
134 sk_pop_free(((_STACK*) (1 ? (asafes) : (struct stack_st_PKCS7*)0)), ((void (*)(void *)) ((1 ? (PKCS7_free) : (void (*)(PKCS7 *))0))));-
135 sk_pop_free(((_STACK*) (1 ? (newsafes) : (struct stack_st_PKCS7*)0)), ((void (*)(void *)) ((1 ? (PKCS7_free) : (void (*)(PKCS7 *))0))));-
136 return
never executed: return 0;
0;
never executed: return 0;
0
137}-
138-
139-
140static int-
141newpass_bags(struct stack_st_PKCS12_SAFEBAG *bags, const char *oldpass,-
142 const char *newpass)-
143{-
144 int i;-
145-
146 for (i = 0; i < sk_num(((_STACK*) (1 ? (bags) : (struct stack_st_PKCS12_SAFEBAG*)0)))
i < sk_num(((_..._SAFEBAG*)0)))Description
TRUEnever evaluated
FALSEnever evaluated
; i++) {
0
147 if (!newpass_bag(((PKCS12_SAFEBAG *)sk_value(((_STACK*) (1 ? (bags) : (struct stack_st_PKCS12_SAFEBAG*)0)), (i))),
!newpass_bag((...pass, newpass)Description
TRUEnever evaluated
FALSEnever evaluated
0
148 oldpass, newpass)
!newpass_bag((...pass, newpass)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
149 return
never executed: return 0;
0;
never executed: return 0;
0
150 }
never executed: end of block
0
151 return
never executed: return 1;
1;
never executed: return 1;
0
152}-
153-
154-
155-
156static int-
157newpass_bag(PKCS12_SAFEBAG *bag, const char *oldpass, const char *newpass)-
158{-
159 PKCS8_PRIV_KEY_INFO *p8;-
160 X509_SIG *p8new;-
161 int p8_nid, p8_saltlen, p8_iter;-
162-
163 if (OBJ_obj2nid(bag->type) != 151
OBJ_obj2nid(bag->type) != 151Description
TRUEnever evaluated
FALSEnever evaluated
)
0
164 return
never executed: return 1;
1;
never executed: return 1;
0
165-
166 if (!(p8 = PKCS8_decrypt(bag->value.shkeybag, oldpass, -1))
!(p8 = PKCS8_d... oldpass, -1))Description
TRUEnever evaluated
FALSEnever evaluated
)
0
167 return
never executed: return 0;
0;
never executed: return 0;
0
168 if (!alg_get(bag->value.shkeybag->algor, &p8_nid, &p8_iter,
!alg_get(bag->..., &p8_saltlen)Description
TRUEnever evaluated
FALSEnever evaluated
0
169 &p8_saltlen)
!alg_get(bag->..., &p8_saltlen)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
170 return
never executed: return 0;
0;
never executed: return 0;
0
171 if (!(p8new = PKCS8_encrypt(p8_nid,
!(p8new = PKCS... p8_iter, p8))Description
TRUEnever evaluated
FALSEnever evaluated
0
172 ((void *)0)
!(p8new = PKCS... p8_iter, p8))Description
TRUEnever evaluated
FALSEnever evaluated
0
173 , newpass, -1,
!(p8new = PKCS... p8_iter, p8))Description
TRUEnever evaluated
FALSEnever evaluated
0
174 ((void *)0)
!(p8new = PKCS... p8_iter, p8))Description
TRUEnever evaluated
FALSEnever evaluated
0
175 , p8_saltlen,
!(p8new = PKCS... p8_iter, p8))Description
TRUEnever evaluated
FALSEnever evaluated
0
176 p8_iter, p8))
!(p8new = PKCS... p8_iter, p8))Description
TRUEnever evaluated
FALSEnever evaluated
) return
never executed: return 0;
0;
never executed: return 0;
0
177 X509_SIG_free(bag->value.shkeybag);-
178 bag->value.shkeybag = p8new;-
179 return
never executed: return 1;
1;
never executed: return 1;
0
180}-
181-
182static int-
183alg_get(X509_ALGOR *alg, int *pnid, int *piter, int *psaltlen)-
184{-
185 PBEPARAM *pbe;-
186 const unsigned char *p;-
187-
188 p = alg->parameter->value.sequence->data;-
189 pbe = d2i_PBEPARAM(-
190 ((void *)0)-
191 , &p, alg->parameter->value.sequence->length);-
192 if (!pbe
!pbeDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
193 return
never executed: return 0;
0;
never executed: return 0;
0
194 *pnid = OBJ_obj2nid(alg->algorithm);-
195 *piter = ASN1_INTEGER_get(pbe->iter);-
196 *psaltlen = pbe->salt->length;-
197 PBEPARAM_free(pbe);-
198 return
never executed: return 1;
1;
never executed: return 1;
0
199}-
Switch to Source codePreprocessed file

Generated by Squish Coco 4.2.2