OpenCoverage

pk7_attr.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/libressl/src/crypto/pkcs7/pk7_attr.c
Source codeSwitch to Preprocessed file
LineSourceCount
1/* $OpenBSD: pk7_attr.c,v 1.12 2017/01/29 17:49:23 beck Exp $ */-
2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL-
3 * project 2001.-
4 */-
5/* ====================================================================-
6 * Copyright (c) 2001-2004 The OpenSSL Project. All rights reserved.-
7 *-
8 * Redistribution and use in source and binary forms, with or without-
9 * modification, are permitted provided that the following conditions-
10 * are met:-
11 *-
12 * 1. Redistributions of source code must retain the above copyright-
13 * notice, this list of conditions and the following disclaimer.-
14 *-
15 * 2. Redistributions in binary form must reproduce the above copyright-
16 * notice, this list of conditions and the following disclaimer in-
17 * the documentation and/or other materials provided with the-
18 * distribution.-
19 *-
20 * 3. All advertising materials mentioning features or use of this-
21 * software must display the following acknowledgment:-
22 * "This product includes software developed by the OpenSSL Project-
23 * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"-
24 *-
25 * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to-
26 * endorse or promote products derived from this software without-
27 * prior written permission. For written permission, please contact-
28 * licensing@OpenSSL.org.-
29 *-
30 * 5. Products derived from this software may not be called "OpenSSL"-
31 * nor may "OpenSSL" appear in their names without prior written-
32 * permission of the OpenSSL Project.-
33 *-
34 * 6. Redistributions of any form whatsoever must retain the following-
35 * acknowledgment:-
36 * "This product includes software developed by the OpenSSL Project-
37 * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"-
38 *-
39 * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY-
40 * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE-
41 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR-
42 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR-
43 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,-
44 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT-
45 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;-
46 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)-
47 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,-
48 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)-
49 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED-
50 * OF THE POSSIBILITY OF SUCH DAMAGE.-
51 * ====================================================================-
52 *-
53 * This product includes cryptographic software written by Eric Young-
54 * (eay@cryptsoft.com). This product includes software written by Tim-
55 * Hudson (tjh@cryptsoft.com).-
56 *-
57 */-
58-
59#include <stdio.h>-
60#include <stdlib.h>-
61#include <openssl/bio.h>-
62#include <openssl/asn1.h>-
63#include <openssl/asn1t.h>-
64#include <openssl/pem.h>-
65#include <openssl/pkcs7.h>-
66#include <openssl/x509.h>-
67#include <openssl/err.h>-
68-
69int-
70PKCS7_add_attrib_smimecap(PKCS7_SIGNER_INFO *si, STACK_OF(X509_ALGOR) *cap)-
71{-
72 ASN1_STRING *seq;-
73 if (!(seq = ASN1_STRING_new())) {
!(seq = ASN1_STRING_new())Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • pkcs7test
0-2
74 PKCS7error(ERR_R_MALLOC_FAILURE);-
75 return 0;
never executed: return 0;
0
76 }-
77 seq->length = ASN1_item_i2d((ASN1_VALUE *)cap, &seq->data,-
78 &X509_ALGORS_it);-
79 return PKCS7_add_signed_attribute(si, NID_SMIMECapabilities,
executed 2 times by 1 test: return PKCS7_add_signed_attribute(si, 167, 16, seq);
Executed by:
  • pkcs7test
2
80 V_ASN1_SEQUENCE, seq);
executed 2 times by 1 test: return PKCS7_add_signed_attribute(si, 167, 16, seq);
Executed by:
  • pkcs7test
2
81}-
82-
83STACK_OF(X509_ALGOR) *-
84PKCS7_get_smimecap(PKCS7_SIGNER_INFO *si)-
85{-
86 ASN1_TYPE *cap;-
87 const unsigned char *p;-
88-
89 cap = PKCS7_get_signed_attribute(si, NID_SMIMECapabilities);-
90 if (!cap || (cap->type != V_ASN1_SEQUENCE))
!capDescription
TRUEnever evaluated
FALSEnever evaluated
(cap->type != 16)Description
TRUEnever evaluated
FALSEnever evaluated
0
91 return NULL;
never executed: return ((void *)0) ;
0
92 p = cap->value.sequence->data;-
93 return (STACK_OF(X509_ALGOR) *)
never executed: return (struct stack_st_X509_ALGOR *) ASN1_item_d2i( ((void *)0) , &p, cap->value.sequence->length, &X509_ALGORS_it);
0
94 ASN1_item_d2i(NULL, &p, cap->value.sequence->length,
never executed: return (struct stack_st_X509_ALGOR *) ASN1_item_d2i( ((void *)0) , &p, cap->value.sequence->length, &X509_ALGORS_it);
0
95 &X509_ALGORS_it);
never executed: return (struct stack_st_X509_ALGOR *) ASN1_item_d2i( ((void *)0) , &p, cap->value.sequence->length, &X509_ALGORS_it);
0
96}-
97-
98/* Basic smime-capabilities OID and optional integer arg */-
99int-
100PKCS7_simple_smimecap(STACK_OF(X509_ALGOR) *sk, int nid, int arg)-
101{-
102 X509_ALGOR *alg;-
103-
104 if (!(alg = X509_ALGOR_new())) {
!(alg = X509_ALGOR_new())Description
TRUEnever evaluated
FALSEevaluated 24 times by 1 test
Evaluated by:
  • pkcs7test
0-24
105 PKCS7error(ERR_R_MALLOC_FAILURE);-
106 return 0;
never executed: return 0;
0
107 }-
108 ASN1_OBJECT_free(alg->algorithm);-
109 alg->algorithm = OBJ_nid2obj(nid);-
110 if (arg > 0) {
arg > 0Description
TRUEevaluated 6 times by 1 test
Evaluated by:
  • pkcs7test
FALSEevaluated 18 times by 1 test
Evaluated by:
  • pkcs7test
6-18
111 ASN1_INTEGER *nbit;-
112-
113 if (!(alg->parameter = ASN1_TYPE_new()))
!(alg->paramet...N1_TYPE_new())Description
TRUEnever evaluated
FALSEevaluated 6 times by 1 test
Evaluated by:
  • pkcs7test
0-6
114 goto err;
never executed: goto err;
0
115 if (!(nbit = ASN1_INTEGER_new()))
!(nbit = ASN1_INTEGER_new())Description
TRUEnever evaluated
FALSEevaluated 6 times by 1 test
Evaluated by:
  • pkcs7test
0-6
116 goto err;
never executed: goto err;
0
117 if (!ASN1_INTEGER_set(nbit, arg)) {
!ASN1_INTEGER_set(nbit, arg)Description
TRUEnever evaluated
FALSEevaluated 6 times by 1 test
Evaluated by:
  • pkcs7test
0-6
118 ASN1_INTEGER_free(nbit);-
119 goto err;
never executed: goto err;
0
120 }-
121 alg->parameter->value.integer = nbit;-
122 alg->parameter->type = V_ASN1_INTEGER;-
123 }
executed 6 times by 1 test: end of block
Executed by:
  • pkcs7test
6
124 if (sk_X509_ALGOR_push(sk, alg) == 0)
sk_push(((_STA...GOR*)0))) == 0Description
TRUEnever evaluated
FALSEevaluated 24 times by 1 test
Evaluated by:
  • pkcs7test
0-24
125 goto err;
never executed: goto err;
0
126 return 1;
executed 24 times by 1 test: return 1;
Executed by:
  • pkcs7test
24
127-
128err:-
129 PKCS7error(ERR_R_MALLOC_FAILURE);-
130 X509_ALGOR_free(alg);-
131 return 0;
never executed: return 0;
0
132}-
133-
134int-
135PKCS7_add_attrib_content_type(PKCS7_SIGNER_INFO *si, ASN1_OBJECT *coid)-
136{-
137 if (PKCS7_get_signed_attribute(si, NID_pkcs9_contentType))
PKCS7_get_sign...ribute(si, 50)Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • pkcs7test
0-2
138 return 0;
never executed: return 0;
0
139 if (!coid)
!coidDescription
TRUEevaluated 2 times by 1 test
Evaluated by:
  • pkcs7test
FALSEnever evaluated
0-2
140 coid = OBJ_nid2obj(NID_pkcs7_data);
executed 2 times by 1 test: coid = OBJ_nid2obj(21);
Executed by:
  • pkcs7test
2
141 return PKCS7_add_signed_attribute(si, NID_pkcs9_contentType,
executed 2 times by 1 test: return PKCS7_add_signed_attribute(si, 50, 6, coid);
Executed by:
  • pkcs7test
2
142 V_ASN1_OBJECT, coid);
executed 2 times by 1 test: return PKCS7_add_signed_attribute(si, 50, 6, coid);
Executed by:
  • pkcs7test
2
143}-
144-
145int-
146PKCS7_add0_attrib_signing_time(PKCS7_SIGNER_INFO *si, ASN1_TIME *t)-
147{-
148 if (!t && !(t = X509_gmtime_adj(NULL, 0))) {
!tDescription
TRUEevaluated 2 times by 1 test
Evaluated by:
  • pkcs7test
FALSEnever evaluated
!(t = X509_gmt...oid *)0) , 0))Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • pkcs7test
0-2
149 PKCS7error(ERR_R_MALLOC_FAILURE);-
150 return 0;
never executed: return 0;
0
151 }-
152 return PKCS7_add_signed_attribute(si, NID_pkcs9_signingTime,
executed 2 times by 1 test: return PKCS7_add_signed_attribute(si, 52, 23, t);
Executed by:
  • pkcs7test
2
153 V_ASN1_UTCTIME, t);
executed 2 times by 1 test: return PKCS7_add_signed_attribute(si, 52, 23, t);
Executed by:
  • pkcs7test
2
154}-
155-
156int-
157PKCS7_add1_attrib_digest(PKCS7_SIGNER_INFO *si, const unsigned char *md,-
158 int mdlen)-
159{-
160 ASN1_OCTET_STRING *os;-
161-
162 os = ASN1_OCTET_STRING_new();-
163 if (!os)
!osDescription
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • pkcs7test
0-2
164 return 0;
never executed: return 0;
0
165 if (!ASN1_STRING_set(os, md, mdlen) ||
!ASN1_STRING_s...os, md, mdlen)Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • pkcs7test
0-2
166 !PKCS7_add_signed_attribute(si, NID_pkcs9_messageDigest,
!PKCS7_add_sig...si, 51, 4, os)Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • pkcs7test
0-2
167 V_ASN1_OCTET_STRING, os)) {
!PKCS7_add_sig...si, 51, 4, os)Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • pkcs7test
0-2
168 ASN1_OCTET_STRING_free(os);-
169 return 0;
never executed: return 0;
0
170 }-
171 return 1;
executed 2 times by 1 test: return 1;
Executed by:
  • pkcs7test
2
172}-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.2.2