OpenCoverage

ts_verify_ctx.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/libressl/src/crypto/ts/ts_verify_ctx.c
Source codeSwitch to Preprocessed file
LineSourceCount
1/* $OpenBSD: ts_verify_ctx.c,v 1.9 2017/01/29 17:49:23 beck Exp $ */-
2/* Written by Zoltan Glozik (zglozik@stones.com) for the OpenSSL-
3 * project 2003.-
4 */-
5/* ====================================================================-
6 * Copyright (c) 2006 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 <string.h>-
60-
61#include <openssl/err.h>-
62#include <openssl/objects.h>-
63#include <openssl/ts.h>-
64-
65TS_VERIFY_CTX *-
66TS_VERIFY_CTX_new(void)-
67{-
68 TS_VERIFY_CTX *ctx = calloc(1, sizeof(TS_VERIFY_CTX));-
69-
70 if (!ctx)
!ctxDescription
TRUEnever evaluated
FALSEnever evaluated
0
71 TSerror(ERR_R_MALLOC_FAILURE);
never executed: ERR_put_error(47,(0xfff),((1|64)),__FILE__,71);
0
72-
73 return ctx;
never executed: return ctx;
0
74}-
75-
76void-
77TS_VERIFY_CTX_init(TS_VERIFY_CTX *ctx)-
78{-
79 memset(ctx, 0, sizeof(TS_VERIFY_CTX));-
80}
never executed: end of block
0
81-
82void-
83TS_VERIFY_CTX_free(TS_VERIFY_CTX *ctx)-
84{-
85 if (!ctx)
!ctxDescription
TRUEevaluated 1 time by 1 test
Evaluated by:
  • freenull
FALSEnever evaluated
0-1
86 return;
executed 1 time by 1 test: return;
Executed by:
  • freenull
1
87-
88 TS_VERIFY_CTX_cleanup(ctx);-
89 free(ctx);-
90}
never executed: end of block
0
91-
92void-
93TS_VERIFY_CTX_cleanup(TS_VERIFY_CTX *ctx)-
94{-
95 if (!ctx)
!ctxDescription
TRUEnever evaluated
FALSEnever evaluated
0
96 return;
never executed: return;
0
97-
98 X509_STORE_free(ctx->store);-
99 sk_X509_pop_free(ctx->certs, X509_free);-
100-
101 ASN1_OBJECT_free(ctx->policy);-
102-
103 X509_ALGOR_free(ctx->md_alg);-
104 free(ctx->imprint);-
105-
106 BIO_free_all(ctx->data);-
107-
108 ASN1_INTEGER_free(ctx->nonce);-
109-
110 GENERAL_NAME_free(ctx->tsa_name);-
111-
112 TS_VERIFY_CTX_init(ctx);-
113}
never executed: end of block
0
114-
115TS_VERIFY_CTX *-
116TS_REQ_to_TS_VERIFY_CTX(TS_REQ *req, TS_VERIFY_CTX *ctx)-
117{-
118 TS_VERIFY_CTX *ret = ctx;-
119 ASN1_OBJECT *policy;-
120 TS_MSG_IMPRINT *imprint;-
121 X509_ALGOR *md_alg;-
122 ASN1_OCTET_STRING *msg;-
123 const ASN1_INTEGER *nonce;-
124-
125 if (ret)
retDescription
TRUEnever evaluated
FALSEnever evaluated
0
126 TS_VERIFY_CTX_cleanup(ret);
never executed: TS_VERIFY_CTX_cleanup(ret);
0
127 else if (!(ret = TS_VERIFY_CTX_new()))
!(ret = TS_VERIFY_CTX_new())Description
TRUEnever evaluated
FALSEnever evaluated
0
128 return NULL;
never executed: return ((void *)0) ;
0
129-
130 /* Setting flags. */-
131 ret->flags = TS_VFY_ALL_IMPRINT & ~(TS_VFY_TSA_NAME | TS_VFY_SIGNATURE);-
132-
133 /* Setting policy. */-
134 if ((policy = TS_REQ_get_policy_id(req)) != NULL) {
(policy = TS_R...!= ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
135 if (!(ret->policy = OBJ_dup(policy)))
!(ret->policy ...J_dup(policy))Description
TRUEnever evaluated
FALSEnever evaluated
0
136 goto err;
never executed: goto err;
0
137 } else
never executed: end of block
0
138 ret->flags &= ~TS_VFY_POLICY;
never executed: ret->flags &= ~(1u << 2);
0
139-
140 /* Setting md_alg, imprint and imprint_len. */-
141 imprint = TS_REQ_get_msg_imprint(req);-
142 md_alg = TS_MSG_IMPRINT_get_algo(imprint);-
143 if (!(ret->md_alg = X509_ALGOR_dup(md_alg)))
!(ret->md_alg ...R_dup(md_alg))Description
TRUEnever evaluated
FALSEnever evaluated
0
144 goto err;
never executed: goto err;
0
145 msg = TS_MSG_IMPRINT_get_msg(imprint);-
146 ret->imprint_len = ASN1_STRING_length(msg);-
147 if (!(ret->imprint = malloc(ret->imprint_len)))
!(ret->imprint...>imprint_len))Description
TRUEnever evaluated
FALSEnever evaluated
0
148 goto err;
never executed: goto err;
0
149 memcpy(ret->imprint, ASN1_STRING_data(msg), ret->imprint_len);-
150-
151 /* Setting nonce. */-
152 if ((nonce = TS_REQ_get_nonce(req)) != NULL) {
(nonce = TS_RE...!= ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
153 if (!(ret->nonce = ASN1_INTEGER_dup(nonce)))
!(ret->nonce =...ER_dup(nonce))Description
TRUEnever evaluated
FALSEnever evaluated
0
154 goto err;
never executed: goto err;
0
155 } else
never executed: end of block
0
156 ret->flags &= ~TS_VFY_NONCE;
never executed: ret->flags &= ~(1u << 5);
0
157-
158 return ret;
never executed: return ret;
0
159-
160err:-
161 if (ctx)
ctxDescription
TRUEnever evaluated
FALSEnever evaluated
0
162 TS_VERIFY_CTX_cleanup(ctx);
never executed: TS_VERIFY_CTX_cleanup(ctx);
0
163 else-
164 TS_VERIFY_CTX_free(ret);
never executed: TS_VERIFY_CTX_free(ret);
0
165 return NULL;
never executed: return ((void *)0) ;
0
166}-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.2.2