OpenCoverage

pk7_lib.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/libressl/src/crypto/pkcs7/pk7_lib.c
Source codeSwitch to Preprocessed file
LineSourceCount
1/* $OpenBSD: pk7_lib.c,v 1.19 2017/01/29 17:49:23 beck Exp $ */-
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)-
3 * All rights reserved.-
4 *-
5 * This package is an SSL implementation written-
6 * by Eric Young (eay@cryptsoft.com).-
7 * The implementation was written so as to conform with Netscapes SSL.-
8 *-
9 * This library is free for commercial and non-commercial use as long as-
10 * the following conditions are aheared to. The following conditions-
11 * apply to all code found in this distribution, be it the RC4, RSA,-
12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation-
13 * included with this distribution is covered by the same copyright terms-
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).-
15 *-
16 * Copyright remains Eric Young's, and as such any Copyright notices in-
17 * the code are not to be removed.-
18 * If this package is used in a product, Eric Young should be given attribution-
19 * as the author of the parts of the library used.-
20 * This can be in the form of a textual message at program startup or-
21 * in documentation (online or textual) provided with the package.-
22 *-
23 * Redistribution and use in source and binary forms, with or without-
24 * modification, are permitted provided that the following conditions-
25 * are met:-
26 * 1. Redistributions of source code must retain the copyright-
27 * notice, this list of conditions and the following disclaimer.-
28 * 2. Redistributions in binary form must reproduce the above copyright-
29 * notice, this list of conditions and the following disclaimer in the-
30 * documentation and/or other materials provided with the distribution.-
31 * 3. All advertising materials mentioning features or use of this software-
32 * must display the following acknowledgement:-
33 * "This product includes cryptographic software written by-
34 * Eric Young (eay@cryptsoft.com)"-
35 * The word 'cryptographic' can be left out if the rouines from the library-
36 * being used are not cryptographic related :-).-
37 * 4. If you include any Windows specific code (or a derivative thereof) from-
38 * the apps directory (application code) you must include an acknowledgement:-
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"-
40 *-
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND-
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE-
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE-
44 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE-
45 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL-
46 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS-
47 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)-
48 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT-
49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY-
50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF-
51 * SUCH DAMAGE.-
52 *-
53 * The licence and distribution terms for any publically available version or-
54 * derivative of this code cannot be changed. i.e. this code cannot simply be-
55 * copied and put under another distribution licence-
56 * [including the GNU Public Licence.]-
57 */-
58-
59#include <stdio.h>-
60-
61#include <openssl/err.h>-
62#include <openssl/objects.h>-
63#include <openssl/x509.h>-
64-
65#include "asn1_locl.h"-
66-
67long-
68PKCS7_ctrl(PKCS7 *p7, int cmd, long larg, char *parg)-
69{-
70 int nid;-
71 long ret;-
72-
73 nid = OBJ_obj2nid(p7->type);-
74-
75 switch (cmd) {-
76 case PKCS7_OP_SET_DETACHED_SIGNATURE:
executed 1 time by 1 test: case 1:
Executed by:
  • pkcs7test
1
77 if (nid == NID_pkcs7_signed) {
nid == 22Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • pkcs7test
FALSEnever evaluated
0-1
78 ret = p7->detached = (int)larg;-
79 if (ret && PKCS7_type_is_data(p7->d.sign->contents)) {
retDescription
TRUEevaluated 1 time by 1 test
Evaluated by:
  • pkcs7test
FALSEnever evaluated
(OBJ_obj2nid((...->type) == 21)Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • pkcs7test
FALSEnever evaluated
0-1
80 ASN1_OCTET_STRING *os;-
81 os = p7->d.sign->contents->d.data;-
82 ASN1_OCTET_STRING_free(os);-
83 p7->d.sign->contents->d.data = NULL;-
84 }
executed 1 time by 1 test: end of block
Executed by:
  • pkcs7test
1
85 } else {
executed 1 time by 1 test: end of block
Executed by:
  • pkcs7test
1
86 PKCS7error(PKCS7_R_OPERATION_NOT_SUPPORTED_ON_THIS_TYPE);-
87 ret = 0;-
88 }
never executed: end of block
0
89 break;
executed 1 time by 1 test: break;
Executed by:
  • pkcs7test
1
90 case PKCS7_OP_GET_DETACHED_SIGNATURE:
executed 11 times by 1 test: case 2:
Executed by:
  • pkcs7test
11
91 if (nid == NID_pkcs7_signed) {
nid == 22Description
TRUEevaluated 11 times by 1 test
Evaluated by:
  • pkcs7test
FALSEnever evaluated
0-11
92 if (!p7->d.sign || !p7->d.sign->contents->d.ptr)
!p7->d.signDescription
TRUEnever evaluated
FALSEevaluated 11 times by 1 test
Evaluated by:
  • pkcs7test
!p7->d.sign->contents->d.ptrDescription
TRUEevaluated 5 times by 1 test
Evaluated by:
  • pkcs7test
FALSEevaluated 6 times by 1 test
Evaluated by:
  • pkcs7test
0-11
93 ret = 1;
executed 5 times by 1 test: ret = 1;
Executed by:
  • pkcs7test
5
94 else-
95 ret = 0;
executed 6 times by 1 test: ret = 0;
Executed by:
  • pkcs7test
6
96-
97 p7->detached = ret;-
98 } else {
executed 11 times by 1 test: end of block
Executed by:
  • pkcs7test
11
99 PKCS7error(PKCS7_R_OPERATION_NOT_SUPPORTED_ON_THIS_TYPE);-
100 ret = 0;-
101 }
never executed: end of block
0
102-
103 break;
executed 11 times by 1 test: break;
Executed by:
  • pkcs7test
11
104 default:
never executed: default:
0
105 PKCS7error(PKCS7_R_UNKNOWN_OPERATION);-
106 ret = 0;-
107 }
never executed: end of block
0
108 return (ret);
executed 12 times by 1 test: return (ret);
Executed by:
  • pkcs7test
12
109}-
110-
111int-
112PKCS7_content_new(PKCS7 *p7, int type)-
113{-
114 PKCS7 *ret = NULL;-
115-
116 if ((ret = PKCS7_new()) == NULL)
(ret = PKCS7_n...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • pkcs7test
0-2
117 goto err;
never executed: goto err;
0
118 if (!PKCS7_set_type(ret, type))
!PKCS7_set_type(ret, type)Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • pkcs7test
0-2
119 goto err;
never executed: goto err;
0
120 if (!PKCS7_set_content(p7, ret))
!PKCS7_set_content(p7, ret)Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • pkcs7test
0-2
121 goto err;
never executed: goto err;
0
122-
123 return (1);
executed 2 times by 1 test: return (1);
Executed by:
  • pkcs7test
2
124err:-
125 if (ret != NULL)
ret != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
126 PKCS7_free(ret);
never executed: PKCS7_free(ret);
0
127 return (0);
never executed: return (0);
0
128}-
129-
130int-
131PKCS7_set_content(PKCS7 *p7, PKCS7 *p7_data)-
132{-
133 int i;-
134-
135 i = OBJ_obj2nid(p7->type);-
136 switch (i) {-
137 case NID_pkcs7_signed:
executed 2 times by 1 test: case 22:
Executed by:
  • pkcs7test
2
138 if (p7->d.sign->contents != NULL)
p7->d.sign->co...!= ((void *)0)Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • pkcs7test
FALSEnever evaluated
0-2
139 PKCS7_free(p7->d.sign->contents);
executed 2 times by 1 test: PKCS7_free(p7->d.sign->contents);
Executed by:
  • pkcs7test
2
140 p7->d.sign->contents = p7_data;-
141 break;
executed 2 times by 1 test: break;
Executed by:
  • pkcs7test
2
142 case NID_pkcs7_digest:
never executed: case 25:
0
143 if (p7->d.digest->contents != NULL)
p7->d.digest->...!= ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
144 PKCS7_free(p7->d.digest->contents);
never executed: PKCS7_free(p7->d.digest->contents);
0
145 p7->d.digest->contents = p7_data;-
146 break;
never executed: break;
0
147 case NID_pkcs7_data:
never executed: case 21:
0
148 case NID_pkcs7_enveloped:
never executed: case 23:
0
149 case NID_pkcs7_signedAndEnveloped:
never executed: case 24:
0
150 case NID_pkcs7_encrypted:
never executed: case 26:
0
151 default:
never executed: default:
0
152 PKCS7error(PKCS7_R_UNSUPPORTED_CONTENT_TYPE);-
153 goto err;
never executed: goto err;
0
154 }-
155 return (1);
executed 2 times by 1 test: return (1);
Executed by:
  • pkcs7test
2
156err:-
157 return (0);
never executed: return (0);
0
158}-
159-
160int-
161PKCS7_set_type(PKCS7 *p7, int type)-
162{-
163 ASN1_OBJECT *obj;-
164-
165 /*PKCS7_content_free(p7);*/-
166 obj=OBJ_nid2obj(type); /* will not fail */-
167-
168 switch (type) {-
169 case NID_pkcs7_signed:
executed 2 times by 1 test: case 22:
Executed by:
  • pkcs7test
2
170 p7->type = obj;-
171 if ((p7->d.sign = PKCS7_SIGNED_new()) == NULL)
(p7->d.sign = ...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • pkcs7test
0-2
172 goto err;
never executed: goto err;
0
173 if (!ASN1_INTEGER_set(p7->d.sign->version, 1)) {
!ASN1_INTEGER_...n->version, 1)Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • pkcs7test
0-2
174 PKCS7_SIGNED_free(p7->d.sign);-
175 p7->d.sign = NULL;-
176 goto err;
never executed: goto err;
0
177 }-
178 break;
executed 2 times by 1 test: break;
Executed by:
  • pkcs7test
2
179 case NID_pkcs7_data:
executed 2 times by 1 test: case 21:
Executed by:
  • pkcs7test
2
180 p7->type = obj;-
181 if ((p7->d.data = ASN1_OCTET_STRING_new()) == NULL)
(p7->d.data = ...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • pkcs7test
0-2
182 goto err;
never executed: goto err;
0
183 break;
executed 2 times by 1 test: break;
Executed by:
  • pkcs7test
2
184 case NID_pkcs7_signedAndEnveloped:
never executed: case 24:
0
185 p7->type = obj;-
186 if ((p7->d.signed_and_enveloped =
(p7->d.signed_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
187 PKCS7_SIGN_ENVELOPE_new()) == NULL)
(p7->d.signed_...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
188 goto err;
never executed: goto err;
0
189 ASN1_INTEGER_set(p7->d.signed_and_enveloped->version, 1);-
190 if (!ASN1_INTEGER_set(p7->d.signed_and_enveloped->version, 1))
!ASN1_INTEGER_...d->version, 1)Description
TRUEnever evaluated
FALSEnever evaluated
0
191 goto err;
never executed: goto err;
0
192 p7->d.signed_and_enveloped->enc_data->content_type =-
193 OBJ_nid2obj(NID_pkcs7_data);-
194 break;
never executed: break;
0
195 case NID_pkcs7_enveloped:
executed 1 time by 1 test: case 23:
Executed by:
  • pkcs7test
1
196 p7->type = obj;-
197 if ((p7->d.enveloped = PKCS7_ENVELOPE_new()) == NULL)
(p7->d.envelop...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • pkcs7test
0-1
198 goto err;
never executed: goto err;
0
199 if (!ASN1_INTEGER_set(p7->d.enveloped->version, 0))
!ASN1_INTEGER_...d->version, 0)Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • pkcs7test
0-1
200 goto err;
never executed: goto err;
0
201 p7->d.enveloped->enc_data->content_type =-
202 OBJ_nid2obj(NID_pkcs7_data);-
203 break;
executed 1 time by 1 test: break;
Executed by:
  • pkcs7test
1
204 case NID_pkcs7_encrypted:
never executed: case 26:
0
205 p7->type = obj;-
206 if ((p7->d.encrypted = PKCS7_ENCRYPT_new()) == NULL)
(p7->d.encrypt...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
207 goto err;
never executed: goto err;
0
208 if (!ASN1_INTEGER_set(p7->d.encrypted->version, 0))
!ASN1_INTEGER_...d->version, 0)Description
TRUEnever evaluated
FALSEnever evaluated
0
209 goto err;
never executed: goto err;
0
210 p7->d.encrypted->enc_data->content_type =-
211 OBJ_nid2obj(NID_pkcs7_data);-
212 break;
never executed: break;
0
213-
214 case NID_pkcs7_digest:
never executed: case 25:
0
215 p7->type = obj;-
216 if ((p7->d.digest = PKCS7_DIGEST_new()) == NULL)
(p7->d.digest ...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
217 goto err;
never executed: goto err;
0
218 if (!ASN1_INTEGER_set(p7->d.digest->version, 0))
!ASN1_INTEGER_...t->version, 0)Description
TRUEnever evaluated
FALSEnever evaluated
0
219 goto err;
never executed: goto err;
0
220 break;
never executed: break;
0
221 default:
never executed: default:
0
222 PKCS7error(PKCS7_R_UNSUPPORTED_CONTENT_TYPE);-
223 goto err;
never executed: goto err;
0
224 }-
225 return (1);
executed 5 times by 1 test: return (1);
Executed by:
  • pkcs7test
5
226err:-
227 return (0);
never executed: return (0);
0
228}-
229-
230int-
231PKCS7_set0_type_other(PKCS7 *p7, int type, ASN1_TYPE *other)-
232{-
233 p7->type = OBJ_nid2obj(type);-
234 p7->d.other = other;-
235 return 1;
never executed: return 1;
0
236}-
237-
238int-
239PKCS7_add_signer(PKCS7 *p7, PKCS7_SIGNER_INFO *psi)-
240{-
241 int i, j, nid;-
242 X509_ALGOR *alg;-
243 STACK_OF(PKCS7_SIGNER_INFO) *signer_sk;-
244 STACK_OF(X509_ALGOR) *md_sk;-
245-
246 i = OBJ_obj2nid(p7->type);-
247 switch (i) {-
248 case NID_pkcs7_signed:
executed 2 times by 1 test: case 22:
Executed by:
  • pkcs7test
2
249 signer_sk = p7->d.sign->signer_info;-
250 md_sk = p7->d.sign->md_algs;-
251 break;
executed 2 times by 1 test: break;
Executed by:
  • pkcs7test
2
252 case NID_pkcs7_signedAndEnveloped:
never executed: case 24:
0
253 signer_sk = p7->d.signed_and_enveloped->signer_info;-
254 md_sk = p7->d.signed_and_enveloped->md_algs;-
255 break;
never executed: break;
0
256 default:
never executed: default:
0
257 PKCS7error(PKCS7_R_WRONG_CONTENT_TYPE);-
258 return (0);
never executed: return (0);
0
259 }-
260-
261 nid = OBJ_obj2nid(psi->digest_alg->algorithm);-
262-
263 /* If the digest is not currently listed, add it */-
264 j = 0;-
265 for (i = 0; i < sk_X509_ALGOR_num(md_sk); i++) {
i < sk_num(((_...09_ALGOR*)0)))Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • pkcs7test
0-2
266 alg = sk_X509_ALGOR_value(md_sk, i);-
267 if (OBJ_obj2nid(alg->algorithm) == nid) {
OBJ_obj2nid(al...orithm) == nidDescription
TRUEnever evaluated
FALSEnever evaluated
0
268 j = 1;-
269 break;
never executed: break;
0
270 }-
271 }
never executed: end of block
0
272 if (!j) /* we need to add another algorithm */
!jDescription
TRUEevaluated 2 times by 1 test
Evaluated by:
  • pkcs7test
FALSEnever evaluated
0-2
273 {-
274 if (!(alg = X509_ALGOR_new()) ||
!(alg = X509_ALGOR_new())Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • pkcs7test
0-2
275 !(alg->parameter = ASN1_TYPE_new())) {
!(alg->paramet...N1_TYPE_new())Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • pkcs7test
0-2
276 X509_ALGOR_free(alg);-
277 PKCS7error(ERR_R_MALLOC_FAILURE);-
278 return (0);
never executed: return (0);
0
279 }-
280 alg->algorithm = OBJ_nid2obj(nid);-
281 alg->parameter->type = V_ASN1_NULL;-
282 if (!sk_X509_ALGOR_push(md_sk, alg)) {
!sk_push(((_ST...09_ALGOR*)0)))Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • pkcs7test
0-2
283 X509_ALGOR_free(alg);-
284 return 0;
never executed: return 0;
0
285 }-
286 }
executed 2 times by 1 test: end of block
Executed by:
  • pkcs7test
2
287-
288 if (!sk_PKCS7_SIGNER_INFO_push(signer_sk, psi))
!sk_push(((_ST...NER_INFO*)0)))Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • pkcs7test
0-2
289 return 0;
never executed: return 0;
0
290 return (1);
executed 2 times by 1 test: return (1);
Executed by:
  • pkcs7test
2
291}-
292-
293int-
294PKCS7_add_certificate(PKCS7 *p7, X509 *x509)-
295{-
296 int i;-
297 STACK_OF(X509) **sk;-
298-
299 i = OBJ_obj2nid(p7->type);-
300 switch (i) {-
301 case NID_pkcs7_signed:
executed 3 times by 1 test: case 22:
Executed by:
  • pkcs7test
3
302 sk = &(p7->d.sign->cert);-
303 break;
executed 3 times by 1 test: break;
Executed by:
  • pkcs7test
3
304 case NID_pkcs7_signedAndEnveloped:
never executed: case 24:
0
305 sk = &(p7->d.signed_and_enveloped->cert);-
306 break;
never executed: break;
0
307 default:
never executed: default:
0
308 PKCS7error(PKCS7_R_WRONG_CONTENT_TYPE);-
309 return (0);
never executed: return (0);
0
310 }-
311-
312 if (*sk == NULL)
*sk == ((void *)0)Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • pkcs7test
FALSEevaluated 1 time by 1 test
Evaluated by:
  • pkcs7test
1-2
313 *sk = sk_X509_new_null();
executed 2 times by 1 test: *sk = ((struct stack_st_X509 *)sk_new_null());
Executed by:
  • pkcs7test
2
314 if (*sk == NULL) {
*sk == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 3 times by 1 test
Evaluated by:
  • pkcs7test
0-3
315 PKCS7error(ERR_R_MALLOC_FAILURE);-
316 return 0;
never executed: return 0;
0
317 }-
318 CRYPTO_add(&x509->references, 1, CRYPTO_LOCK_X509);-
319 if (!sk_X509_push(*sk, x509)) {
!sk_push(((_ST... : (X509*)0)))Description
TRUEnever evaluated
FALSEevaluated 3 times by 1 test
Evaluated by:
  • pkcs7test
0-3
320 X509_free(x509);-
321 return 0;
never executed: return 0;
0
322 }-
323 return (1);
executed 3 times by 1 test: return (1);
Executed by:
  • pkcs7test
3
324}-
325-
326int-
327PKCS7_add_crl(PKCS7 *p7, X509_CRL *crl)-
328{-
329 int i;-
330 STACK_OF(X509_CRL) **sk;-
331-
332 i = OBJ_obj2nid(p7->type);-
333 switch (i) {-
334 case NID_pkcs7_signed:
never executed: case 22:
0
335 sk = &(p7->d.sign->crl);-
336 break;
never executed: break;
0
337 case NID_pkcs7_signedAndEnveloped:
never executed: case 24:
0
338 sk = &(p7->d.signed_and_enveloped->crl);-
339 break;
never executed: break;
0
340 default:
never executed: default:
0
341 PKCS7error(PKCS7_R_WRONG_CONTENT_TYPE);-
342 return (0);
never executed: return (0);
0
343 }-
344-
345 if (*sk == NULL)
*sk == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
346 *sk = sk_X509_CRL_new_null();
never executed: *sk = ((struct stack_st_X509_CRL *)sk_new_null());
0
347 if (*sk == NULL) {
*sk == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
348 PKCS7error(ERR_R_MALLOC_FAILURE);-
349 return 0;
never executed: return 0;
0
350 }-
351-
352 CRYPTO_add(&crl->references, 1, CRYPTO_LOCK_X509_CRL);-
353 if (!sk_X509_CRL_push(*sk, crl)) {
!sk_push(((_ST...X509_CRL*)0)))Description
TRUEnever evaluated
FALSEnever evaluated
0
354 X509_CRL_free(crl);-
355 return 0;
never executed: return 0;
0
356 }-
357 return (1);
never executed: return (1);
0
358}-
359-
360int-
361PKCS7_SIGNER_INFO_set(PKCS7_SIGNER_INFO *p7i, X509 *x509, EVP_PKEY *pkey,-
362 const EVP_MD *dgst)-
363{-
364 int ret;-
365-
366 /* We now need to add another PKCS7_SIGNER_INFO entry */-
367 if (!ASN1_INTEGER_set(p7i->version, 1))
!ASN1_INTEGER_...i->version, 1)Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • pkcs7test
0-2
368 goto err;
never executed: goto err;
0
369 if (!X509_NAME_set(&p7i->issuer_and_serial->issuer,
!X509_NAME_set...er_name(x509))Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • pkcs7test
0-2
370 X509_get_issuer_name(x509)))
!X509_NAME_set...er_name(x509))Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • pkcs7test
0-2
371 goto err;
never executed: goto err;
0
372-
373 /* because ASN1_INTEGER_set is used to set a 'long' we will do-
374 * things the ugly way. */-
375 ASN1_INTEGER_free(p7i->issuer_and_serial->serial);-
376 if (!(p7i->issuer_and_serial->serial =
!(p7i->issuer_...Number(x509)))Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • pkcs7test
0-2
377 ASN1_STRING_dup(X509_get_serialNumber(x509))))
!(p7i->issuer_...Number(x509)))Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • pkcs7test
0-2
378 goto err;
never executed: goto err;
0
379-
380 /* lets keep the pkey around for a while */-
381 CRYPTO_add(&pkey->references, 1, CRYPTO_LOCK_EVP_PKEY);-
382 p7i->pkey = pkey;-
383-
384 /* Set the algorithms */-
385-
386 X509_ALGOR_set0(p7i->digest_alg, OBJ_nid2obj(EVP_MD_type(dgst)),-
387 V_ASN1_NULL, NULL);-
388-
389 if (pkey->ameth && pkey->ameth->pkey_ctrl) {
pkey->amethDescription
TRUEevaluated 2 times by 1 test
Evaluated by:
  • pkcs7test
FALSEnever evaluated
pkey->ameth->pkey_ctrlDescription
TRUEevaluated 2 times by 1 test
Evaluated by:
  • pkcs7test
FALSEnever evaluated
0-2
390 ret = pkey->ameth->pkey_ctrl(pkey, ASN1_PKEY_CTRL_PKCS7_SIGN,-
391 0, p7i);-
392 if (ret > 0)
ret > 0Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • pkcs7test
FALSEnever evaluated
0-2
393 return 1;
executed 2 times by 1 test: return 1;
Executed by:
  • pkcs7test
2
394 if (ret != -2) {
ret != -2Description
TRUEnever evaluated
FALSEnever evaluated
0
395 PKCS7error(PKCS7_R_SIGNING_CTRL_FAILURE);-
396 return 0;
never executed: return 0;
0
397 }-
398 }
never executed: end of block
0
399 PKCS7error(PKCS7_R_SIGNING_NOT_SUPPORTED_FOR_THIS_KEY_TYPE);-
400err:
code before this statement never executed: err:
0
401 return 0;
never executed: return 0;
0
402}-
403-
404PKCS7_SIGNER_INFO *-
405PKCS7_add_signature(PKCS7 *p7, X509 *x509, EVP_PKEY *pkey, const EVP_MD *dgst)-
406{-
407 PKCS7_SIGNER_INFO *si = NULL;-
408-
409 if (dgst == NULL) {
dgst == ((void *)0)Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • pkcs7test
FALSEnever evaluated
0-2
410 int def_nid;-
411 if (EVP_PKEY_get_default_digest_nid(pkey, &def_nid) <= 0)
EVP_PKEY_get_d...&def_nid) <= 0Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • pkcs7test
0-2
412 goto err;
never executed: goto err;
0
413 dgst = EVP_get_digestbynid(def_nid);-
414 if (dgst == NULL) {
dgst == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • pkcs7test
0-2
415 PKCS7error(PKCS7_R_NO_DEFAULT_DIGEST);-
416 goto err;
never executed: goto err;
0
417 }-
418 }
executed 2 times by 1 test: end of block
Executed by:
  • pkcs7test
2
419-
420 if ((si = PKCS7_SIGNER_INFO_new()) == NULL)
(si = PKCS7_SI...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • pkcs7test
0-2
421 goto err;
never executed: goto err;
0
422 if (!PKCS7_SIGNER_INFO_set(si, x509, pkey, dgst))
!PKCS7_SIGNER_...9, pkey, dgst)Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • pkcs7test
0-2
423 goto err;
never executed: goto err;
0
424 if (!PKCS7_add_signer(p7, si))
!PKCS7_add_signer(p7, si)Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • pkcs7test
0-2
425 goto err;
never executed: goto err;
0
426 return (si);
executed 2 times by 1 test: return (si);
Executed by:
  • pkcs7test
2
427err:-
428 if (si)
siDescription
TRUEnever evaluated
FALSEnever evaluated
0
429 PKCS7_SIGNER_INFO_free(si);
never executed: PKCS7_SIGNER_INFO_free(si);
0
430 return (NULL);
never executed: return ( ((void *)0) );
0
431}-
432-
433int-
434PKCS7_set_digest(PKCS7 *p7, const EVP_MD *md)-
435{-
436 if (PKCS7_type_is_digest(p7)) {
(OBJ_obj2nid((...->type) == 25)Description
TRUEnever evaluated
FALSEnever evaluated
0
437 if (!(p7->d.digest->md->parameter = ASN1_TYPE_new())) {
!(p7->d.digest...N1_TYPE_new())Description
TRUEnever evaluated
FALSEnever evaluated
0
438 PKCS7error(ERR_R_MALLOC_FAILURE);-
439 return 0;
never executed: return 0;
0
440 }-
441 p7->d.digest->md->parameter->type = V_ASN1_NULL;-
442 p7->d.digest->md->algorithm = OBJ_nid2obj(EVP_MD_nid(md));-
443 return 1;
never executed: return 1;
0
444 }-
445-
446 PKCS7error(PKCS7_R_WRONG_CONTENT_TYPE);-
447 return 1;
never executed: return 1;
0
448}-
449-
450STACK_OF(PKCS7_SIGNER_INFO) *-
451PKCS7_get_signer_info(PKCS7 *p7)-
452{-
453 if (p7 == NULL || p7->d.ptr == NULL)
p7 == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • pkcs7test
p7->d.ptr == ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 4 times by 1 test
Evaluated by:
  • pkcs7test
0-4
454 return (NULL);
never executed: return ( ((void *)0) );
0
455 if (PKCS7_type_is_signed(p7)) {
(OBJ_obj2nid((...->type) == 22)Description
TRUEevaluated 4 times by 1 test
Evaluated by:
  • pkcs7test
FALSEnever evaluated
0-4
456 return (p7->d.sign->signer_info);
executed 4 times by 1 test: return (p7->d.sign->signer_info);
Executed by:
  • pkcs7test
4
457 } else if (PKCS7_type_is_signedAndEnveloped(p7)) {
(OBJ_obj2nid((...->type) == 24)Description
TRUEnever evaluated
FALSEnever evaluated
0
458 return (p7->d.signed_and_enveloped->signer_info);
never executed: return (p7->d.signed_and_enveloped->signer_info);
0
459 } else-
460 return (NULL);
never executed: return ( ((void *)0) );
0
461}-
462-
463void-
464PKCS7_SIGNER_INFO_get0_algs(PKCS7_SIGNER_INFO *si, EVP_PKEY **pk,-
465 X509_ALGOR **pdig, X509_ALGOR **psig)-
466{-
467 if (pk)
pkDescription
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • pkcs7test
0-2
468 *pk = si->pkey;
never executed: *pk = si->pkey;
0
469 if (pdig)
pdigDescription
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • pkcs7test
0-2
470 *pdig = si->digest_alg;
never executed: *pdig = si->digest_alg;
0
471 if (psig)
psigDescription
TRUEevaluated 2 times by 1 test
Evaluated by:
  • pkcs7test
FALSEnever evaluated
0-2
472 *psig = si->digest_enc_alg;
executed 2 times by 1 test: *psig = si->digest_enc_alg;
Executed by:
  • pkcs7test
2
473}
executed 2 times by 1 test: end of block
Executed by:
  • pkcs7test
2
474-
475void-
476PKCS7_RECIP_INFO_get0_alg(PKCS7_RECIP_INFO *ri, X509_ALGOR **penc)-
477{-
478 if (penc)
pencDescription
TRUEevaluated 1 time by 1 test
Evaluated by:
  • pkcs7test
FALSEnever evaluated
0-1
479 *penc = ri->key_enc_algor;
executed 1 time by 1 test: *penc = ri->key_enc_algor;
Executed by:
  • pkcs7test
1
480}
executed 1 time by 1 test: end of block
Executed by:
  • pkcs7test
1
481-
482PKCS7_RECIP_INFO *-
483PKCS7_add_recipient(PKCS7 *p7, X509 *x509)-
484{-
485 PKCS7_RECIP_INFO *ri;-
486-
487 if ((ri = PKCS7_RECIP_INFO_new()) == NULL)
(ri = PKCS7_RE...== ((void *)0)Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • pkcs7test
0-1
488 goto err;
never executed: goto err;
0
489 if (!PKCS7_RECIP_INFO_set(ri, x509))
!PKCS7_RECIP_I..._set(ri, x509)Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • pkcs7test
0-1
490 goto err;
never executed: goto err;
0
491 if (!PKCS7_add_recipient_info(p7, ri))
!PKCS7_add_rec...t_info(p7, ri)Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • pkcs7test
0-1
492 goto err;
never executed: goto err;
0
493 return ri;
executed 1 time by 1 test: return ri;
Executed by:
  • pkcs7test
1
494err:-
495 if (ri)
riDescription
TRUEnever evaluated
FALSEnever evaluated
0
496 PKCS7_RECIP_INFO_free(ri);
never executed: PKCS7_RECIP_INFO_free(ri);
0
497 return NULL;
never executed: return ((void *)0) ;
0
498}-
499-
500int-
501PKCS7_add_recipient_info(PKCS7 *p7, PKCS7_RECIP_INFO *ri)-
502{-
503 int i;-
504 STACK_OF(PKCS7_RECIP_INFO) *sk;-
505-
506 i = OBJ_obj2nid(p7->type);-
507 switch (i) {-
508 case NID_pkcs7_signedAndEnveloped:
never executed: case 24:
0
509 sk = p7->d.signed_and_enveloped->recipientinfo;-
510 break;
never executed: break;
0
511 case NID_pkcs7_enveloped:
executed 1 time by 1 test: case 23:
Executed by:
  • pkcs7test
1
512 sk = p7->d.enveloped->recipientinfo;-
513 break;
executed 1 time by 1 test: break;
Executed by:
  • pkcs7test
1
514 default:
never executed: default:
0
515 PKCS7error(PKCS7_R_WRONG_CONTENT_TYPE);-
516 return (0);
never executed: return (0);
0
517 }-
518-
519 if (!sk_PKCS7_RECIP_INFO_push(sk, ri))
!sk_push(((_ST...CIP_INFO*)0)))Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • pkcs7test
0-1
520 return 0;
never executed: return 0;
0
521 return (1);
executed 1 time by 1 test: return (1);
Executed by:
  • pkcs7test
1
522}-
523-
524int-
525PKCS7_RECIP_INFO_set(PKCS7_RECIP_INFO *p7i, X509 *x509)-
526{-
527 int ret;-
528 EVP_PKEY *pkey = NULL;-
529 if (!ASN1_INTEGER_set(p7i->version, 0))
!ASN1_INTEGER_...i->version, 0)Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • pkcs7test
0-1
530 return 0;
never executed: return 0;
0
531 if (!X509_NAME_set(&p7i->issuer_and_serial->issuer,
!X509_NAME_set...er_name(x509))Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • pkcs7test
0-1
532 X509_get_issuer_name(x509)))
!X509_NAME_set...er_name(x509))Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • pkcs7test
0-1
533 return 0;
never executed: return 0;
0
534-
535 ASN1_INTEGER_free(p7i->issuer_and_serial->serial);-
536 if (!(p7i->issuer_and_serial->serial =
!(p7i->issuer_...Number(x509)))Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • pkcs7test
0-1
537 ASN1_STRING_dup(X509_get_serialNumber(x509))))
!(p7i->issuer_...Number(x509)))Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • pkcs7test
0-1
538 return 0;
never executed: return 0;
0
539-
540 pkey = X509_get_pubkey(x509);-
541-
542 if (!pkey || !pkey->ameth || !pkey->ameth->pkey_ctrl) {
!pkeyDescription
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • pkcs7test
!pkey->amethDescription
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • pkcs7test
!pkey->ameth->pkey_ctrlDescription
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • pkcs7test
0-1
543 PKCS7error(PKCS7_R_ENCRYPTION_NOT_SUPPORTED_FOR_THIS_KEY_TYPE);-
544 goto err;
never executed: goto err;
0
545 }-
546-
547 ret = pkey->ameth->pkey_ctrl(pkey, ASN1_PKEY_CTRL_PKCS7_ENCRYPT,-
548 0, p7i);-
549 if (ret == -2) {
ret == -2Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • pkcs7test
0-1
550 PKCS7error(PKCS7_R_ENCRYPTION_NOT_SUPPORTED_FOR_THIS_KEY_TYPE);-
551 goto err;
never executed: goto err;
0
552 }-
553 if (ret <= 0) {
ret <= 0Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • pkcs7test
0-1
554 PKCS7error(PKCS7_R_ENCRYPTION_CTRL_FAILURE);-
555 goto err;
never executed: goto err;
0
556 }-
557-
558 EVP_PKEY_free(pkey);-
559-
560 CRYPTO_add(&x509->references, 1, CRYPTO_LOCK_X509);-
561 p7i->cert = x509;-
562-
563 return 1;
executed 1 time by 1 test: return 1;
Executed by:
  • pkcs7test
1
564-
565err:-
566 EVP_PKEY_free(pkey);-
567 return 0;
never executed: return 0;
0
568}-
569-
570X509 *-
571PKCS7_cert_from_signer_info(PKCS7 *p7, PKCS7_SIGNER_INFO *si)-
572{-
573 if (PKCS7_type_is_signed(p7))
(OBJ_obj2nid((...->type) == 22)Description
TRUEnever evaluated
FALSEnever evaluated
0
574 return(X509_find_by_issuer_and_serial(p7->d.sign->cert,
never executed: return(X509_find_by_issuer_and_serial(p7->d.sign->cert, si->issuer_and_serial->issuer, si->issuer_and_serial->serial));
0
575 si->issuer_and_serial->issuer,
never executed: return(X509_find_by_issuer_and_serial(p7->d.sign->cert, si->issuer_and_serial->issuer, si->issuer_and_serial->serial));
0
576 si->issuer_and_serial->serial));
never executed: return(X509_find_by_issuer_and_serial(p7->d.sign->cert, si->issuer_and_serial->issuer, si->issuer_and_serial->serial));
0
577 else-
578 return (NULL);
never executed: return ( ((void *)0) );
0
579}-
580-
581int-
582PKCS7_set_cipher(PKCS7 *p7, const EVP_CIPHER *cipher)-
583{-
584 int i;-
585 PKCS7_ENC_CONTENT *ec;-
586-
587 i = OBJ_obj2nid(p7->type);-
588 switch (i) {-
589 case NID_pkcs7_signedAndEnveloped:
never executed: case 24:
0
590 ec = p7->d.signed_and_enveloped->enc_data;-
591 break;
never executed: break;
0
592 case NID_pkcs7_enveloped:
executed 1 time by 1 test: case 23:
Executed by:
  • pkcs7test
1
593 ec = p7->d.enveloped->enc_data;-
594 break;
executed 1 time by 1 test: break;
Executed by:
  • pkcs7test
1
595 default:
never executed: default:
0
596 PKCS7error(PKCS7_R_WRONG_CONTENT_TYPE);-
597 return (0);
never executed: return (0);
0
598 }-
599-
600 /* Check cipher OID exists and has data in it*/-
601 i = EVP_CIPHER_type(cipher);-
602 if (i == NID_undef) {
i == 0Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • pkcs7test
0-1
603 PKCS7error(PKCS7_R_CIPHER_HAS_NO_OBJECT_IDENTIFIER);-
604 return (0);
never executed: return (0);
0
605 }-
606-
607 ec->cipher = cipher;-
608 return 1;
executed 1 time by 1 test: return 1;
Executed by:
  • pkcs7test
1
609}-
610-
611int-
612PKCS7_stream(unsigned char ***boundary, PKCS7 *p7)-
613{-
614 ASN1_OCTET_STRING *os = NULL;-
615-
616 switch (OBJ_obj2nid(p7->type)) {-
617 case NID_pkcs7_data:
never executed: case 21:
0
618 os = p7->d.data;-
619 break;
never executed: break;
0
620-
621 case NID_pkcs7_signedAndEnveloped:
never executed: case 24:
0
622 os = p7->d.signed_and_enveloped->enc_data->enc_data;-
623 if (os == NULL) {
os == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
624 os = ASN1_OCTET_STRING_new();-
625 p7->d.signed_and_enveloped->enc_data->enc_data = os;-
626 }
never executed: end of block
0
627 break;
never executed: break;
0
628-
629 case NID_pkcs7_enveloped:
never executed: case 23:
0
630 os = p7->d.enveloped->enc_data->enc_data;-
631 if (os == NULL) {
os == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
632 os = ASN1_OCTET_STRING_new();-
633 p7->d.enveloped->enc_data->enc_data = os;-
634 }
never executed: end of block
0
635 break;
never executed: break;
0
636-
637 case NID_pkcs7_signed:
never executed: case 22:
0
638 os = p7->d.sign->contents->d.data;-
639 break;
never executed: break;
0
640-
641 default:
never executed: default:
0
642 os = NULL;-
643 break;
never executed: break;
0
644 }-
645-
646 if (os == NULL)
os == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
647 return 0;
never executed: return 0;
0
648-
649 os->flags |= ASN1_STRING_FLAG_NDEF;-
650 *boundary = &os->data;-
651-
652 return 1;
never executed: return 1;
0
653}-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.2.2