]> git.ipfire.org Git - thirdparty/openssl.git/blame - apps/info.c
Rework the provider digest constructor to provide implementation get_params
[thirdparty/openssl.git] / apps / info.c
CommitLineData
0109e030
RL
1/*
2 * Copyright 2019 The OpenSSL Project Authors. All Rights Reserved.
3 *
4 * Licensed under the Apache License 2.0 (the "License"). You may not use
5 * this file except in compliance with the License. You can obtain a copy
6 * in the file LICENSE in the source distribution or at
7 * https://www.openssl.org/source/license.html
8 */
9
10#include <openssl/crypto.h>
11#include "apps.h"
12#include "progs.h"
13
14typedef enum OPTION_choice {
15 OPT_ERR = -1, OPT_EOF = 0, OPT_HELP,
16 OPT_CONFIGDIR, OPT_ENGINESDIR, OPT_MODULESDIR, OPT_DSOEXT, OPT_DIRNAMESEP,
17 OPT_LISTSEP
18} OPTION_CHOICE;
19
20const OPTIONS info_options[] = {
21 {"help", OPT_HELP, '-', "Display this summary"},
22 {"configdir", OPT_CONFIGDIR, '-', "Default configuration file directory"},
23 {"c", OPT_CONFIGDIR, '-', "Default configuration file directory"},
24 {"enginesdir", OPT_ENGINESDIR, '-', "Default engine module directory"},
25 {"e", OPT_ENGINESDIR, '-', "Default engine module directory"},
26 {"modulesdir", OPT_ENGINESDIR, '-',
27 "Default module directory (other than engine modules)"},
28 {"m", OPT_ENGINESDIR, '-',
29 "Default module directory (other than engine modules)"},
30 {"dsoext", OPT_DSOEXT, '-', "Configured extension for modules"},
31 {"dirnamesep", OPT_DIRNAMESEP, '-', "Directory-filename separator"},
32 {"listsep", OPT_LISTSEP, '-', "List separator character"},
33 {NULL}
34};
35
36int info_main(int argc, char **argv)
37{
38 int ret = 1, dirty = 0, type = 0;
39 char *prog;
40 OPTION_CHOICE o;
41
42 prog = opt_init(argc, argv, info_options);
43 while ((o = opt_next()) != OPT_EOF) {
44 switch (o) {
0dc6bf3c 45 default:
0109e030
RL
46opthelp:
47 BIO_printf(bio_err, "%s: Use -help for summary.\n", prog);
48 goto end;
49 case OPT_HELP:
50 opt_help(info_options);
51 ret = 0;
52 goto end;
53 case OPT_CONFIGDIR:
54 type = OPENSSL_INFO_CONFIG_DIR;
55 dirty++;
56 break;
57 case OPT_ENGINESDIR:
58 type = OPENSSL_INFO_ENGINES_DIR;
59 dirty++;
60 break;
61 case OPT_MODULESDIR:
62 type = OPENSSL_INFO_MODULES_DIR;
63 dirty++;
64 break;
65 case OPT_DSOEXT:
66 type = OPENSSL_INFO_DSO_EXTENSION;
67 dirty++;
68 break;
69 case OPT_DIRNAMESEP:
70 type = OPENSSL_INFO_DIR_FILENAME_SEPARATOR;
71 dirty++;
72 break;
73 case OPT_LISTSEP:
74 type = OPENSSL_INFO_LIST_SEPARATOR;
75 dirty++;
76 break;
77 }
78 }
79 if (opt_num_rest() != 0) {
80 BIO_printf(bio_err, "%s: Extra parameters given.\n", prog);
81 goto opthelp;
82 }
83 if (dirty > 1) {
84 BIO_printf(bio_err, "%s: Only one item allowed\n", prog);
85 goto opthelp;
86 }
87 if (dirty == 0) {
88 BIO_printf(bio_err, "%s: No items chosen\n", prog);
89 goto opthelp;
90 }
91
92 BIO_printf(bio_out, "%s\n", OPENSSL_info(type));
93 ret = 0;
94 end:
95 return ret;
96}