OpenCoverage

p12_utl.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/libressl/src/crypto/pkcs12/p12_utl.c
Source codeSwitch to Preprocessed file
LineSourceCount
1/* $OpenBSD: p12_utl.c,v 1.16 2018/05/30 15:32:11 tb Exp $ */-
2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL-
3 * project 1999.-
4 */-
5/* ====================================================================-
6 * Copyright (c) 1999 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 <limits.h>-
60#include <stdio.h>-
61#include <string.h>-
62-
63#include <openssl/pkcs12.h>-
64-
65/* Cheap and nasty Unicode stuff */-
66-
67unsigned char *-
68OPENSSL_asc2uni(const char *asc, int asclen, unsigned char **uni, int *unilen)-
69{-
70 size_t ulen, i;-
71 unsigned char *unitmp;-
72-
73 if (asclen < 0)
asclen < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
74 ulen = strlen(asc);
never executed: ulen = strlen(asc);
0
75 else-
76 ulen = (size_t)asclen;
never executed: ulen = (size_t)asclen;
0
77 ulen++;-
78 if (ulen == 0) /* unlikely overflow */
ulen == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
79 return NULL;
never executed: return ((void *)0) ;
0
80 if ((unitmp = reallocarray(NULL, ulen, 2)) == NULL)
(unitmp = real...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
81 return NULL;
never executed: return ((void *)0) ;
0
82 ulen *= 2;-
83 /* XXX This interface ought to use unsigned types */-
84 if (ulen > INT_MAX) {
ulen > 0x7fffffffDescription
TRUEnever evaluated
FALSEnever evaluated
0
85 free(unitmp);-
86 return NULL;
never executed: return ((void *)0) ;
0
87 }-
88 for (i = 0; i < ulen - 2; i += 2) {
i < ulen - 2Description
TRUEnever evaluated
FALSEnever evaluated
0
89 unitmp[i] = 0;-
90 unitmp[i + 1] = *asc++;-
91 }
never executed: end of block
0
92 /* Make result double-NUL terminated */-
93 unitmp[ulen - 2] = 0;-
94 unitmp[ulen - 1] = 0;-
95 if (unilen)
unilenDescription
TRUEnever evaluated
FALSEnever evaluated
0
96 *unilen = ulen;
never executed: *unilen = ulen;
0
97 if (uni)
uniDescription
TRUEnever evaluated
FALSEnever evaluated
0
98 *uni = unitmp;
never executed: *uni = unitmp;
0
99 return unitmp;
never executed: return unitmp;
0
100}-
101-
102char *-
103OPENSSL_uni2asc(const unsigned char *uni, int unilen)-
104{-
105 size_t asclen, u16len, i;-
106 char *asctmp;-
107-
108 if (unilen < 0)
unilen < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
109 return NULL;
never executed: return ((void *)0) ;
0
110-
111 asclen = u16len = (size_t)unilen / 2;-
112 /* If no terminating NUL, allow for one */-
113 if (unilen == 0 || uni[unilen - 1] != '\0')
unilen == 0Description
TRUEnever evaluated
FALSEnever evaluated
uni[unilen - 1] != '\0'Description
TRUEnever evaluated
FALSEnever evaluated
0
114 asclen++;
never executed: asclen++;
0
115 if ((asctmp = malloc(asclen)) == NULL)
(asctmp = mall...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
116 return NULL;
never executed: return ((void *)0) ;
0
117 /* Skip first zero byte */-
118 uni++;-
119 for (i = 0; i < u16len; i++) {
i < u16lenDescription
TRUEnever evaluated
FALSEnever evaluated
0
120 asctmp[i] = *uni;-
121 uni += 2;-
122 }
never executed: end of block
0
123 asctmp[asclen - 1] = '\0';-
124 return asctmp;
never executed: return asctmp;
0
125}-
126-
127int-
128i2d_PKCS12_bio(BIO *bp, PKCS12 *p12)-
129{-
130 return ASN1_item_i2d_bio(&PKCS12_it, bp, p12);
never executed: return ASN1_item_i2d_bio(&PKCS12_it, bp, p12);
0
131}-
132-
133int-
134i2d_PKCS12_fp(FILE *fp, PKCS12 *p12)-
135{-
136 return ASN1_item_i2d_fp(&PKCS12_it, fp, p12);
never executed: return ASN1_item_i2d_fp(&PKCS12_it, fp, p12);
0
137}-
138-
139PKCS12 *-
140d2i_PKCS12_bio(BIO *bp, PKCS12 **p12)-
141{-
142 return ASN1_item_d2i_bio(&PKCS12_it, bp, p12);
never executed: return ASN1_item_d2i_bio(&PKCS12_it, bp, p12);
0
143}-
144-
145PKCS12 *-
146d2i_PKCS12_fp(FILE *fp, PKCS12 **p12)-
147{-
148 return ASN1_item_d2i_fp(&PKCS12_it, fp, p12);
never executed: return ASN1_item_d2i_fp(&PKCS12_it, fp, p12);
0
149}-
150-
151PKCS12_SAFEBAG *-
152PKCS12_x5092certbag(X509 *x509)-
153{-
154 return PKCS12_item_pack_safebag(x509, &X509_it,
never executed: return PKCS12_item_pack_safebag(x509, &X509_it, 158, 152);
0
155 NID_x509Certificate, NID_certBag);
never executed: return PKCS12_item_pack_safebag(x509, &X509_it, 158, 152);
0
156}-
157-
158PKCS12_SAFEBAG *-
159PKCS12_x509crl2certbag(X509_CRL *crl)-
160{-
161 return PKCS12_item_pack_safebag(crl, &X509_CRL_it,
never executed: return PKCS12_item_pack_safebag(crl, &X509_CRL_it, 160, 153);
0
162 NID_x509Crl, NID_crlBag);
never executed: return PKCS12_item_pack_safebag(crl, &X509_CRL_it, 160, 153);
0
163}-
164-
165X509 *-
166PKCS12_certbag2x509(PKCS12_SAFEBAG *bag)-
167{-
168 if (OBJ_obj2nid(bag->type) != NID_certBag)
OBJ_obj2nid(bag->type) != 152Description
TRUEnever evaluated
FALSEnever evaluated
0
169 return NULL;
never executed: return ((void *)0) ;
0
170 if (OBJ_obj2nid(bag->value.bag->type) != NID_x509Certificate)
OBJ_obj2nid(ba...->type) != 158Description
TRUEnever evaluated
FALSEnever evaluated
0
171 return NULL;
never executed: return ((void *)0) ;
0
172 return ASN1_item_unpack(bag->value.bag->value.octet,
never executed: return ASN1_item_unpack(bag->value.bag->value.octet, &X509_it);
0
173 &X509_it);
never executed: return ASN1_item_unpack(bag->value.bag->value.octet, &X509_it);
0
174}-
175-
176X509_CRL *-
177PKCS12_certbag2x509crl(PKCS12_SAFEBAG *bag)-
178{-
179 if (OBJ_obj2nid(bag->type) != NID_crlBag)
OBJ_obj2nid(bag->type) != 153Description
TRUEnever evaluated
FALSEnever evaluated
0
180 return NULL;
never executed: return ((void *)0) ;
0
181 if (OBJ_obj2nid(bag->value.bag->type) != NID_x509Crl)
OBJ_obj2nid(ba...->type) != 160Description
TRUEnever evaluated
FALSEnever evaluated
0
182 return NULL;
never executed: return ((void *)0) ;
0
183 return ASN1_item_unpack(bag->value.bag->value.octet,
never executed: return ASN1_item_unpack(bag->value.bag->value.octet, &X509_CRL_it);
0
184 &X509_CRL_it);
never executed: return ASN1_item_unpack(bag->value.bag->value.octet, &X509_CRL_it);
0
185}-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.2.2