Annotation of src/usr.bin/openssl/version.c, Revision 1.12
1.12 ! tb 1: /* $OpenBSD: version.c,v 1.11 2023/03/06 14:32:06 tb Exp $ */
1.1 jsing 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: * Copyright (c) 1998-2001 The OpenSSL Project. All rights reserved.
60: *
61: * Redistribution and use in source and binary forms, with or without
62: * modification, are permitted provided that the following conditions
63: * are met:
64: *
65: * 1. Redistributions of source code must retain the above copyright
66: * notice, this list of conditions and the following disclaimer.
67: *
68: * 2. Redistributions in binary form must reproduce the above copyright
69: * notice, this list of conditions and the following disclaimer in
70: * the documentation and/or other materials provided with the
71: * distribution.
72: *
73: * 3. All advertising materials mentioning features or use of this
74: * software must display the following acknowledgment:
75: * "This product includes software developed by the OpenSSL Project
76: * for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
77: *
78: * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
79: * endorse or promote products derived from this software without
80: * prior written permission. For written permission, please contact
81: * openssl-core@openssl.org.
82: *
83: * 5. Products derived from this software may not be called "OpenSSL"
84: * nor may "OpenSSL" appear in their names without prior written
85: * permission of the OpenSSL Project.
86: *
87: * 6. Redistributions of any form whatsoever must retain the following
88: * acknowledgment:
89: * "This product includes software developed by the OpenSSL Project
90: * for use in the OpenSSL Toolkit (http://www.openssl.org/)"
91: *
92: * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
93: * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
94: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
95: * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
96: * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
97: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
98: * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
99: * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
100: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
101: * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
102: * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
103: * OF THE POSSIBILITY OF SUCH DAMAGE.
104: * ====================================================================
105: *
106: * This product includes cryptographic software written by Eric Young
107: * (eay@cryptsoft.com). This product includes software written by Tim
108: * Hudson (tjh@cryptsoft.com).
109: *
110: */
111:
112: #include <stdio.h>
113: #include <stdlib.h>
114: #include <string.h>
115:
116: #include "apps.h"
117:
118: #include <openssl/bn.h>
119: #include <openssl/crypto.h>
120: #include <openssl/evp.h>
121:
122: #ifndef OPENSSL_NO_BF
123: #include <openssl/blowfish.h>
124: #endif
125:
126: #ifndef OPENSSL_NO_DES
127: #include <openssl/des.h>
128: #endif
129:
130: #ifndef OPENSSL_NO_IDEA
131: #include <openssl/idea.h>
132: #endif
133:
134: #ifndef OPENSSL_NO_RC4
135: #include <openssl/rc4.h>
136: #endif
137:
1.2 jsing 138: static struct {
139: int cflags;
140: int date;
141: int dir;
142: int options;
143: int platform;
144: int version;
1.11 tb 145: } cfg;
1.2 jsing 146:
147: static int
1.4 jsing 148: version_all_opts(void)
1.2 jsing 149: {
1.11 tb 150: cfg.cflags = 1;
151: cfg.date = 1;
152: cfg.dir= 1;
153: cfg.options = 1;
154: cfg.platform = 1;
155: cfg.version = 1;
1.2 jsing 156:
157: return (0);
158: }
159:
1.9 guenther 160: static const struct option version_options[] = {
1.2 jsing 161: {
162: .name = "a",
163: .desc = "All information (same as setting all other flags)",
164: .type = OPTION_FUNC,
1.4 jsing 165: .opt.func = version_all_opts,
1.2 jsing 166: },
167: {
168: .name = "b",
169: .desc = "Date the current version of OpenSSL was built",
170: .type = OPTION_FLAG,
1.11 tb 171: .opt.flag = &cfg.date,
1.2 jsing 172: },
173: {
174: .name = "d",
175: .desc = "OPENSSLDIR value",
176: .type = OPTION_FLAG,
1.11 tb 177: .opt.flag = &cfg.dir,
1.2 jsing 178: },
179: {
180: .name = "f",
181: .desc = "Compilation flags",
182: .type = OPTION_FLAG,
1.11 tb 183: .opt.flag = &cfg.cflags,
1.2 jsing 184: },
185: {
186: .name = "o",
187: .type = OPTION_FLAG,
1.11 tb 188: .opt.flag = &cfg.options,
1.2 jsing 189: },
190: {
191: .name = "p",
192: .desc = "Platform settings",
193: .type = OPTION_FLAG,
1.11 tb 194: .opt.flag = &cfg.platform,
1.2 jsing 195: },
196: {
197: .name = "v",
198: .desc = "Current OpenSSL version",
199: .type = OPTION_FLAG,
1.11 tb 200: .opt.flag = &cfg.version,
1.2 jsing 201: },
1.3 bcook 202: {NULL},
1.2 jsing 203: };
204:
205: static void
206: version_usage(void)
207: {
1.12 ! tb 208: fprintf(stderr, "usage: version [-abdfpv]\n");
1.2 jsing 209: options_usage(version_options);
210: }
1.1 jsing 211:
212: int
213: version_main(int argc, char **argv)
214: {
1.10 joshua 215: if (pledge("stdio", NULL) == -1) {
216: perror("pledge");
217: exit(1);
1.7 doug 218: }
219:
1.11 tb 220: memset(&cfg, 0, sizeof(cfg));
1.2 jsing 221:
1.5 jsing 222: if (options_parse(argc, argv, version_options, NULL, NULL) != 0) {
1.2 jsing 223: version_usage();
224: return (1);
225: }
1.1 jsing 226:
227: if (argc == 1)
1.11 tb 228: cfg.version = 1;
1.1 jsing 229:
1.11 tb 230: if (cfg.version) {
1.1 jsing 231: if (SSLeay() == SSLEAY_VERSION_NUMBER) {
232: printf("%s\n", SSLeay_version(SSLEAY_VERSION));
233: } else {
234: printf("%s (Library: %s)\n",
235: OPENSSL_VERSION_TEXT,
236: SSLeay_version(SSLEAY_VERSION));
237: }
238: }
1.11 tb 239: if (cfg.date)
1.1 jsing 240: printf("%s\n", SSLeay_version(SSLEAY_BUILT_ON));
1.11 tb 241: if (cfg.platform)
1.1 jsing 242: printf("%s\n", SSLeay_version(SSLEAY_PLATFORM));
1.11 tb 243: if (cfg.cflags)
1.1 jsing 244: printf("%s\n", SSLeay_version(SSLEAY_CFLAGS));
1.11 tb 245: if (cfg.dir)
1.1 jsing 246: printf("%s\n", SSLeay_version(SSLEAY_DIR));
247:
1.2 jsing 248: return (0);
1.1 jsing 249: }