Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/openssl/src/crypto/cms/cms_sd.c |
Switch to Source code | Preprocessed file |
Line | Source | Count | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | - | |||||||||||||||||||
2 | - | |||||||||||||||||||
3 | - | |||||||||||||||||||
4 | - | |||||||||||||||||||
5 | - | |||||||||||||||||||
6 | static CMS_SignedData *cms_get0_signed(CMS_ContentInfo *cms) | - | ||||||||||||||||||
7 | { | - | ||||||||||||||||||
8 | if (OBJ_obj2nid(cms->contentType) != 22
| 0-217 | ||||||||||||||||||
9 | ERR_put_error(46,(133),(108),__FILE__,26); | - | ||||||||||||||||||
10 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||
11 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||||||||
12 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||
13 | } | - | ||||||||||||||||||
14 | return executed 217 times by 1 test: cms->d.signedData;return cms->d.signedData; Executed by:
executed 217 times by 1 test: return cms->d.signedData; Executed by:
| 217 | ||||||||||||||||||
15 | } | - | ||||||||||||||||||
16 | - | |||||||||||||||||||
17 | static CMS_SignedData *cms_signed_data_init(CMS_ContentInfo *cms) | - | ||||||||||||||||||
18 | { | - | ||||||||||||||||||
19 | if (cms->d.other ==
| 29-61 | ||||||||||||||||||
20 | ((void *)0)
| 29-61 | ||||||||||||||||||
21 | ) { | - | ||||||||||||||||||
22 | cms->d.signedData = (CMS_SignedData *)ASN1_item_new((&(CMS_SignedData_it))); | - | ||||||||||||||||||
23 | if (!cms->d.signedData
| 0-29 | ||||||||||||||||||
24 | ERR_put_error(46,(149),((1|64)),__FILE__,37); | - | ||||||||||||||||||
25 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||
26 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||||||||
27 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||
28 | } | - | ||||||||||||||||||
29 | cms->d.signedData->version = 1; | - | ||||||||||||||||||
30 | cms->d.signedData->encapContentInfo->eContentType = | - | ||||||||||||||||||
31 | OBJ_nid2obj(21); | - | ||||||||||||||||||
32 | cms->d.signedData->encapContentInfo->partial = 1; | - | ||||||||||||||||||
33 | ASN1_OBJECT_free(cms->contentType); | - | ||||||||||||||||||
34 | cms->contentType = OBJ_nid2obj(22); | - | ||||||||||||||||||
35 | return executed 29 times by 1 test: cms->d.signedData;return cms->d.signedData; Executed by:
executed 29 times by 1 test: return cms->d.signedData; Executed by:
| 29 | ||||||||||||||||||
36 | } | - | ||||||||||||||||||
37 | return executed 61 times by 1 test: cms_get0_signed(cms);return cms_get0_signed(cms); Executed by:
executed 61 times by 1 test: return cms_get0_signed(cms); Executed by:
| 61 | ||||||||||||||||||
38 | } | - | ||||||||||||||||||
39 | - | |||||||||||||||||||
40 | - | |||||||||||||||||||
41 | - | |||||||||||||||||||
42 | int CMS_SignedData_init(CMS_ContentInfo *cms) | - | ||||||||||||||||||
43 | { | - | ||||||||||||||||||
44 | if (cms_signed_data_init(cms)
| 0-29 | ||||||||||||||||||
45 | return executed 29 times by 1 test: 1;return 1; Executed by:
executed 29 times by 1 test: return 1; Executed by:
| 29 | ||||||||||||||||||
46 | else | - | ||||||||||||||||||
47 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||
48 | } | - | ||||||||||||||||||
49 | - | |||||||||||||||||||
50 | - | |||||||||||||||||||
51 | - | |||||||||||||||||||
52 | static void cms_sd_set_version(CMS_SignedData *sd) | - | ||||||||||||||||||
53 | { | - | ||||||||||||||||||
54 | int i; | - | ||||||||||||||||||
55 | CMS_CertificateChoices *cch; | - | ||||||||||||||||||
56 | CMS_RevocationInfoChoice *rch; | - | ||||||||||||||||||
57 | CMS_SignerInfo *si; | - | ||||||||||||||||||
58 | - | |||||||||||||||||||
59 | for (i = 0; i < sk_CMS_CertificateChoices_num(sd->certificates)
| 29-63 | ||||||||||||||||||
60 | cch = sk_CMS_CertificateChoices_value(sd->certificates, i); | - | ||||||||||||||||||
61 | if (cch->type == 4
| 0-63 | ||||||||||||||||||
62 | if (sd->version < 5
| 0 | ||||||||||||||||||
63 | sd->version = 5; never executed: sd->version = 5; | 0 | ||||||||||||||||||
64 | } never executed: else if (cch->type == 3end of block
| 0-63 | ||||||||||||||||||
65 | if (sd->version < 4
| 0 | ||||||||||||||||||
66 | sd->version = 4; never executed: sd->version = 4; | 0 | ||||||||||||||||||
67 | } never executed: else if (cch->type == 2end of block
| 0-63 | ||||||||||||||||||
68 | if (sd->version < 3
| 0 | ||||||||||||||||||
69 | sd->version = 3; never executed: sd->version = 3; | 0 | ||||||||||||||||||
70 | } never executed: end of block | 0 | ||||||||||||||||||
71 | } executed 63 times by 1 test: end of block Executed by:
| 63 | ||||||||||||||||||
72 | - | |||||||||||||||||||
73 | for (i = 0; i < sk_CMS_RevocationInfoChoice_num(sd->crls)
| 0-29 | ||||||||||||||||||
74 | rch = sk_CMS_RevocationInfoChoice_value(sd->crls, i); | - | ||||||||||||||||||
75 | if (rch->type == 1
| 0 | ||||||||||||||||||
76 | if (sd->version < 5
| 0 | ||||||||||||||||||
77 | sd->version = 5; never executed: sd->version = 5; | 0 | ||||||||||||||||||
78 | } never executed: end of block | 0 | ||||||||||||||||||
79 | } never executed: end of block | 0 | ||||||||||||||||||
80 | - | |||||||||||||||||||
81 | if ((
| 1-28 | ||||||||||||||||||
82 | && (
| 0-1 | ||||||||||||||||||
83 | sd->version = 3; executed 1 time by 1 test: sd->version = 3; Executed by:
| 1 | ||||||||||||||||||
84 | - | |||||||||||||||||||
85 | for (i = 0; i < sk_CMS_SignerInfo_num(sd->signerInfos)
| 29-59 | ||||||||||||||||||
86 | si = sk_CMS_SignerInfo_value(sd->signerInfos, i); | - | ||||||||||||||||||
87 | if (si->sid->type == 1
| 4-55 | ||||||||||||||||||
88 | if (si->version < 3
| 0-4 | ||||||||||||||||||
89 | si->version = 3; never executed: si->version = 3; | 0 | ||||||||||||||||||
90 | if (sd->version < 3
| 0-4 | ||||||||||||||||||
91 | sd->version = 3; never executed: sd->version = 3; | 0 | ||||||||||||||||||
92 | } executed 4 times by 1 test: else if (si->version < 1end of block Executed by:
| 0-55 | ||||||||||||||||||
93 | si->version = 1; never executed: si->version = 1; | 0 | ||||||||||||||||||
94 | } executed 59 times by 1 test: end of block Executed by:
| 59 | ||||||||||||||||||
95 | - | |||||||||||||||||||
96 | if (sd->version < 1
| 0-29 | ||||||||||||||||||
97 | sd->version = 1; never executed: sd->version = 1; | 0 | ||||||||||||||||||
98 | - | |||||||||||||||||||
99 | } executed 29 times by 1 test: end of block Executed by:
| 29 | ||||||||||||||||||
100 | - | |||||||||||||||||||
101 | - | |||||||||||||||||||
102 | - | |||||||||||||||||||
103 | static int cms_copy_messageDigest(CMS_ContentInfo *cms, CMS_SignerInfo *si) | - | ||||||||||||||||||
104 | { | - | ||||||||||||||||||
105 | struct stack_st_CMS_SignerInfo *sinfos; | - | ||||||||||||||||||
106 | CMS_SignerInfo *sitmp; | - | ||||||||||||||||||
107 | int i; | - | ||||||||||||||||||
108 | sinfos = CMS_get0_SignerInfos(cms); | - | ||||||||||||||||||
109 | for (i = 0; i < sk_CMS_SignerInfo_num(sinfos)
| 0-2 | ||||||||||||||||||
110 | ASN1_OCTET_STRING *messageDigest; | - | ||||||||||||||||||
111 | sitmp = sk_CMS_SignerInfo_value(sinfos, i); | - | ||||||||||||||||||
112 | if (sitmp == si
| 0-2 | ||||||||||||||||||
113 | continue; never executed: continue; | 0 | ||||||||||||||||||
114 | if (CMS_signed_get_attr_count(sitmp) < 0
| 0-2 | ||||||||||||||||||
115 | continue; never executed: continue; | 0 | ||||||||||||||||||
116 | if (OBJ_cmp(si->digestAlgorithm->algorithm,
| 0-2 | ||||||||||||||||||
117 | sitmp->digestAlgorithm->algorithm)
| 0-2 | ||||||||||||||||||
118 | continue; never executed: continue; | 0 | ||||||||||||||||||
119 | messageDigest = CMS_signed_get0_data_by_OBJ(sitmp, | - | ||||||||||||||||||
120 | OBJ_nid2obj | - | ||||||||||||||||||
121 | (51), | - | ||||||||||||||||||
122 | -3, 4); | - | ||||||||||||||||||
123 | if (!messageDigest
| 0-2 | ||||||||||||||||||
124 | ERR_put_error(46,(108),(114),__FILE__,136) | - | ||||||||||||||||||
125 | ; | - | ||||||||||||||||||
126 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||
127 | } | - | ||||||||||||||||||
128 | - | |||||||||||||||||||
129 | if (CMS_signed_add1_attr_by_NID(si, 51,
| 0-2 | ||||||||||||||||||
130 | 4,
| 0-2 | ||||||||||||||||||
131 | messageDigest, -1)
| 0-2 | ||||||||||||||||||
132 | return executed 2 times by 1 test: 1;return 1; Executed by:
executed 2 times by 1 test: return 1; Executed by:
| 2 | ||||||||||||||||||
133 | else | - | ||||||||||||||||||
134 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||
135 | } | - | ||||||||||||||||||
136 | ERR_put_error(46,(108),(131),__FILE__,147); | - | ||||||||||||||||||
137 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||
138 | } | - | ||||||||||||||||||
139 | - | |||||||||||||||||||
140 | int cms_set1_SignerIdentifier(CMS_SignerIdentifier *sid, X509 *cert, int type) | - | ||||||||||||||||||
141 | { | - | ||||||||||||||||||
142 | switch (type) { | - | ||||||||||||||||||
143 | case executed 84 times by 1 test: 0:case 0: Executed by:
executed 84 times by 1 test: case 0: Executed by:
| 84 | ||||||||||||||||||
144 | if (!cms_set1_ias(&sid->d.issuerAndSerialNumber, cert)
| 0-84 | ||||||||||||||||||
145 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||
146 | break; executed 84 times by 1 test: break; Executed by:
| 84 | ||||||||||||||||||
147 | - | |||||||||||||||||||
148 | case executed 7 times by 1 test: 1:case 1: Executed by:
executed 7 times by 1 test: case 1: Executed by:
| 7 | ||||||||||||||||||
149 | if (!cms_set1_keyid(&sid->d.subjectKeyIdentifier, cert)
| 0-7 | ||||||||||||||||||
150 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||
151 | break; executed 7 times by 1 test: break; Executed by:
| 7 | ||||||||||||||||||
152 | - | |||||||||||||||||||
153 | default never executed: :default: never executed: default: | 0 | ||||||||||||||||||
154 | ERR_put_error(46,(146),(150),__FILE__,165); | - | ||||||||||||||||||
155 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||
156 | } | - | ||||||||||||||||||
157 | - | |||||||||||||||||||
158 | sid->type = type; | - | ||||||||||||||||||
159 | - | |||||||||||||||||||
160 | return executed 91 times by 1 test: 1;return 1; Executed by:
executed 91 times by 1 test: return 1; Executed by:
| 91 | ||||||||||||||||||
161 | } | - | ||||||||||||||||||
162 | - | |||||||||||||||||||
163 | int cms_SignerIdentifier_get0_signer_id(CMS_SignerIdentifier *sid, | - | ||||||||||||||||||
164 | ASN1_OCTET_STRING **keyid, | - | ||||||||||||||||||
165 | X509_NAME **issuer, | - | ||||||||||||||||||
166 | ASN1_INTEGER **sno) | - | ||||||||||||||||||
167 | { | - | ||||||||||||||||||
168 | if (sid->type == 0
| 0 | ||||||||||||||||||
169 | if (issuer
| 0 | ||||||||||||||||||
170 | * never executed: issuer = sid->d.issuerAndSerialNumber->issuer;*issuer = sid->d.issuerAndSerialNumber->issuer; never executed: *issuer = sid->d.issuerAndSerialNumber->issuer; | 0 | ||||||||||||||||||
171 | if (sno
| 0 | ||||||||||||||||||
172 | * never executed: sno = sid->d.issuerAndSerialNumber->serialNumber;*sno = sid->d.issuerAndSerialNumber->serialNumber; never executed: *sno = sid->d.issuerAndSerialNumber->serialNumber; | 0 | ||||||||||||||||||
173 | } never executed: else if (sid->type == 1end of block
| 0 | ||||||||||||||||||
174 | if (keyid
| 0 | ||||||||||||||||||
175 | * never executed: keyid = sid->d.subjectKeyIdentifier;*keyid = sid->d.subjectKeyIdentifier; never executed: *keyid = sid->d.subjectKeyIdentifier; | 0 | ||||||||||||||||||
176 | } never executed: elseend of block | 0 | ||||||||||||||||||
177 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||
178 | return never executed: 1;return 1; never executed: return 1; | 0 | ||||||||||||||||||
179 | } | - | ||||||||||||||||||
180 | - | |||||||||||||||||||
181 | int cms_SignerIdentifier_cert_cmp(CMS_SignerIdentifier *sid, X509 *cert) | - | ||||||||||||||||||
182 | { | - | ||||||||||||||||||
183 | if (sid->type == 0
| 12-130 | ||||||||||||||||||
184 | return executed 130 times by 1 test: cms_ias_cert_cmp(sid->d.issuerAndSerialNumber, cert);return cms_ias_cert_cmp(sid->d.issuerAndSerialNumber, cert); Executed by:
executed 130 times by 1 test: return cms_ias_cert_cmp(sid->d.issuerAndSerialNumber, cert); Executed by:
| 130 | ||||||||||||||||||
185 | else if (sid->type == 1
| 0-12 | ||||||||||||||||||
186 | return executed 12 times by 1 test: cms_keyid_cert_cmp(sid->d.subjectKeyIdentifier, cert);return cms_keyid_cert_cmp(sid->d.subjectKeyIdentifier, cert); Executed by:
executed 12 times by 1 test: return cms_keyid_cert_cmp(sid->d.subjectKeyIdentifier, cert); Executed by:
| 12 | ||||||||||||||||||
187 | else | - | ||||||||||||||||||
188 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||
189 | } | - | ||||||||||||||||||
190 | - | |||||||||||||||||||
191 | static int cms_sd_asn1_ctrl(CMS_SignerInfo *si, int cmd) | - | ||||||||||||||||||
192 | { | - | ||||||||||||||||||
193 | EVP_PKEY *pkey = si->pkey; | - | ||||||||||||||||||
194 | int i; | - | ||||||||||||||||||
195 | if (!pkey->ameth
| 0-124 | ||||||||||||||||||
196 | return never executed: 1;return 1; never executed: return 1; | 0 | ||||||||||||||||||
197 | i = pkey->ameth->pkey_ctrl(pkey, 0x5, cmd, si); | - | ||||||||||||||||||
198 | if (i == -2
| 0-124 | ||||||||||||||||||
199 | ERR_put_error(46,(170),(125),__FILE__,210); | - | ||||||||||||||||||
200 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||
201 | } | - | ||||||||||||||||||
202 | if (i <= 0
| 0-124 | ||||||||||||||||||
203 | ERR_put_error(46,(170),(111),__FILE__,214); | - | ||||||||||||||||||
204 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||
205 | } | - | ||||||||||||||||||
206 | return executed 124 times by 1 test: 1;return 1; Executed by:
executed 124 times by 1 test: return 1; Executed by:
| 124 | ||||||||||||||||||
207 | } | - | ||||||||||||||||||
208 | - | |||||||||||||||||||
209 | CMS_SignerInfo *CMS_add1_signer(CMS_ContentInfo *cms, | - | ||||||||||||||||||
210 | X509 *signer, EVP_PKEY *pk, const EVP_MD *md, | - | ||||||||||||||||||
211 | unsigned int flags) | - | ||||||||||||||||||
212 | { | - | ||||||||||||||||||
213 | CMS_SignedData *sd; | - | ||||||||||||||||||
214 | CMS_SignerInfo *si = | - | ||||||||||||||||||
215 | ((void *)0) | - | ||||||||||||||||||
216 | ; | - | ||||||||||||||||||
217 | X509_ALGOR *alg; | - | ||||||||||||||||||
218 | int i, type; | - | ||||||||||||||||||
219 | if (!X509_check_private_key(signer, pk)
| 0-61 | ||||||||||||||||||
220 | ERR_put_error(46,(102),(136),__FILE__,230) | - | ||||||||||||||||||
221 | ; | - | ||||||||||||||||||
222 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||
223 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||||||||
224 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||
225 | } | - | ||||||||||||||||||
226 | sd = cms_signed_data_init(cms); | - | ||||||||||||||||||
227 | if (!sd
| 0-61 | ||||||||||||||||||
228 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
229 | si = (CMS_SignerInfo *)ASN1_item_new((&(CMS_SignerInfo_it))); | - | ||||||||||||||||||
230 | if (!si
| 0-61 | ||||||||||||||||||
231 | goto never executed: merr;goto merr; never executed: goto merr; | 0 | ||||||||||||||||||
232 | - | |||||||||||||||||||
233 | X509_check_purpose(signer, -1, -1); | - | ||||||||||||||||||
234 | - | |||||||||||||||||||
235 | X509_up_ref(signer); | - | ||||||||||||||||||
236 | EVP_PKEY_up_ref(pk); | - | ||||||||||||||||||
237 | - | |||||||||||||||||||
238 | si->pkey = pk; | - | ||||||||||||||||||
239 | si->signer = signer; | - | ||||||||||||||||||
240 | si->mctx = EVP_MD_CTX_new(); | - | ||||||||||||||||||
241 | si->pctx = | - | ||||||||||||||||||
242 | ((void *)0) | - | ||||||||||||||||||
243 | ; | - | ||||||||||||||||||
244 | - | |||||||||||||||||||
245 | if (si->mctx ==
| 0-61 | ||||||||||||||||||
246 | ((void *)0)
| 0-61 | ||||||||||||||||||
247 | ) { | - | ||||||||||||||||||
248 | ERR_put_error(46,(102),((1|64)),__FILE__,251); | - | ||||||||||||||||||
249 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
250 | } | - | ||||||||||||||||||
251 | - | |||||||||||||||||||
252 | if (flags & 0x10000
| 4-57 | ||||||||||||||||||
253 | si->version = 3; | - | ||||||||||||||||||
254 | if (sd->version < 3
| 1-3 | ||||||||||||||||||
255 | sd->version = 3; executed 1 time by 1 test: sd->version = 3; Executed by:
| 1 | ||||||||||||||||||
256 | type = 1; | - | ||||||||||||||||||
257 | } executed 4 times by 1 test: else {end of block Executed by:
| 4 | ||||||||||||||||||
258 | type = 0; | - | ||||||||||||||||||
259 | si->version = 1; | - | ||||||||||||||||||
260 | } executed 57 times by 1 test: end of block Executed by:
| 57 | ||||||||||||||||||
261 | - | |||||||||||||||||||
262 | if (!cms_set1_SignerIdentifier(si->sid, signer, type)
| 0-61 | ||||||||||||||||||
263 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
264 | - | |||||||||||||||||||
265 | if (md ==
| 2-59 | ||||||||||||||||||
266 | ((void *)0)
| 2-59 | ||||||||||||||||||
267 | ) { | - | ||||||||||||||||||
268 | int def_nid; | - | ||||||||||||||||||
269 | if (EVP_PKEY_get_default_digest_nid(pk, &def_nid) <= 0
| 0-59 | ||||||||||||||||||
270 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
271 | md = EVP_get_digestbyname(OBJ_nid2sn(def_nid)); | - | ||||||||||||||||||
272 | if (md ==
| 0-59 | ||||||||||||||||||
273 | ((void *)0)
| 0-59 | ||||||||||||||||||
274 | ) { | - | ||||||||||||||||||
275 | ERR_put_error(46,(102),(128),__FILE__,274); | - | ||||||||||||||||||
276 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
277 | } | - | ||||||||||||||||||
278 | } executed 59 times by 1 test: end of block Executed by:
| 59 | ||||||||||||||||||
279 | - | |||||||||||||||||||
280 | if (!md
| 0-61 | ||||||||||||||||||
281 | ERR_put_error(46,(102),(129),__FILE__,280); | - | ||||||||||||||||||
282 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
283 | } | - | ||||||||||||||||||
284 | - | |||||||||||||||||||
285 | X509_ALGOR_set_md(si->digestAlgorithm, md); | - | ||||||||||||||||||
286 | - | |||||||||||||||||||
287 | - | |||||||||||||||||||
288 | for (i = 0; i < sk_X509_ALGOR_num(sd->digestAlgorithms)
| 29-32 | ||||||||||||||||||
289 | const ASN1_OBJECT *aoid; | - | ||||||||||||||||||
290 | alg = sk_X509_ALGOR_value(sd->digestAlgorithms, i); | - | ||||||||||||||||||
291 | X509_ALGOR_get0(&aoid, | - | ||||||||||||||||||
292 | ((void *)0) | - | ||||||||||||||||||
293 | , | - | ||||||||||||||||||
294 | ((void *)0) | - | ||||||||||||||||||
295 | , alg); | - | ||||||||||||||||||
296 | if (OBJ_obj2nid(aoid) == EVP_MD_type(md)
| 0-32 | ||||||||||||||||||
297 | break; executed 32 times by 1 test: break; Executed by:
| 32 | ||||||||||||||||||
298 | } never executed: end of block | 0 | ||||||||||||||||||
299 | - | |||||||||||||||||||
300 | if (i == sk_X509_ALGOR_num(sd->digestAlgorithms)
| 29-32 | ||||||||||||||||||
301 | alg = X509_ALGOR_new(); | - | ||||||||||||||||||
302 | if (alg ==
| 0-29 | ||||||||||||||||||
303 | ((void *)0)
| 0-29 | ||||||||||||||||||
304 | ) | - | ||||||||||||||||||
305 | goto never executed: merr;goto merr; never executed: goto merr; | 0 | ||||||||||||||||||
306 | X509_ALGOR_set_md(alg, md); | - | ||||||||||||||||||
307 | if (!sk_X509_ALGOR_push(sd->digestAlgorithms, alg)
| 0-29 | ||||||||||||||||||
308 | X509_ALGOR_free(alg); | - | ||||||||||||||||||
309 | goto never executed: merr;goto merr; never executed: goto merr; | 0 | ||||||||||||||||||
310 | } | - | ||||||||||||||||||
311 | } executed 29 times by 1 test: end of block Executed by:
| 29 | ||||||||||||||||||
312 | - | |||||||||||||||||||
313 | if (!(flags & 0x40000)
| 0-58 | ||||||||||||||||||
314 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
315 | if (!(flags & 0x100)
| 9-52 | ||||||||||||||||||
316 | - | |||||||||||||||||||
317 | - | |||||||||||||||||||
318 | - | |||||||||||||||||||
319 | - | |||||||||||||||||||
320 | if (!si->signedAttrs
| 0-52 | ||||||||||||||||||
321 | si->signedAttrs = sk_X509_ATTRIBUTE_new_null(); | - | ||||||||||||||||||
322 | if (!si->signedAttrs
| 0-52 | ||||||||||||||||||
323 | goto never executed: merr;goto merr; never executed: goto merr; | 0 | ||||||||||||||||||
324 | } executed 52 times by 1 test: end of block Executed by:
| 52 | ||||||||||||||||||
325 | - | |||||||||||||||||||
326 | if (!(flags & 0x200)
| 0-52 | ||||||||||||||||||
327 | struct stack_st_X509_ALGOR *smcap = | - | ||||||||||||||||||
328 | ((void *)0) | - | ||||||||||||||||||
329 | ; | - | ||||||||||||||||||
330 | i = CMS_add_standard_smimecap(&smcap); | - | ||||||||||||||||||
331 | if (i
| 0-52 | ||||||||||||||||||
332 | i = CMS_add_smimecap(si, smcap); executed 52 times by 1 test: i = CMS_add_smimecap(si, smcap); Executed by:
| 52 | ||||||||||||||||||
333 | sk_X509_ALGOR_pop_free(smcap, X509_ALGOR_free); | - | ||||||||||||||||||
334 | if (!i
| 0-52 | ||||||||||||||||||
335 | goto never executed: merr;goto merr; never executed: goto merr; | 0 | ||||||||||||||||||
336 | } executed 52 times by 1 test: end of block Executed by:
| 52 | ||||||||||||||||||
337 | if (flags & 0x8000
| 2-50 | ||||||||||||||||||
338 | if (!cms_copy_messageDigest(cms, si)
| 0-2 | ||||||||||||||||||
339 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
340 | if (!(flags & (0x4000 | 0x40000))
| 0-2 | ||||||||||||||||||
341 | !CMS_SignerInfo_sign(si)
| 0-2 | ||||||||||||||||||
342 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
343 | } executed 2 times by 1 test: end of block Executed by:
| 2 | ||||||||||||||||||
344 | } executed 52 times by 1 test: end of block Executed by:
| 52 | ||||||||||||||||||
345 | - | |||||||||||||||||||
346 | if (!(flags & 0x2)
| 0-61 | ||||||||||||||||||
347 | - | |||||||||||||||||||
348 | if (!CMS_add1_cert(cms, signer)
| 0-61 | ||||||||||||||||||
349 | goto never executed: merr;goto merr; never executed: goto merr; | 0 | ||||||||||||||||||
350 | } executed 61 times by 1 test: end of block Executed by:
| 61 | ||||||||||||||||||
351 | - | |||||||||||||||||||
352 | if (flags & 0x40000
| 3-58 | ||||||||||||||||||
353 | if (flags & 0x100
| 1-2 | ||||||||||||||||||
354 | si->pctx = EVP_PKEY_CTX_new(si->pkey, | - | ||||||||||||||||||
355 | ((void *)0) | - | ||||||||||||||||||
356 | ); | - | ||||||||||||||||||
357 | if (si->pctx ==
| 0-1 | ||||||||||||||||||
358 | ((void *)0)
| 0-1 | ||||||||||||||||||
359 | ) | - | ||||||||||||||||||
360 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
361 | if (EVP_PKEY_sign_init(si->pctx) <= 0
| 0-1 | ||||||||||||||||||
362 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
363 | if (EVP_PKEY_CTX_ctrl(si->pctx, -1, ((1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7)), 1, 0, (void *)(md)) <= 0
| 0-1 | ||||||||||||||||||
364 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
365 | } executed 1 time by 1 test: else if (EVP_DigestSignInit(si->mctx, &si->pctx, md, end of block Executed by:
| 0-2 | ||||||||||||||||||
366 | ((void *)0)
| 0-2 | ||||||||||||||||||
367 | , pk) <=
| 0-2 | ||||||||||||||||||
368 | 0
| 0-2 | ||||||||||||||||||
369 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
370 | } executed 3 times by 1 test: end of block Executed by:
| 3 | ||||||||||||||||||
371 | - | |||||||||||||||||||
372 | if (!sd->signerInfos
| 0-61 | ||||||||||||||||||
373 | sd->signerInfos = sk_CMS_SignerInfo_new_null(); never executed: sd->signerInfos = sk_CMS_SignerInfo_new_null(); | 0 | ||||||||||||||||||
374 | if (!sd->signerInfos
| 0-61 | ||||||||||||||||||
375 | goto never executed: merr;goto merr; never executed: goto merr; | 0 | ||||||||||||||||||
376 | - | |||||||||||||||||||
377 | return executed 61 times by 1 test: si;return si; Executed by:
executed 61 times by 1 test: return si; Executed by:
| 61 | ||||||||||||||||||
378 | - | |||||||||||||||||||
379 | merr: | - | ||||||||||||||||||
380 | ERR_put_error(46,(102),((1|64)),__FILE__,365); | - | ||||||||||||||||||
381 | err: code before this statement never executed: err: | 0 | ||||||||||||||||||
382 | ASN1_item_free(((void*) (1 ? si : (CMS_SignerInfo*)0)), (&(CMS_SignerInfo_it))); | - | ||||||||||||||||||
383 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||
384 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||||||||
385 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||
386 | - | |||||||||||||||||||
387 | } | - | ||||||||||||||||||
388 | - | |||||||||||||||||||
389 | static int cms_add1_signingTime(CMS_SignerInfo *si, ASN1_TIME *t) | - | ||||||||||||||||||
390 | { | - | ||||||||||||||||||
391 | ASN1_TIME *tt; | - | ||||||||||||||||||
392 | int r = 0; | - | ||||||||||||||||||
393 | if (t
| 0-52 | ||||||||||||||||||
394 | tt = t; never executed: tt = t; | 0 | ||||||||||||||||||
395 | else | - | ||||||||||||||||||
396 | tt = X509_gmtime_adj( executed 52 times by 1 test: tt = X509_gmtime_adj( ((void *)0) , 0); Executed by:
| 52 | ||||||||||||||||||
397 | ((void *)0) executed 52 times by 1 test: tt = X509_gmtime_adj( ((void *)0) , 0); Executed by:
| 52 | ||||||||||||||||||
398 | , 0); executed 52 times by 1 test: tt = X509_gmtime_adj( ((void *)0) , 0); Executed by:
| 52 | ||||||||||||||||||
399 | - | |||||||||||||||||||
400 | if (!tt
| 0-52 | ||||||||||||||||||
401 | goto never executed: merr;goto merr; never executed: goto merr; | 0 | ||||||||||||||||||
402 | - | |||||||||||||||||||
403 | if (CMS_signed_add1_attr_by_NID(si, 52,
| 0-52 | ||||||||||||||||||
404 | tt->type, tt, -1) <= 0
| 0-52 | ||||||||||||||||||
405 | goto never executed: merr;goto merr; never executed: goto merr; | 0 | ||||||||||||||||||
406 | - | |||||||||||||||||||
407 | r = 1; | - | ||||||||||||||||||
408 | - | |||||||||||||||||||
409 | merr: code before this statement executed 52 times by 1 test: merr: Executed by:
| 52 | ||||||||||||||||||
410 | - | |||||||||||||||||||
411 | if (!t
| 0-52 | ||||||||||||||||||
412 | ASN1_TIME_free(tt); executed 52 times by 1 test: ASN1_TIME_free(tt); Executed by:
| 52 | ||||||||||||||||||
413 | - | |||||||||||||||||||
414 | if (!r
| 0-52 | ||||||||||||||||||
415 | ERR_put_error(46,(103),((1|64)),__FILE__,396); never executed: ERR_put_error(46,(103),((1|64)),__FILE__,396); | 0 | ||||||||||||||||||
416 | - | |||||||||||||||||||
417 | return executed 52 times by 1 test: r;return r; Executed by:
executed 52 times by 1 test: return r; Executed by:
| 52 | ||||||||||||||||||
418 | - | |||||||||||||||||||
419 | } | - | ||||||||||||||||||
420 | - | |||||||||||||||||||
421 | EVP_PKEY_CTX *CMS_SignerInfo_get0_pkey_ctx(CMS_SignerInfo *si) | - | ||||||||||||||||||
422 | { | - | ||||||||||||||||||
423 | return executed 73 times by 1 test: si->pctx;return si->pctx; Executed by:
executed 73 times by 1 test: return si->pctx; Executed by:
| 73 | ||||||||||||||||||
424 | } | - | ||||||||||||||||||
425 | - | |||||||||||||||||||
426 | EVP_MD_CTX *CMS_SignerInfo_get0_md_ctx(CMS_SignerInfo *si) | - | ||||||||||||||||||
427 | { | - | ||||||||||||||||||
428 | return never executed: si->mctx;return si->mctx; never executed: return si->mctx; | 0 | ||||||||||||||||||
429 | } | - | ||||||||||||||||||
430 | - | |||||||||||||||||||
431 | struct stack_st_CMS_SignerInfo *CMS_get0_SignerInfos(CMS_ContentInfo *cms) | - | ||||||||||||||||||
432 | { | - | ||||||||||||||||||
433 | CMS_SignedData *sd; | - | ||||||||||||||||||
434 | sd = cms_get0_signed(cms); | - | ||||||||||||||||||
435 | if (!sd
| 0-65 | ||||||||||||||||||
436 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||
437 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||||||||
438 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||
439 | return executed 65 times by 1 test: sd->signerInfos;return sd->signerInfos; Executed by:
executed 65 times by 1 test: return sd->signerInfos; Executed by:
| 65 | ||||||||||||||||||
440 | } | - | ||||||||||||||||||
441 | - | |||||||||||||||||||
442 | struct stack_st_X509 *CMS_get0_signers(CMS_ContentInfo *cms) | - | ||||||||||||||||||
443 | { | - | ||||||||||||||||||
444 | struct stack_st_X509 *signers = | - | ||||||||||||||||||
445 | ((void *)0) | - | ||||||||||||||||||
446 | ; | - | ||||||||||||||||||
447 | struct stack_st_CMS_SignerInfo *sinfos; | - | ||||||||||||||||||
448 | CMS_SignerInfo *si; | - | ||||||||||||||||||
449 | int i; | - | ||||||||||||||||||
450 | sinfos = CMS_get0_SignerInfos(cms); | - | ||||||||||||||||||
451 | for (i = 0; i < sk_CMS_SignerInfo_num(sinfos)
| 0 | ||||||||||||||||||
452 | si = sk_CMS_SignerInfo_value(sinfos, i); | - | ||||||||||||||||||
453 | if (si->signer
| 0 | ||||||||||||||||||
454 | if (!signers
| 0 | ||||||||||||||||||
455 | signers = sk_X509_new_null(); | - | ||||||||||||||||||
456 | if (!signers
| 0 | ||||||||||||||||||
457 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||
458 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||||||||
459 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||
460 | } never executed: end of block | 0 | ||||||||||||||||||
461 | if (!sk_X509_push(signers, si->signer)
| 0 | ||||||||||||||||||
462 | sk_X509_free(signers); | - | ||||||||||||||||||
463 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||
464 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||||||||
465 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||
466 | } | - | ||||||||||||||||||
467 | } never executed: end of block | 0 | ||||||||||||||||||
468 | } never executed: end of block | 0 | ||||||||||||||||||
469 | return never executed: signers;return signers; never executed: return signers; | 0 | ||||||||||||||||||
470 | } | - | ||||||||||||||||||
471 | - | |||||||||||||||||||
472 | void CMS_SignerInfo_set1_signer_cert(CMS_SignerInfo *si, X509 *signer) | - | ||||||||||||||||||
473 | { | - | ||||||||||||||||||
474 | if (signer
| 0-63 | ||||||||||||||||||
475 | X509_up_ref(signer); | - | ||||||||||||||||||
476 | EVP_PKEY_free(si->pkey); | - | ||||||||||||||||||
477 | si->pkey = X509_get_pubkey(signer); | - | ||||||||||||||||||
478 | } executed 63 times by 1 test: end of block Executed by:
| 63 | ||||||||||||||||||
479 | X509_free(si->signer); | - | ||||||||||||||||||
480 | si->signer = signer; | - | ||||||||||||||||||
481 | } executed 63 times by 1 test: end of block Executed by:
| 63 | ||||||||||||||||||
482 | - | |||||||||||||||||||
483 | int CMS_SignerInfo_get0_signer_id(CMS_SignerInfo *si, | - | ||||||||||||||||||
484 | ASN1_OCTET_STRING **keyid, | - | ||||||||||||||||||
485 | X509_NAME **issuer, ASN1_INTEGER **sno) | - | ||||||||||||||||||
486 | { | - | ||||||||||||||||||
487 | return never executed: cms_SignerIdentifier_get0_signer_id(si->sid, keyid, issuer, sno);return cms_SignerIdentifier_get0_signer_id(si->sid, keyid, issuer, sno); never executed: return cms_SignerIdentifier_get0_signer_id(si->sid, keyid, issuer, sno); | 0 | ||||||||||||||||||
488 | } | - | ||||||||||||||||||
489 | - | |||||||||||||||||||
490 | int CMS_SignerInfo_cert_cmp(CMS_SignerInfo *si, X509 *cert) | - | ||||||||||||||||||
491 | { | - | ||||||||||||||||||
492 | return executed 127 times by 1 test: cms_SignerIdentifier_cert_cmp(si->sid, cert);return cms_SignerIdentifier_cert_cmp(si->sid, cert); Executed by:
executed 127 times by 1 test: return cms_SignerIdentifier_cert_cmp(si->sid, cert); Executed by:
| 127 | ||||||||||||||||||
493 | } | - | ||||||||||||||||||
494 | - | |||||||||||||||||||
495 | int CMS_set1_signers_certs(CMS_ContentInfo *cms, struct stack_st_X509 *scerts, | - | ||||||||||||||||||
496 | unsigned int flags) | - | ||||||||||||||||||
497 | { | - | ||||||||||||||||||
498 | CMS_SignedData *sd; | - | ||||||||||||||||||
499 | CMS_SignerInfo *si; | - | ||||||||||||||||||
500 | CMS_CertificateChoices *cch; | - | ||||||||||||||||||
501 | struct stack_st_CMS_CertificateChoices *certs; | - | ||||||||||||||||||
502 | X509 *x; | - | ||||||||||||||||||
503 | int i, j; | - | ||||||||||||||||||
504 | int ret = 0; | - | ||||||||||||||||||
505 | sd = cms_get0_signed(cms); | - | ||||||||||||||||||
506 | if (!sd
| 0-31 | ||||||||||||||||||
507 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||
508 | certs = sd->certificates; | - | ||||||||||||||||||
509 | for (i = 0; i < sk_CMS_SignerInfo_num(sd->signerInfos)
| 31-63 | ||||||||||||||||||
510 | si = sk_CMS_SignerInfo_value(sd->signerInfos, i); | - | ||||||||||||||||||
511 | if (si->signer
| 0-63 | ||||||||||||||||||
512 | continue; never executed: continue; | 0 | ||||||||||||||||||
513 | - | |||||||||||||||||||
514 | for (j = 0; j < sk_X509_num(scerts)
| 0-63 | ||||||||||||||||||
515 | x = sk_X509_value(scerts, j); | - | ||||||||||||||||||
516 | if (CMS_SignerInfo_cert_cmp(si, x) == 0
| 0 | ||||||||||||||||||
517 | CMS_SignerInfo_set1_signer_cert(si, x); | - | ||||||||||||||||||
518 | ret++; | - | ||||||||||||||||||
519 | break; never executed: break; | 0 | ||||||||||||||||||
520 | } | - | ||||||||||||||||||
521 | } never executed: end of block | 0 | ||||||||||||||||||
522 | - | |||||||||||||||||||
523 | if (si->signer
| 0-63 | ||||||||||||||||||
524 | continue; never executed: continue; | 0 | ||||||||||||||||||
525 | - | |||||||||||||||||||
526 | for (j = 0; j < sk_CMS_CertificateChoices_num(certs)
| 0-127 | ||||||||||||||||||
527 | cch = sk_CMS_CertificateChoices_value(certs, j); | - | ||||||||||||||||||
528 | if (cch->type != 0
| 0-127 | ||||||||||||||||||
529 | continue; never executed: continue; | 0 | ||||||||||||||||||
530 | x = cch->d.certificate; | - | ||||||||||||||||||
531 | if (CMS_SignerInfo_cert_cmp(si, x) == 0
| 63-64 | ||||||||||||||||||
532 | CMS_SignerInfo_set1_signer_cert(si, x); | - | ||||||||||||||||||
533 | ret++; | - | ||||||||||||||||||
534 | break; executed 63 times by 1 test: break; Executed by:
| 63 | ||||||||||||||||||
535 | } | - | ||||||||||||||||||
536 | } executed 64 times by 1 test: end of block Executed by:
| 64 | ||||||||||||||||||
537 | } executed 63 times by 1 test: end of block Executed by:
| 63 | ||||||||||||||||||
538 | return executed 31 times by 1 test: ret;return ret; Executed by:
executed 31 times by 1 test: return ret; Executed by:
| 31 | ||||||||||||||||||
539 | } | - | ||||||||||||||||||
540 | - | |||||||||||||||||||
541 | void CMS_SignerInfo_get0_algs(CMS_SignerInfo *si, EVP_PKEY **pk, | - | ||||||||||||||||||
542 | X509 **signer, X509_ALGOR **pdig, | - | ||||||||||||||||||
543 | X509_ALGOR **psig) | - | ||||||||||||||||||
544 | { | - | ||||||||||||||||||
545 | if (pk
| 0-222 | ||||||||||||||||||
546 | * never executed: pk = si->pkey;*pk = si->pkey; never executed: *pk = si->pkey; | 0 | ||||||||||||||||||
547 | if (signer
| 96-126 | ||||||||||||||||||
548 | * executed 126 times by 1 test: signer = si->signer;*signer = si->signer; Executed by:
executed 126 times by 1 test: *signer = si->signer; Executed by:
| 126 | ||||||||||||||||||
549 | if (pdig
| 26-196 | ||||||||||||||||||
550 | * executed 26 times by 1 test: pdig = si->digestAlgorithm;*pdig = si->digestAlgorithm; Executed by:
executed 26 times by 1 test: *pdig = si->digestAlgorithm; Executed by:
| 26 | ||||||||||||||||||
551 | if (psig
| 96-126 | ||||||||||||||||||
552 | * executed 96 times by 1 test: psig = si->signatureAlgorithm;*psig = si->signatureAlgorithm; Executed by:
executed 96 times by 1 test: *psig = si->signatureAlgorithm; Executed by:
| 96 | ||||||||||||||||||
553 | } executed 222 times by 1 test: end of block Executed by:
| 222 | ||||||||||||||||||
554 | - | |||||||||||||||||||
555 | ASN1_OCTET_STRING *CMS_SignerInfo_get0_signature(CMS_SignerInfo *si) | - | ||||||||||||||||||
556 | { | - | ||||||||||||||||||
557 | return never executed: si->signature;return si->signature; never executed: return si->signature; | 0 | ||||||||||||||||||
558 | } | - | ||||||||||||||||||
559 | - | |||||||||||||||||||
560 | static int cms_SignerInfo_content_sign(CMS_ContentInfo *cms, | - | ||||||||||||||||||
561 | CMS_SignerInfo *si, BIO *chain) | - | ||||||||||||||||||
562 | { | - | ||||||||||||||||||
563 | EVP_MD_CTX *mctx = EVP_MD_CTX_new(); | - | ||||||||||||||||||
564 | int r = 0; | - | ||||||||||||||||||
565 | EVP_PKEY_CTX *pctx = | - | ||||||||||||||||||
566 | ((void *)0) | - | ||||||||||||||||||
567 | ; | - | ||||||||||||||||||
568 | - | |||||||||||||||||||
569 | if (mctx ==
| 0-59 | ||||||||||||||||||
570 | ((void *)0)
| 0-59 | ||||||||||||||||||
571 | ) { | - | ||||||||||||||||||
572 | ERR_put_error(46,(150),((1|64)),__FILE__,541); | - | ||||||||||||||||||
573 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||
574 | } | - | ||||||||||||||||||
575 | - | |||||||||||||||||||
576 | if (!si->pkey
| 0-59 | ||||||||||||||||||
577 | ERR_put_error(46,(150),(133),__FILE__,546); | - | ||||||||||||||||||
578 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
579 | } | - | ||||||||||||||||||
580 | - | |||||||||||||||||||
581 | if (!cms_DigestAlgorithm_find_ctx(mctx, chain, si->digestAlgorithm)
| 0-59 | ||||||||||||||||||
582 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
583 | - | |||||||||||||||||||
584 | if (si->pctx
| 0-56 | ||||||||||||||||||
585 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
586 | - | |||||||||||||||||||
587 | - | |||||||||||||||||||
588 | - | |||||||||||||||||||
589 | - | |||||||||||||||||||
590 | - | |||||||||||||||||||
591 | if (CMS_signed_get_attr_count(si) >= 0
| 9-50 | ||||||||||||||||||
592 | ASN1_OBJECT *ctype = | - | ||||||||||||||||||
593 | cms->d.signedData->encapContentInfo->eContentType; | - | ||||||||||||||||||
594 | unsigned char md[64]; | - | ||||||||||||||||||
595 | unsigned int mdlen; | - | ||||||||||||||||||
596 | if (!EVP_DigestFinal_ex(mctx, md, &mdlen)
| 0-50 | ||||||||||||||||||
597 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
598 | if (!CMS_signed_add1_attr_by_NID(si, 51,
| 0-50 | ||||||||||||||||||
599 | 4, md, mdlen)
| 0-50 | ||||||||||||||||||
600 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
601 | - | |||||||||||||||||||
602 | if (CMS_signed_add1_attr_by_NID(si, 50,
| 0-50 | ||||||||||||||||||
603 | 6, ctype, -1) <= 0
| 0-50 | ||||||||||||||||||
604 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
605 | if (!CMS_SignerInfo_sign(si)
| 0-50 | ||||||||||||||||||
606 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
607 | } executed 50 times by 1 test: else if (si->pctxend of block Executed by:
| 1-50 | ||||||||||||||||||
608 | unsigned char *sig; | - | ||||||||||||||||||
609 | size_t siglen; | - | ||||||||||||||||||
610 | unsigned char md[64]; | - | ||||||||||||||||||
611 | unsigned int mdlen; | - | ||||||||||||||||||
612 | pctx = si->pctx; | - | ||||||||||||||||||
613 | if (!EVP_DigestFinal_ex(mctx, md, &mdlen)
| 0-1 | ||||||||||||||||||
614 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
615 | siglen = EVP_PKEY_size(si->pkey); | - | ||||||||||||||||||
616 | sig = CRYPTO_malloc(siglen, __FILE__, 585); | - | ||||||||||||||||||
617 | if (sig ==
| 0-1 | ||||||||||||||||||
618 | ((void *)0)
| 0-1 | ||||||||||||||||||
619 | ) { | - | ||||||||||||||||||
620 | ERR_put_error(46,(150),((1|64)),__FILE__,587); | - | ||||||||||||||||||
621 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
622 | } | - | ||||||||||||||||||
623 | if (EVP_PKEY_sign(pctx, sig, &siglen, md, mdlen) <= 0
| 0-1 | ||||||||||||||||||
624 | CRYPTO_free(sig, __FILE__, 591); | - | ||||||||||||||||||
625 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
626 | } | - | ||||||||||||||||||
627 | ASN1_STRING_set0(si->signature, sig, siglen); | - | ||||||||||||||||||
628 | } executed 1 time by 1 test: else {end of block Executed by:
| 1 | ||||||||||||||||||
629 | unsigned char *sig; | - | ||||||||||||||||||
630 | unsigned int siglen; | - | ||||||||||||||||||
631 | sig = CRYPTO_malloc(EVP_PKEY_size(si->pkey), __FILE__, 598); | - | ||||||||||||||||||
632 | if (sig ==
| 0-8 | ||||||||||||||||||
633 | ((void *)0)
| 0-8 | ||||||||||||||||||
634 | ) { | - | ||||||||||||||||||
635 | ERR_put_error(46,(150),((1|64)),__FILE__,600); | - | ||||||||||||||||||
636 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
637 | } | - | ||||||||||||||||||
638 | if (!EVP_SignFinal(mctx, sig, &siglen, si->pkey)
| 0-8 | ||||||||||||||||||
639 | ERR_put_error(46,(150),(139),__FILE__,604); | - | ||||||||||||||||||
640 | CRYPTO_free(sig, __FILE__, 605); | - | ||||||||||||||||||
641 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
642 | } | - | ||||||||||||||||||
643 | ASN1_STRING_set0(si->signature, sig, siglen); | - | ||||||||||||||||||
644 | } executed 8 times by 1 test: end of block Executed by:
| 8 | ||||||||||||||||||
645 | - | |||||||||||||||||||
646 | r = 1; | - | ||||||||||||||||||
647 | - | |||||||||||||||||||
648 | err: code before this statement executed 59 times by 1 test: err: Executed by:
| 59 | ||||||||||||||||||
649 | EVP_MD_CTX_free(mctx); | - | ||||||||||||||||||
650 | EVP_PKEY_CTX_free(pctx); | - | ||||||||||||||||||
651 | return executed 59 times by 1 test: r;return r; Executed by:
executed 59 times by 1 test: return r; Executed by:
| 59 | ||||||||||||||||||
652 | - | |||||||||||||||||||
653 | } | - | ||||||||||||||||||
654 | - | |||||||||||||||||||
655 | int cms_SignedData_final(CMS_ContentInfo *cms, BIO *chain) | - | ||||||||||||||||||
656 | { | - | ||||||||||||||||||
657 | struct stack_st_CMS_SignerInfo *sinfos; | - | ||||||||||||||||||
658 | CMS_SignerInfo *si; | - | ||||||||||||||||||
659 | int i; | - | ||||||||||||||||||
660 | sinfos = CMS_get0_SignerInfos(cms); | - | ||||||||||||||||||
661 | for (i = 0; i < sk_CMS_SignerInfo_num(sinfos)
| 29-59 | ||||||||||||||||||
662 | si = sk_CMS_SignerInfo_value(sinfos, i); | - | ||||||||||||||||||
663 | if (!cms_SignerInfo_content_sign(cms, si, chain)
| 0-59 | ||||||||||||||||||
664 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||
665 | } executed 59 times by 1 test: end of block Executed by:
| 59 | ||||||||||||||||||
666 | cms->d.signedData->encapContentInfo->partial = 0; | - | ||||||||||||||||||
667 | return executed 29 times by 1 test: 1;return 1; Executed by:
executed 29 times by 1 test: return 1; Executed by:
| 29 | ||||||||||||||||||
668 | } | - | ||||||||||||||||||
669 | - | |||||||||||||||||||
670 | int CMS_SignerInfo_sign(CMS_SignerInfo *si) | - | ||||||||||||||||||
671 | { | - | ||||||||||||||||||
672 | EVP_MD_CTX *mctx = si->mctx; | - | ||||||||||||||||||
673 | EVP_PKEY_CTX *pctx = | - | ||||||||||||||||||
674 | ((void *)0) | - | ||||||||||||||||||
675 | ; | - | ||||||||||||||||||
676 | unsigned char *abuf = | - | ||||||||||||||||||
677 | ((void *)0) | - | ||||||||||||||||||
678 | ; | - | ||||||||||||||||||
679 | int alen; | - | ||||||||||||||||||
680 | size_t siglen; | - | ||||||||||||||||||
681 | const EVP_MD *md = | - | ||||||||||||||||||
682 | ((void *)0) | - | ||||||||||||||||||
683 | ; | - | ||||||||||||||||||
684 | - | |||||||||||||||||||
685 | md = EVP_get_digestbyname(OBJ_nid2sn(OBJ_obj2nid(si->digestAlgorithm->algorithm))); | - | ||||||||||||||||||
686 | if (md ==
| 0-52 | ||||||||||||||||||
687 | ((void *)0)
| 0-52 | ||||||||||||||||||
688 | ) | - | ||||||||||||||||||
689 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||
690 | - | |||||||||||||||||||
691 | if (CMS_signed_get_attr_by_NID(si, 52, -1) < 0
| 0-52 | ||||||||||||||||||
692 | if (!cms_add1_signingTime(si,
| 0-52 | ||||||||||||||||||
693 | ((void *)0)
| 0-52 | ||||||||||||||||||
694 | )
| 0-52 | ||||||||||||||||||
695 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
696 | } executed 52 times by 1 test: end of block Executed by:
| 52 | ||||||||||||||||||
697 | - | |||||||||||||||||||
698 | if (si->pctx
| 2-50 | ||||||||||||||||||
699 | pctx = si->pctx; executed 2 times by 1 test: pctx = si->pctx; Executed by:
| 2 | ||||||||||||||||||
700 | else { | - | ||||||||||||||||||
701 | EVP_MD_CTX_reset(mctx); | - | ||||||||||||||||||
702 | if (EVP_DigestSignInit(mctx, &pctx, md,
| 0-50 | ||||||||||||||||||
703 | ((void *)0)
| 0-50 | ||||||||||||||||||
704 | , si->pkey) <= 0
| 0-50 | ||||||||||||||||||
705 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
706 | si->pctx = pctx; | - | ||||||||||||||||||
707 | } executed 50 times by 1 test: end of block Executed by:
| 50 | ||||||||||||||||||
708 | - | |||||||||||||||||||
709 | if (EVP_PKEY_CTX_ctrl(pctx, -1, (1<<3),
| 0-52 | ||||||||||||||||||
710 | 11, 0, si) <= 0
| 0-52 | ||||||||||||||||||
711 | ERR_put_error(46,(151),(110),__FILE__,664); | - | ||||||||||||||||||
712 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
713 | } | - | ||||||||||||||||||
714 | - | |||||||||||||||||||
715 | alen = ASN1_item_i2d((ASN1_VALUE *)si->signedAttrs, &abuf, | - | ||||||||||||||||||
716 | (&(CMS_Attributes_Sign_it))); | - | ||||||||||||||||||
717 | if (!abuf
| 0-52 | ||||||||||||||||||
718 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
719 | if (EVP_DigestUpdate(mctx,abuf,alen) <= 0
| 0-52 | ||||||||||||||||||
720 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
721 | if (EVP_DigestSignFinal(mctx,
| 0-52 | ||||||||||||||||||
722 | ((void *)0)
| 0-52 | ||||||||||||||||||
723 | , &siglen) <= 0
| 0-52 | ||||||||||||||||||
724 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
725 | CRYPTO_free(abuf, __FILE__, 676); | - | ||||||||||||||||||
726 | abuf = CRYPTO_malloc(siglen, __FILE__, 677); | - | ||||||||||||||||||
727 | if (abuf ==
| 0-52 | ||||||||||||||||||
728 | ((void *)0)
| 0-52 | ||||||||||||||||||
729 | ) | - | ||||||||||||||||||
730 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
731 | if (EVP_DigestSignFinal(mctx, abuf, &siglen) <= 0
| 0-52 | ||||||||||||||||||
732 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
733 | - | |||||||||||||||||||
734 | if (EVP_PKEY_CTX_ctrl(pctx, -1, (1<<3),
| 0-52 | ||||||||||||||||||
735 | 11, 1, si) <= 0
| 0-52 | ||||||||||||||||||
736 | ERR_put_error(46,(151),(110),__FILE__,685); | - | ||||||||||||||||||
737 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
738 | } | - | ||||||||||||||||||
739 | - | |||||||||||||||||||
740 | EVP_MD_CTX_reset(mctx); | - | ||||||||||||||||||
741 | - | |||||||||||||||||||
742 | ASN1_STRING_set0(si->signature, abuf, siglen); | - | ||||||||||||||||||
743 | - | |||||||||||||||||||
744 | return executed 52 times by 1 test: 1;return 1; Executed by:
executed 52 times by 1 test: return 1; Executed by:
| 52 | ||||||||||||||||||
745 | - | |||||||||||||||||||
746 | err: | - | ||||||||||||||||||
747 | CRYPTO_free(abuf, __FILE__, 696); | - | ||||||||||||||||||
748 | EVP_MD_CTX_reset(mctx); | - | ||||||||||||||||||
749 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||
750 | - | |||||||||||||||||||
751 | } | - | ||||||||||||||||||
752 | - | |||||||||||||||||||
753 | int CMS_SignerInfo_verify(CMS_SignerInfo *si) | - | ||||||||||||||||||
754 | { | - | ||||||||||||||||||
755 | EVP_MD_CTX *mctx = | - | ||||||||||||||||||
756 | ((void *)0) | - | ||||||||||||||||||
757 | ; | - | ||||||||||||||||||
758 | unsigned char *abuf = | - | ||||||||||||||||||
759 | ((void *)0) | - | ||||||||||||||||||
760 | ; | - | ||||||||||||||||||
761 | int alen, r = -1; | - | ||||||||||||||||||
762 | const EVP_MD *md = | - | ||||||||||||||||||
763 | ((void *)0) | - | ||||||||||||||||||
764 | ; | - | ||||||||||||||||||
765 | - | |||||||||||||||||||
766 | if (!si->pkey
| 0-54 | ||||||||||||||||||
767 | ERR_put_error(46,(152),(134),__FILE__,710); | - | ||||||||||||||||||
768 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||
769 | } | - | ||||||||||||||||||
770 | - | |||||||||||||||||||
771 | md = EVP_get_digestbyname(OBJ_nid2sn(OBJ_obj2nid(si->digestAlgorithm->algorithm))); | - | ||||||||||||||||||
772 | if (md ==
| 0-54 | ||||||||||||||||||
773 | ((void *)0)
| 0-54 | ||||||||||||||||||
774 | ) | - | ||||||||||||||||||
775 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||
776 | if (si->mctx ==
| 0-54 | ||||||||||||||||||
777 | ((void *)0)
| 0-54 | ||||||||||||||||||
778 | && (
| 0-54 | ||||||||||||||||||
779 | ((void *)0)
| 0-54 | ||||||||||||||||||
780 | ) { | - | ||||||||||||||||||
781 | ERR_put_error(46,(152),((1|64)),__FILE__,718); | - | ||||||||||||||||||
782 | return never executed: -1;return -1; never executed: return -1; | 0 | ||||||||||||||||||
783 | } | - | ||||||||||||||||||
784 | mctx = si->mctx; | - | ||||||||||||||||||
785 | if (EVP_DigestVerifyInit(mctx, &si->pctx, md,
| 0-54 | ||||||||||||||||||
786 | ((void *)0)
| 0-54 | ||||||||||||||||||
787 | , si->pkey) <= 0
| 0-54 | ||||||||||||||||||
788 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
789 | - | |||||||||||||||||||
790 | if (!cms_sd_asn1_ctrl(si, 1)
| 0-54 | ||||||||||||||||||
791 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
792 | - | |||||||||||||||||||
793 | alen = ASN1_item_i2d((ASN1_VALUE *)si->signedAttrs, &abuf, | - | ||||||||||||||||||
794 | (&(CMS_Attributes_Verify_it))); | - | ||||||||||||||||||
795 | if (!abuf
| 0-54 | ||||||||||||||||||
796 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
797 | r = EVP_DigestUpdate(mctx,abuf,alen); | - | ||||||||||||||||||
798 | CRYPTO_free(abuf, __FILE__, 733); | - | ||||||||||||||||||
799 | if (r <= 0
| 0-54 | ||||||||||||||||||
800 | r = -1; | - | ||||||||||||||||||
801 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
802 | } | - | ||||||||||||||||||
803 | r = EVP_DigestVerifyFinal(mctx, | - | ||||||||||||||||||
804 | si->signature->data, si->signature->length); | - | ||||||||||||||||||
805 | if (r <= 0
| 0-54 | ||||||||||||||||||
806 | ERR_put_error(46,(152),(158),__FILE__,741); never executed: ERR_put_error(46,(152),(158),__FILE__,741); | 0 | ||||||||||||||||||
807 | err: code before this statement executed 54 times by 1 test: err: Executed by:
| 54 | ||||||||||||||||||
808 | EVP_MD_CTX_reset(mctx); | - | ||||||||||||||||||
809 | return executed 54 times by 1 test: r;return r; Executed by:
executed 54 times by 1 test: return r; Executed by:
| 54 | ||||||||||||||||||
810 | } | - | ||||||||||||||||||
811 | - | |||||||||||||||||||
812 | - | |||||||||||||||||||
813 | - | |||||||||||||||||||
814 | BIO *cms_SignedData_init_bio(CMS_ContentInfo *cms) | - | ||||||||||||||||||
815 | { | - | ||||||||||||||||||
816 | int i; | - | ||||||||||||||||||
817 | CMS_SignedData *sd; | - | ||||||||||||||||||
818 | BIO *chain = | - | ||||||||||||||||||
819 | ((void *)0) | - | ||||||||||||||||||
820 | ; | - | ||||||||||||||||||
821 | sd = cms_get0_signed(cms); | - | ||||||||||||||||||
822 | if (!sd
| 0-60 | ||||||||||||||||||
823 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||
824 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||||||||
825 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||
826 | if (cms->d.signedData->encapContentInfo->partial
| 29-31 | ||||||||||||||||||
827 | cms_sd_set_version(sd); executed 29 times by 1 test: cms_sd_set_version(sd); Executed by:
| 29 | ||||||||||||||||||
828 | for (i = 0; i < sk_X509_ALGOR_num(sd->digestAlgorithms)
| 60 | ||||||||||||||||||
829 | X509_ALGOR *digestAlgorithm; | - | ||||||||||||||||||
830 | BIO *mdbio; | - | ||||||||||||||||||
831 | digestAlgorithm = sk_X509_ALGOR_value(sd->digestAlgorithms, i); | - | ||||||||||||||||||
832 | mdbio = cms_DigestAlgorithm_init_bio(digestAlgorithm); | - | ||||||||||||||||||
833 | if (!mdbio
| 0-60 | ||||||||||||||||||
834 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
835 | if (chain
| 0-60 | ||||||||||||||||||
836 | BIO_push(chain, mdbio); never executed: BIO_push(chain, mdbio); | 0 | ||||||||||||||||||
837 | else | - | ||||||||||||||||||
838 | chain = mdbio; executed 60 times by 1 test: chain = mdbio; Executed by:
| 60 | ||||||||||||||||||
839 | } | - | ||||||||||||||||||
840 | return executed 60 times by 1 test: chain;return chain; Executed by:
executed 60 times by 1 test: return chain; Executed by:
| 60 | ||||||||||||||||||
841 | err: | - | ||||||||||||||||||
842 | BIO_free_all(chain); | - | ||||||||||||||||||
843 | return never executed: return ((void *)0) ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||
844 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||||||||
845 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||
846 | } | - | ||||||||||||||||||
847 | - | |||||||||||||||||||
848 | int CMS_SignerInfo_verify_content(CMS_SignerInfo *si, BIO *chain) | - | ||||||||||||||||||
849 | { | - | ||||||||||||||||||
850 | ASN1_OCTET_STRING *os = | - | ||||||||||||||||||
851 | ((void *)0) | - | ||||||||||||||||||
852 | ; | - | ||||||||||||||||||
853 | EVP_MD_CTX *mctx = EVP_MD_CTX_new(); | - | ||||||||||||||||||
854 | EVP_PKEY_CTX *pkctx = | - | ||||||||||||||||||
855 | ((void *)0) | - | ||||||||||||||||||
856 | ; | - | ||||||||||||||||||
857 | int r = -1; | - | ||||||||||||||||||
858 | unsigned char mval[64]; | - | ||||||||||||||||||
859 | unsigned int mlen; | - | ||||||||||||||||||
860 | - | |||||||||||||||||||
861 | if (mctx ==
| 0-63 | ||||||||||||||||||
862 | ((void *)0)
| 0-63 | ||||||||||||||||||
863 | ) { | - | ||||||||||||||||||
864 | ERR_put_error(46,(154),((1|64)),__FILE__,787); | - | ||||||||||||||||||
865 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
866 | } | - | ||||||||||||||||||
867 | - | |||||||||||||||||||
868 | if (CMS_signed_get_attr_count(si) >= 0
| 9-54 | ||||||||||||||||||
869 | os = CMS_signed_get0_data_by_OBJ(si, | - | ||||||||||||||||||
870 | OBJ_nid2obj(51), | - | ||||||||||||||||||
871 | -3, 4); | - | ||||||||||||||||||
872 | if (!os
| 0-54 | ||||||||||||||||||
873 | ERR_put_error(46,(154),(114),__FILE__,797) | - | ||||||||||||||||||
874 | ; | - | ||||||||||||||||||
875 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
876 | } | - | ||||||||||||||||||
877 | } executed 54 times by 1 test: end of block Executed by:
| 54 | ||||||||||||||||||
878 | - | |||||||||||||||||||
879 | if (!cms_DigestAlgorithm_find_ctx(mctx, chain, si->digestAlgorithm)
| 0-63 | ||||||||||||||||||
880 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
881 | - | |||||||||||||||||||
882 | if (EVP_DigestFinal_ex(mctx, mval, &mlen) <= 0
| 0-63 | ||||||||||||||||||
883 | ERR_put_error(46,(154),(147),__FILE__,807) | - | ||||||||||||||||||
884 | ; | - | ||||||||||||||||||
885 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
886 | } | - | ||||||||||||||||||
887 | - | |||||||||||||||||||
888 | - | |||||||||||||||||||
889 | - | |||||||||||||||||||
890 | if (os
| 9-54 | ||||||||||||||||||
891 | if (mlen != (unsigned int)os->length
| 0-54 | ||||||||||||||||||
892 | ERR_put_error(46,(154),(120),__FILE__,816) | - | ||||||||||||||||||
893 | ; | - | ||||||||||||||||||
894 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
895 | } | - | ||||||||||||||||||
896 | - | |||||||||||||||||||
897 | if (memcmp(mval, os->data, mlen)
| 0-54 | ||||||||||||||||||
898 | ERR_put_error(46,(154),(158),__FILE__,822) | - | ||||||||||||||||||
899 | ; | - | ||||||||||||||||||
900 | r = 0; | - | ||||||||||||||||||
901 | } never executed: elseend of block | 0 | ||||||||||||||||||
902 | r = 1; executed 54 times by 1 test: r = 1; Executed by:
| 54 | ||||||||||||||||||
903 | } else { | - | ||||||||||||||||||
904 | const EVP_MD *md = EVP_MD_CTX_md(mctx); | - | ||||||||||||||||||
905 | pkctx = EVP_PKEY_CTX_new(si->pkey, | - | ||||||||||||||||||
906 | ((void *)0) | - | ||||||||||||||||||
907 | ); | - | ||||||||||||||||||
908 | if (pkctx ==
| 0-9 | ||||||||||||||||||
909 | ((void *)0)
| 0-9 | ||||||||||||||||||
910 | ) | - | ||||||||||||||||||
911 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
912 | if (EVP_PKEY_verify_init(pkctx) <= 0
| 0-9 | ||||||||||||||||||
913 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
914 | if (EVP_PKEY_CTX_ctrl(pkctx, -1, ((1<<3) | (1<<4) | (1<<5) | (1<<6) | (1<<7)), 1, 0, (void *)(md)) <= 0
| 0-9 | ||||||||||||||||||
915 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
916 | si->pctx = pkctx; | - | ||||||||||||||||||
917 | if (!cms_sd_asn1_ctrl(si, 1)
| 0-9 | ||||||||||||||||||
918 | goto never executed: err;goto err; never executed: goto err; | 0 | ||||||||||||||||||
919 | r = EVP_PKEY_verify(pkctx, si->signature->data, | - | ||||||||||||||||||
920 | si->signature->length, mval, mlen); | - | ||||||||||||||||||
921 | if (r <= 0
| 0-9 | ||||||||||||||||||
922 | ERR_put_error(46,(154),(158),__FILE__,842) | - | ||||||||||||||||||
923 | ; | - | ||||||||||||||||||
924 | r = 0; | - | ||||||||||||||||||
925 | } never executed: end of block | 0 | ||||||||||||||||||
926 | } executed 9 times by 1 test: end of block Executed by:
| 9 | ||||||||||||||||||
927 | - | |||||||||||||||||||
928 | err: code before this statement executed 63 times by 1 test: err: Executed by:
| 63 | ||||||||||||||||||
929 | EVP_PKEY_CTX_free(pkctx); | - | ||||||||||||||||||
930 | EVP_MD_CTX_free(mctx); | - | ||||||||||||||||||
931 | return executed 63 times by 1 test: r;return r; Executed by:
executed 63 times by 1 test: return r; Executed by:
| 63 | ||||||||||||||||||
932 | - | |||||||||||||||||||
933 | } | - | ||||||||||||||||||
934 | - | |||||||||||||||||||
935 | int CMS_add_smimecap(CMS_SignerInfo *si, struct stack_st_X509_ALGOR *algs) | - | ||||||||||||||||||
936 | { | - | ||||||||||||||||||
937 | unsigned char *smder = | - | ||||||||||||||||||
938 | ((void *)0) | - | ||||||||||||||||||
939 | ; | - | ||||||||||||||||||
940 | int smderlen, r; | - | ||||||||||||||||||
941 | smderlen = i2d_X509_ALGORS(algs, &smder); | - | ||||||||||||||||||
942 | if (smderlen <= 0
| 0-52 | ||||||||||||||||||
943 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||
944 | r = CMS_signed_add1_attr_by_NID(si, 167, | - | ||||||||||||||||||
945 | 16, smder, smderlen); | - | ||||||||||||||||||
946 | CRYPTO_free(smder, __FILE__, 863); | - | ||||||||||||||||||
947 | return executed 52 times by 1 test: r;return r; Executed by:
executed 52 times by 1 test: return r; Executed by:
| 52 | ||||||||||||||||||
948 | } | - | ||||||||||||||||||
949 | - | |||||||||||||||||||
950 | int CMS_add_simple_smimecap(struct stack_st_X509_ALGOR **algs, | - | ||||||||||||||||||
951 | int algnid, int keysize) | - | ||||||||||||||||||
952 | { | - | ||||||||||||||||||
953 | X509_ALGOR *alg; | - | ||||||||||||||||||
954 | ASN1_INTEGER *key = | - | ||||||||||||||||||
955 | ((void *)0) | - | ||||||||||||||||||
956 | ; | - | ||||||||||||||||||
957 | if (keysize > 0
| 156-260 | ||||||||||||||||||
958 | key = ASN1_INTEGER_new(); | - | ||||||||||||||||||
959 | if (key ==
| 0-156 | ||||||||||||||||||
960 | ((void *)0)
| 0-156 | ||||||||||||||||||
961 | || !ASN1_INTEGER_set(key, keysize)
| 0-156 | ||||||||||||||||||
962 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||
963 | } executed 156 times by 1 test: end of block Executed by:
| 156 | ||||||||||||||||||
964 | alg = X509_ALGOR_new(); | - | ||||||||||||||||||
965 | if (alg ==
| 0-416 | ||||||||||||||||||
966 | ((void *)0)
| 0-416 | ||||||||||||||||||
967 | ) { | - | ||||||||||||||||||
968 | ASN1_INTEGER_free(key); | - | ||||||||||||||||||
969 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||
970 | } | - | ||||||||||||||||||
971 | - | |||||||||||||||||||
972 | X509_ALGOR_set0(alg, OBJ_nid2obj(algnid), | - | ||||||||||||||||||
973 | key ? 2 : -1, key); | - | ||||||||||||||||||
974 | if (*
| 52-364 | ||||||||||||||||||
975 | ((void *)0)
| 52-364 | ||||||||||||||||||
976 | ) | - | ||||||||||||||||||
977 | * executed 52 times by 1 test: algs = sk_X509_ALGOR_new_null();*algs = sk_X509_ALGOR_new_null(); Executed by:
executed 52 times by 1 test: *algs = sk_X509_ALGOR_new_null(); Executed by:
| 52 | ||||||||||||||||||
978 | if (*
| 0-416 | ||||||||||||||||||
979 | ((void *)0)
| 0-416 | ||||||||||||||||||
980 | || !sk_X509_ALGOR_push(*algs, alg)
| 0-416 | ||||||||||||||||||
981 | X509_ALGOR_free(alg); | - | ||||||||||||||||||
982 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||
983 | } | - | ||||||||||||||||||
984 | return executed 416 times by 1 test: 1;return 1; Executed by:
executed 416 times by 1 test: return 1; Executed by:
| 416 | ||||||||||||||||||
985 | } | - | ||||||||||||||||||
986 | - | |||||||||||||||||||
987 | - | |||||||||||||||||||
988 | - | |||||||||||||||||||
989 | static int cms_add_cipher_smcap(struct stack_st_X509_ALGOR **sk, int nid, int arg) | - | ||||||||||||||||||
990 | { | - | ||||||||||||||||||
991 | if (EVP_get_cipherbyname(OBJ_nid2sn(nid))
| 52-416 | ||||||||||||||||||
992 | return executed 416 times by 1 test: CMS_add_simple_smimecap(sk, nid, arg);return CMS_add_simple_smimecap(sk, nid, arg); Executed by:
executed 416 times by 1 test: return CMS_add_simple_smimecap(sk, nid, arg); Executed by:
| 416 | ||||||||||||||||||
993 | return executed 52 times by 1 test: 1;return 1; Executed by:
executed 52 times by 1 test: return 1; Executed by:
| 52 | ||||||||||||||||||
994 | } | - | ||||||||||||||||||
995 | - | |||||||||||||||||||
996 | static int cms_add_digest_smcap(struct stack_st_X509_ALGOR **sk, int nid, int arg) | - | ||||||||||||||||||
997 | { | - | ||||||||||||||||||
998 | if (EVP_get_digestbyname(OBJ_nid2sn(nid))
| 0-156 | ||||||||||||||||||
999 | return never executed: CMS_add_simple_smimecap(sk, nid, arg);return CMS_add_simple_smimecap(sk, nid, arg); never executed: return CMS_add_simple_smimecap(sk, nid, arg); | 0 | ||||||||||||||||||
1000 | return executed 156 times by 1 test: 1;return 1; Executed by:
executed 156 times by 1 test: return 1; Executed by:
| 156 | ||||||||||||||||||
1001 | } | - | ||||||||||||||||||
1002 | - | |||||||||||||||||||
1003 | int CMS_add_standard_smimecap(struct stack_st_X509_ALGOR **smcap) | - | ||||||||||||||||||
1004 | { | - | ||||||||||||||||||
1005 | if (!cms_add_cipher_smcap(smcap, 427, -1)
| 0-52 | ||||||||||||||||||
1006 | || !cms_add_digest_smcap(smcap, 982, -1)
| 0-52 | ||||||||||||||||||
1007 | || !cms_add_digest_smcap(smcap, 983, -1)
| 0-52 | ||||||||||||||||||
1008 | || !cms_add_digest_smcap(smcap, 809, -1)
| 0-52 | ||||||||||||||||||
1009 | || !cms_add_cipher_smcap(smcap, 813, -1)
| 0-52 | ||||||||||||||||||
1010 | || !cms_add_cipher_smcap(smcap, 423, -1)
| 0-52 | ||||||||||||||||||
1011 | || !cms_add_cipher_smcap(smcap, 419, -1)
| 0-52 | ||||||||||||||||||
1012 | || !cms_add_cipher_smcap(smcap, 44, -1)
| 0-52 | ||||||||||||||||||
1013 | || !cms_add_cipher_smcap(smcap, 37, 128)
| 0-52 | ||||||||||||||||||
1014 | || !cms_add_cipher_smcap(smcap, 37, 64)
| 0-52 | ||||||||||||||||||
1015 | || !cms_add_cipher_smcap(smcap, 31, -1)
| 0-52 | ||||||||||||||||||
1016 | || !cms_add_cipher_smcap(smcap, 37, 40)
| 0-52 | ||||||||||||||||||
1017 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||
1018 | return executed 52 times by 1 test: 1;return 1; Executed by:
executed 52 times by 1 test: return 1; Executed by:
| 52 | ||||||||||||||||||
1019 | } | - | ||||||||||||||||||
Switch to Source code | Preprocessed file |