Imported Upstream version 3.0.21
[platform/upstream/gnutls.git] / src / certtool-args.c
1 /*   -*- buffer-read-only: t -*- vi: set ro:
2  *  
3  *  DO NOT EDIT THIS FILE   (certtool-args.c)
4  *  
5  *  It has been AutoGen-ed  July  3, 2012 at 12:05:38 AM by AutoGen 5.16
6  *  From the definitions    certtool-args.def
7  *  and the template file   options
8  *
9  * Generated from AutoOpts 36:4:11 templates.
10  *
11  *  AutoOpts is a copyrighted work.  This source file is not encumbered
12  *  by AutoOpts licensing, but is provided under the licensing terms chosen
13  *  by the certtool author or copyright holder.  AutoOpts is
14  *  licensed under the terms of the LGPL.  The redistributable library
15  *  (``libopts'') is licensed under the terms of either the LGPL or, at the
16  *  users discretion, the BSD license.  See the AutoOpts and/or libopts sources
17  *  for details.
18  *
19  * The certtool program is copyrighted and licensed
20  * under the following terms:
21  *
22  *  Copyright (C) 2000-2012 Free Software Foundation, all rights reserved.
23  *  This is free software. It is licensed for use, modification and
24  *  redistribution under the terms of the
25  *  GNU General Public License, version 3 or later
26  *      <http://gnu.org/licenses/gpl.html>
27  *
28  *  certtool is free software: you can redistribute it and/or modify it
29  *  under the terms of the GNU General Public License as published by the
30  *  Free Software Foundation, either version 3 of the License, or
31  *  (at your option) any later version.
32  *  
33  *  certtool is distributed in the hope that it will be useful, but
34  *  WITHOUT ANY WARRANTY; without even the implied warranty of
35  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
36  *  See the GNU General Public License for more details.
37  *  
38  *  You should have received a copy of the GNU General Public License along
39  *  with this program.  If not, see <http://www.gnu.org/licenses/>.
40  */
41
42 #ifndef __doxygen__
43 #define OPTION_CODE_COMPILE 1
44 #include "certtool-args.h"
45 #include <sys/types.h>
46
47 #include <limits.h>
48 #include <stdio.h>
49 #include <stdlib.h>
50 #include <errno.h>
51
52 #ifdef  __cplusplus
53 extern "C" {
54 #endif
55 extern FILE * option_usage_fp;
56
57 /* TRANSLATORS: choose the translation for option names wisely because you
58                 cannot ever change your mind. */
59 #define zCopyright      (certtool_opt_strs+0)
60 #define zLicenseDescrip (certtool_opt_strs+276)
61
62
63 #ifndef NULL
64 #  define NULL 0
65 #endif
66
67 /*
68  *  certtool option static const strings
69  */
70 static char const certtool_opt_strs[4597] =
71 /*     0 */ "certtool 3.0.21\n"
72             "Copyright (C) 2000-2012 Free Software Foundation, all rights reserved.\n"
73             "This is free software. It is licensed for use, modification and\n"
74             "redistribution under the terms of the\n"
75             "GNU General Public License, version 3 or later\n"
76             "    <http://gnu.org/licenses/gpl.html>\n\0"
77 /*   276 */ "certtool is free software: you can redistribute it and/or modify it under\n"
78             "the terms of the GNU General Public License as published by the Free\n"
79             "Software Foundation, either version 3 of the License, or (at your option)\n"
80             "any later version.\n\n"
81             "certtool is distributed in the hope that it will be useful, but WITHOUT ANY\n"
82             "WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS\n"
83             "FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more\n"
84             "details.\n\n"
85             "You should have received a copy of the GNU General Public License along\n"
86             "with this program.  If not, see <http://www.gnu.org/licenses/>.\n\0"
87 /*   881 */ "Enable debugging.\0"
88 /*   899 */ "DEBUG\0"
89 /*   905 */ "debug\0"
90 /*   911 */ "Input file\0"
91 /*   922 */ "INFILE\0"
92 /*   929 */ "infile\0"
93 /*   936 */ "Output file\0"
94 /*   948 */ "OUTFILE\0"
95 /*   956 */ "outfile\0"
96 /*   964 */ "Generate a self-signed certificate\0"
97 /*   999 */ "GENERATE_SELF_SIGNED\0"
98 /*  1020 */ "generate-self-signed\0"
99 /*  1041 */ "Generate a signed certificate\0"
100 /*  1071 */ "GENERATE_CERTIFICATE\0"
101 /*  1092 */ "generate-certificate\0"
102 /*  1113 */ "Generates a proxy certificate\0"
103 /*  1143 */ "GENERATE_PROXY\0"
104 /*  1158 */ "generate-proxy\0"
105 /*  1173 */ "Generate a CRL\0"
106 /*  1188 */ "GENERATE_CRL\0"
107 /*  1201 */ "generate-crl\0"
108 /*  1214 */ "Update a signed certificate\0"
109 /*  1242 */ "UPDATE_CERTIFICATE\0"
110 /*  1261 */ "update-certificate\0"
111 /*  1280 */ "Generate a private key\0"
112 /*  1303 */ "GENERATE_PRIVKEY\0"
113 /*  1320 */ "generate-privkey\0"
114 /*  1337 */ "Generate a PKCS #10 certificate request\0"
115 /*  1377 */ "GENERATE_REQUEST\0"
116 /*  1394 */ "generate-request\0"
117 /*  1411 */ "Verify a PEM encoded certificate chain.\0"
118 /*  1451 */ "VERIFY_CHAIN\0"
119 /*  1464 */ "verify-chain\0"
120 /*  1477 */ "Verify a PEM encoded certificate chain using a trusted list.\0"
121 /*  1538 */ "VERIFY\0"
122 /*  1545 */ "verify\0"
123 /*  1552 */ "Verify a CRL using a trusted list.\0"
124 /*  1587 */ "VERIFY_CRL\0"
125 /*  1598 */ "verify-crl\0"
126 /*  1609 */ "Generate PKCS #3 encoded Diffie-Hellman parameters.\0"
127 /*  1661 */ "GENERATE_DH_PARAMS\0"
128 /*  1680 */ "generate-dh-params\0"
129 /*  1699 */ "Get the included PKCS #3 encoded Diffie-Hellman parameters.\0"
130 /*  1759 */ "GET_DH_PARAMS\0"
131 /*  1773 */ "get-dh-params\0"
132 /*  1787 */ "Print information PKCS #3 encoded Diffie-Hellman parameters\0"
133 /*  1847 */ "DH_INFO\0"
134 /*  1855 */ "dh-info\0"
135 /*  1863 */ "Loads a private key file\0"
136 /*  1888 */ "LOAD_PRIVKEY\0"
137 /*  1901 */ "load-privkey\0"
138 /*  1914 */ "Loads a public key file\0"
139 /*  1938 */ "LOAD_PUBKEY\0"
140 /*  1950 */ "load-pubkey\0"
141 /*  1962 */ "Loads a certificate request file\0"
142 /*  1995 */ "LOAD_REQUEST\0"
143 /*  2008 */ "load-request\0"
144 /*  2021 */ "Loads a certificate file\0"
145 /*  2046 */ "LOAD_CERTIFICATE\0"
146 /*  2063 */ "load-certificate\0"
147 /*  2080 */ "Loads the certificate authority's private key file\0"
148 /*  2131 */ "LOAD_CA_PRIVKEY\0"
149 /*  2147 */ "load-ca-privkey\0"
150 /*  2163 */ "Loads the certificate authority's certificate file\0"
151 /*  2214 */ "LOAD_CA_CERTIFICATE\0"
152 /*  2234 */ "load-ca-certificate\0"
153 /*  2254 */ "Password to use\0"
154 /*  2270 */ "PASSWORD\0"
155 /*  2279 */ "password\0"
156 /*  2288 */ "Print information on the given certificate\0"
157 /*  2331 */ "CERTIFICATE_INFO\0"
158 /*  2348 */ "certificate-info\0"
159 /*  2365 */ "Print certificate's public key\0"
160 /*  2396 */ "CERTIFICATE_PUBKEY\0"
161 /*  2415 */ "certificate-pubkey\0"
162 /*  2434 */ "Print information on the given OpenPGP certificate\0"
163 /*  2485 */ "PGP_CERTIFICATE_INFO\0"
164 /*  2506 */ "pgp-certificate-info\0"
165 /*  2527 */ "Print information on the given OpenPGP keyring structure\0"
166 /*  2584 */ "PGP_RING_INFO\0"
167 /*  2598 */ "pgp-ring-info\0"
168 /*  2612 */ "Print information on the given CRL structure\0"
169 /*  2657 */ "CRL_INFO\0"
170 /*  2666 */ "crl-info\0"
171 /*  2675 */ "Print information on the given certificate request\0"
172 /*  2726 */ "CRQ_INFO\0"
173 /*  2735 */ "crq-info\0"
174 /*  2744 */ "Do not use extensions in certificate requests\0"
175 /*  2790 */ "NO_CRQ_EXTENSIONS\0"
176 /*  2808 */ "no-crq-extensions\0"
177 /*  2826 */ "Print information on a PKCS #12 structure\0"
178 /*  2868 */ "P12_INFO\0"
179 /*  2877 */ "p12-info\0"
180 /*  2886 */ "Print information on a PKCS #7 structure\0"
181 /*  2927 */ "P7_INFO\0"
182 /*  2935 */ "p7-info\0"
183 /*  2943 */ "Convert S/MIME to PKCS #7 structure\0"
184 /*  2979 */ "SMIME_TO_P7\0"
185 /*  2991 */ "smime-to-p7\0"
186 /*  3003 */ "Print information on a private key\0"
187 /*  3038 */ "KEY_INFO\0"
188 /*  3047 */ "key-info\0"
189 /*  3056 */ "Print information on an OpenPGP private key\0"
190 /*  3100 */ "PGP_KEY_INFO\0"
191 /*  3113 */ "pgp-key-info\0"
192 /*  3126 */ "Print information on a public key\0"
193 /*  3160 */ "PUBKEY_INFO\0"
194 /*  3172 */ "pubkey-info\0"
195 /*  3184 */ "Generate an X.509 version 1 certificate (with no extensions)\0"
196 /*  3245 */ "V1\0"
197 /*  3248 */ "v1\0"
198 /*  3251 */ "Generate a PKCS #12 structure\0"
199 /*  3281 */ "TO_P12\0"
200 /*  3288 */ "to-p12\0"
201 /*  3295 */ "Generate a PKCS #8 structure\0"
202 /*  3324 */ "TO_P8\0"
203 /*  3330 */ "to-p8\0"
204 /*  3336 */ "Use PKCS #8 format for private keys\0"
205 /*  3372 */ "PKCS8\0"
206 /*  3378 */ "pkcs8\0"
207 /*  3384 */ "Generate RSA key\0"
208 /*  3401 */ "RSA\0"
209 /*  3405 */ "rsa\0"
210 /*  3409 */ "Generate DSA key\0"
211 /*  3426 */ "DSA\0"
212 /*  3430 */ "dsa\0"
213 /*  3434 */ "Generate ECC (ECDSA) key\0"
214 /*  3459 */ "ECC\0"
215 /*  3463 */ "ecc\0"
216 /*  3467 */ "Hash algorithm to use for signing.\0"
217 /*  3502 */ "HASH\0"
218 /*  3507 */ "hash\0"
219 /*  3512 */ "Use DER format for input certificates and private keys.\0"
220 /*  3568 */ "INDER\0"
221 /*  3574 */ "no-inder\0"
222 /*  3583 */ "no\0"
223 /*  3586 */ "This is an alias for 'inder'\0"
224 /*  3615 */ "inraw\0"
225 /*  3621 */ "Use DER format for output certificates and private keys\0"
226 /*  3677 */ "OUTDER\0"
227 /*  3684 */ "no-outder\0"
228 /*  3694 */ "This is an alias for 'outder'\0"
229 /*  3724 */ "outraw\0"
230 /*  3731 */ "Specify the number of bits for key generate\0"
231 /*  3775 */ "BITS\0"
232 /*  3780 */ "bits\0"
233 /*  3785 */ "Specify the security level [low, legacy, normal, high, ultra].\0"
234 /*  3848 */ "SEC_PARAM\0"
235 /*  3858 */ "sec-param\0"
236 /*  3868 */ "No effect\0"
237 /*  3878 */ "DISABLE_QUICK_RANDOM\0"
238 /*  3899 */ "disable-quick-random\0"
239 /*  3920 */ "Template file to use for non-interactive operation\0"
240 /*  3971 */ "TEMPLATE\0"
241 /*  3980 */ "template\0"
242 /*  3989 */ "Cipher to use for PKCS #8 and #12 operations\0"
243 /*  4034 */ "PKCS_CIPHER\0"
244 /*  4046 */ "pkcs-cipher\0"
245 /*  4058 */ "Display extended usage information and exit\0"
246 /*  4102 */ "help\0"
247 /*  4107 */ "Extended usage information passed thru pager\0"
248 /*  4152 */ "more-help\0"
249 /*  4162 */ "Output version information and exit\0"
250 /*  4198 */ "version\0"
251 /*  4206 */ "CERTTOOL\0"
252 /*  4215 */ "certtool - GnuTLS PKCS #11 tool - Ver. 3.0.21\n"
253             "USAGE:  %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]...\n\0"
254 /*  4319 */ "bug-gnutls@gnu.org\0"
255 /*  4338 */ "\n\n\0"
256 /*  4341 */ "\n"
257             "Tool to parse and generate X.509 certificates, requests and private keys.\n"
258             "It can be used interactively or non interactively by specifying the\n"
259             "template command line option.\n\0"
260 /*  4515 */ "certtool 3.0.21\0"
261 /*  4531 */ "certtool [options] [url]\n"
262             "certtool --help for usage instructions.\n";
263
264 /*
265  *  debug option description:
266  */
267 #define DEBUG_DESC      (certtool_opt_strs+881)
268 #define DEBUG_NAME      (certtool_opt_strs+899)
269 #define DEBUG_name      (certtool_opt_strs+905)
270 #define DEBUG_FLAGS     (OPTST_DISABLED \
271         | OPTST_SET_ARGTYPE(OPARG_TYPE_NUMERIC))
272
273 /*
274  *  infile option description:
275  */
276 #define INFILE_DESC      (certtool_opt_strs+911)
277 #define INFILE_NAME      (certtool_opt_strs+922)
278 #define INFILE_name      (certtool_opt_strs+929)
279 #define INFILE_FLAGS     (OPTST_DISABLED \
280         | OPTST_SET_ARGTYPE(OPARG_TYPE_FILE))
281
282 /*
283  *  outfile option description:
284  */
285 #define OUTFILE_DESC      (certtool_opt_strs+936)
286 #define OUTFILE_NAME      (certtool_opt_strs+948)
287 #define OUTFILE_name      (certtool_opt_strs+956)
288 #define OUTFILE_FLAGS     (OPTST_DISABLED \
289         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
290
291 /*
292  *  generate-self-signed option description:
293  */
294 #define GENERATE_SELF_SIGNED_DESC      (certtool_opt_strs+964)
295 #define GENERATE_SELF_SIGNED_NAME      (certtool_opt_strs+999)
296 #define GENERATE_SELF_SIGNED_name      (certtool_opt_strs+1020)
297 #define GENERATE_SELF_SIGNED_FLAGS     (OPTST_DISABLED)
298
299 /*
300  *  generate-certificate option description:
301  */
302 #define GENERATE_CERTIFICATE_DESC      (certtool_opt_strs+1041)
303 #define GENERATE_CERTIFICATE_NAME      (certtool_opt_strs+1071)
304 #define GENERATE_CERTIFICATE_name      (certtool_opt_strs+1092)
305 #define GENERATE_CERTIFICATE_FLAGS     (OPTST_DISABLED)
306
307 /*
308  *  generate-proxy option description:
309  */
310 #define GENERATE_PROXY_DESC      (certtool_opt_strs+1113)
311 #define GENERATE_PROXY_NAME      (certtool_opt_strs+1143)
312 #define GENERATE_PROXY_name      (certtool_opt_strs+1158)
313 #define GENERATE_PROXY_FLAGS     (OPTST_DISABLED)
314
315 /*
316  *  generate-crl option description:
317  */
318 #define GENERATE_CRL_DESC      (certtool_opt_strs+1173)
319 #define GENERATE_CRL_NAME      (certtool_opt_strs+1188)
320 #define GENERATE_CRL_name      (certtool_opt_strs+1201)
321 #define GENERATE_CRL_FLAGS     (OPTST_DISABLED)
322
323 /*
324  *  update-certificate option description:
325  */
326 #define UPDATE_CERTIFICATE_DESC      (certtool_opt_strs+1214)
327 #define UPDATE_CERTIFICATE_NAME      (certtool_opt_strs+1242)
328 #define UPDATE_CERTIFICATE_name      (certtool_opt_strs+1261)
329 #define UPDATE_CERTIFICATE_FLAGS     (OPTST_DISABLED)
330
331 /*
332  *  generate-privkey option description:
333  */
334 #define GENERATE_PRIVKEY_DESC      (certtool_opt_strs+1280)
335 #define GENERATE_PRIVKEY_NAME      (certtool_opt_strs+1303)
336 #define GENERATE_PRIVKEY_name      (certtool_opt_strs+1320)
337 #define GENERATE_PRIVKEY_FLAGS     (OPTST_DISABLED)
338
339 /*
340  *  generate-request option description:
341  */
342 #define GENERATE_REQUEST_DESC      (certtool_opt_strs+1337)
343 #define GENERATE_REQUEST_NAME      (certtool_opt_strs+1377)
344 #define GENERATE_REQUEST_name      (certtool_opt_strs+1394)
345 #define GENERATE_REQUEST_FLAGS     (OPTST_DISABLED)
346
347 /*
348  *  verify-chain option description:
349  */
350 #define VERIFY_CHAIN_DESC      (certtool_opt_strs+1411)
351 #define VERIFY_CHAIN_NAME      (certtool_opt_strs+1451)
352 #define VERIFY_CHAIN_name      (certtool_opt_strs+1464)
353 #define VERIFY_CHAIN_FLAGS     (OPTST_DISABLED)
354
355 /*
356  *  verify option description with
357  *  "Must also have options" and "Incompatible options":
358  */
359 #define VERIFY_DESC      (certtool_opt_strs+1477)
360 #define VERIFY_NAME      (certtool_opt_strs+1538)
361 #define VERIFY_name      (certtool_opt_strs+1545)
362 static int const aVerifyMustList[] = {
363     INDEX_OPT_LOAD_CA_CERTIFICATE, NO_EQUIVALENT };
364 #define VERIFY_FLAGS     (OPTST_DISABLED)
365
366 /*
367  *  verify-crl option description with
368  *  "Must also have options" and "Incompatible options":
369  */
370 #define VERIFY_CRL_DESC      (certtool_opt_strs+1552)
371 #define VERIFY_CRL_NAME      (certtool_opt_strs+1587)
372 #define VERIFY_CRL_name      (certtool_opt_strs+1598)
373 static int const aVerify_CrlMustList[] = {
374     INDEX_OPT_LOAD_CA_CERTIFICATE, NO_EQUIVALENT };
375 #define VERIFY_CRL_FLAGS     (OPTST_DISABLED)
376
377 /*
378  *  generate-dh-params option description:
379  */
380 #define GENERATE_DH_PARAMS_DESC      (certtool_opt_strs+1609)
381 #define GENERATE_DH_PARAMS_NAME      (certtool_opt_strs+1661)
382 #define GENERATE_DH_PARAMS_name      (certtool_opt_strs+1680)
383 #define GENERATE_DH_PARAMS_FLAGS     (OPTST_DISABLED)
384
385 /*
386  *  get-dh-params option description:
387  */
388 #define GET_DH_PARAMS_DESC      (certtool_opt_strs+1699)
389 #define GET_DH_PARAMS_NAME      (certtool_opt_strs+1759)
390 #define GET_DH_PARAMS_name      (certtool_opt_strs+1773)
391 #define GET_DH_PARAMS_FLAGS     (OPTST_DISABLED)
392
393 /*
394  *  dh-info option description:
395  */
396 #define DH_INFO_DESC      (certtool_opt_strs+1787)
397 #define DH_INFO_NAME      (certtool_opt_strs+1847)
398 #define DH_INFO_name      (certtool_opt_strs+1855)
399 #define DH_INFO_FLAGS     (OPTST_DISABLED)
400
401 /*
402  *  load-privkey option description:
403  */
404 #define LOAD_PRIVKEY_DESC      (certtool_opt_strs+1863)
405 #define LOAD_PRIVKEY_NAME      (certtool_opt_strs+1888)
406 #define LOAD_PRIVKEY_name      (certtool_opt_strs+1901)
407 #define LOAD_PRIVKEY_FLAGS     (OPTST_DISABLED \
408         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
409
410 /*
411  *  load-pubkey option description:
412  */
413 #define LOAD_PUBKEY_DESC      (certtool_opt_strs+1914)
414 #define LOAD_PUBKEY_NAME      (certtool_opt_strs+1938)
415 #define LOAD_PUBKEY_name      (certtool_opt_strs+1950)
416 #define LOAD_PUBKEY_FLAGS     (OPTST_DISABLED \
417         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
418
419 /*
420  *  load-request option description:
421  */
422 #define LOAD_REQUEST_DESC      (certtool_opt_strs+1962)
423 #define LOAD_REQUEST_NAME      (certtool_opt_strs+1995)
424 #define LOAD_REQUEST_name      (certtool_opt_strs+2008)
425 #define LOAD_REQUEST_FLAGS     (OPTST_DISABLED \
426         | OPTST_SET_ARGTYPE(OPARG_TYPE_FILE))
427
428 /*
429  *  load-certificate option description:
430  */
431 #define LOAD_CERTIFICATE_DESC      (certtool_opt_strs+2021)
432 #define LOAD_CERTIFICATE_NAME      (certtool_opt_strs+2046)
433 #define LOAD_CERTIFICATE_name      (certtool_opt_strs+2063)
434 #define LOAD_CERTIFICATE_FLAGS     (OPTST_DISABLED \
435         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
436
437 /*
438  *  load-ca-privkey option description:
439  */
440 #define LOAD_CA_PRIVKEY_DESC      (certtool_opt_strs+2080)
441 #define LOAD_CA_PRIVKEY_NAME      (certtool_opt_strs+2131)
442 #define LOAD_CA_PRIVKEY_name      (certtool_opt_strs+2147)
443 #define LOAD_CA_PRIVKEY_FLAGS     (OPTST_DISABLED \
444         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
445
446 /*
447  *  load-ca-certificate option description:
448  */
449 #define LOAD_CA_CERTIFICATE_DESC      (certtool_opt_strs+2163)
450 #define LOAD_CA_CERTIFICATE_NAME      (certtool_opt_strs+2214)
451 #define LOAD_CA_CERTIFICATE_name      (certtool_opt_strs+2234)
452 #define LOAD_CA_CERTIFICATE_FLAGS     (OPTST_DISABLED \
453         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
454
455 /*
456  *  password option description:
457  */
458 #define PASSWORD_DESC      (certtool_opt_strs+2254)
459 #define PASSWORD_NAME      (certtool_opt_strs+2270)
460 #define PASSWORD_name      (certtool_opt_strs+2279)
461 #define PASSWORD_FLAGS     (OPTST_DISABLED \
462         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
463
464 /*
465  *  certificate-info option description:
466  */
467 #define CERTIFICATE_INFO_DESC      (certtool_opt_strs+2288)
468 #define CERTIFICATE_INFO_NAME      (certtool_opt_strs+2331)
469 #define CERTIFICATE_INFO_name      (certtool_opt_strs+2348)
470 #define CERTIFICATE_INFO_FLAGS     (OPTST_DISABLED)
471
472 /*
473  *  certificate-pubkey option description:
474  */
475 #define CERTIFICATE_PUBKEY_DESC      (certtool_opt_strs+2365)
476 #define CERTIFICATE_PUBKEY_NAME      (certtool_opt_strs+2396)
477 #define CERTIFICATE_PUBKEY_name      (certtool_opt_strs+2415)
478 #define CERTIFICATE_PUBKEY_FLAGS     (OPTST_DISABLED)
479
480 /*
481  *  pgp-certificate-info option description:
482  */
483 #define PGP_CERTIFICATE_INFO_DESC      (certtool_opt_strs+2434)
484 #define PGP_CERTIFICATE_INFO_NAME      (certtool_opt_strs+2485)
485 #define PGP_CERTIFICATE_INFO_name      (certtool_opt_strs+2506)
486 #define PGP_CERTIFICATE_INFO_FLAGS     (OPTST_DISABLED)
487
488 /*
489  *  pgp-ring-info option description:
490  */
491 #define PGP_RING_INFO_DESC      (certtool_opt_strs+2527)
492 #define PGP_RING_INFO_NAME      (certtool_opt_strs+2584)
493 #define PGP_RING_INFO_name      (certtool_opt_strs+2598)
494 #define PGP_RING_INFO_FLAGS     (OPTST_DISABLED)
495
496 /*
497  *  crl-info option description:
498  */
499 #define CRL_INFO_DESC      (certtool_opt_strs+2612)
500 #define CRL_INFO_NAME      (certtool_opt_strs+2657)
501 #define CRL_INFO_name      (certtool_opt_strs+2666)
502 #define CRL_INFO_FLAGS     (OPTST_DISABLED)
503
504 /*
505  *  crq-info option description:
506  */
507 #define CRQ_INFO_DESC      (certtool_opt_strs+2675)
508 #define CRQ_INFO_NAME      (certtool_opt_strs+2726)
509 #define CRQ_INFO_name      (certtool_opt_strs+2735)
510 #define CRQ_INFO_FLAGS     (OPTST_DISABLED)
511
512 /*
513  *  no-crq-extensions option description:
514  */
515 #define NO_CRQ_EXTENSIONS_DESC      (certtool_opt_strs+2744)
516 #define NO_CRQ_EXTENSIONS_NAME      (certtool_opt_strs+2790)
517 #define NO_CRQ_EXTENSIONS_name      (certtool_opt_strs+2808)
518 #define NO_CRQ_EXTENSIONS_FLAGS     (OPTST_DISABLED)
519
520 /*
521  *  p12-info option description:
522  */
523 #define P12_INFO_DESC      (certtool_opt_strs+2826)
524 #define P12_INFO_NAME      (certtool_opt_strs+2868)
525 #define P12_INFO_name      (certtool_opt_strs+2877)
526 #define P12_INFO_FLAGS     (OPTST_DISABLED)
527
528 /*
529  *  p7-info option description:
530  */
531 #define P7_INFO_DESC      (certtool_opt_strs+2886)
532 #define P7_INFO_NAME      (certtool_opt_strs+2927)
533 #define P7_INFO_name      (certtool_opt_strs+2935)
534 #define P7_INFO_FLAGS     (OPTST_DISABLED)
535
536 /*
537  *  smime-to-p7 option description:
538  */
539 #define SMIME_TO_P7_DESC      (certtool_opt_strs+2943)
540 #define SMIME_TO_P7_NAME      (certtool_opt_strs+2979)
541 #define SMIME_TO_P7_name      (certtool_opt_strs+2991)
542 #define SMIME_TO_P7_FLAGS     (OPTST_DISABLED)
543
544 /*
545  *  key-info option description:
546  */
547 #define KEY_INFO_DESC      (certtool_opt_strs+3003)
548 #define KEY_INFO_NAME      (certtool_opt_strs+3038)
549 #define KEY_INFO_name      (certtool_opt_strs+3047)
550 #define KEY_INFO_FLAGS     (OPTST_DISABLED)
551
552 /*
553  *  pgp-key-info option description:
554  */
555 #define PGP_KEY_INFO_DESC      (certtool_opt_strs+3056)
556 #define PGP_KEY_INFO_NAME      (certtool_opt_strs+3100)
557 #define PGP_KEY_INFO_name      (certtool_opt_strs+3113)
558 #define PGP_KEY_INFO_FLAGS     (OPTST_DISABLED)
559
560 /*
561  *  pubkey-info option description:
562  */
563 #define PUBKEY_INFO_DESC      (certtool_opt_strs+3126)
564 #define PUBKEY_INFO_NAME      (certtool_opt_strs+3160)
565 #define PUBKEY_INFO_name      (certtool_opt_strs+3172)
566 #define PUBKEY_INFO_FLAGS     (OPTST_DISABLED)
567
568 /*
569  *  v1 option description:
570  */
571 #define V1_DESC      (certtool_opt_strs+3184)
572 #define V1_NAME      (certtool_opt_strs+3245)
573 #define V1_name      (certtool_opt_strs+3248)
574 #define V1_FLAGS     (OPTST_DISABLED)
575
576 /*
577  *  to-p12 option description with
578  *  "Must also have options" and "Incompatible options":
579  */
580 #define TO_P12_DESC      (certtool_opt_strs+3251)
581 #define TO_P12_NAME      (certtool_opt_strs+3281)
582 #define TO_P12_name      (certtool_opt_strs+3288)
583 static int const aTo_P12MustList[] = {
584     INDEX_OPT_LOAD_CERTIFICATE, NO_EQUIVALENT };
585 #define TO_P12_FLAGS     (OPTST_DISABLED)
586
587 /*
588  *  to-p8 option description:
589  */
590 #define TO_P8_DESC      (certtool_opt_strs+3295)
591 #define TO_P8_NAME      (certtool_opt_strs+3324)
592 #define TO_P8_name      (certtool_opt_strs+3330)
593 #define TO_P8_FLAGS     (OPTST_DISABLED)
594
595 /*
596  *  pkcs8 option description:
597  */
598 #define PKCS8_DESC      (certtool_opt_strs+3336)
599 #define PKCS8_NAME      (certtool_opt_strs+3372)
600 #define PKCS8_name      (certtool_opt_strs+3378)
601 #define PKCS8_FLAGS     (OPTST_DISABLED)
602
603 /*
604  *  rsa option description:
605  */
606 #define RSA_DESC      (certtool_opt_strs+3384)
607 #define RSA_NAME      (certtool_opt_strs+3401)
608 #define RSA_name      (certtool_opt_strs+3405)
609 #define RSA_FLAGS     (OPTST_DISABLED)
610
611 /*
612  *  dsa option description:
613  */
614 #define DSA_DESC      (certtool_opt_strs+3409)
615 #define DSA_NAME      (certtool_opt_strs+3426)
616 #define DSA_name      (certtool_opt_strs+3430)
617 #define DSA_FLAGS     (OPTST_DISABLED)
618
619 /*
620  *  ecc option description:
621  */
622 #define ECC_DESC      (certtool_opt_strs+3434)
623 #define ECC_NAME      (certtool_opt_strs+3459)
624 #define ECC_name      (certtool_opt_strs+3463)
625 #define ECC_FLAGS     (OPTST_DISABLED)
626
627 /*
628  *  hash option description:
629  */
630 #define HASH_DESC      (certtool_opt_strs+3467)
631 #define HASH_NAME      (certtool_opt_strs+3502)
632 #define HASH_name      (certtool_opt_strs+3507)
633 #define HASH_FLAGS     (OPTST_DISABLED \
634         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
635
636 /*
637  *  inder option description:
638  */
639 #define INDER_DESC      (certtool_opt_strs+3512)
640 #define INDER_NAME      (certtool_opt_strs+3568)
641 #define NOT_INDER_name  (certtool_opt_strs+3574)
642 #define NOT_INDER_PFX   (certtool_opt_strs+3583)
643 #define INDER_name      (NOT_INDER_name + 3)
644 #define INDER_FLAGS     (OPTST_DISABLED)
645
646 /*
647  *  inraw option description:
648  */
649 #define INRAW_DESC    (certtool_opt_strs+3586)
650 #define INRAW_NAME    NULL
651 #define INRAW_name    (certtool_opt_strs+3615)
652 #define INRAW_FLAGS     (INDER_FLAGS | OPTST_ALIAS)
653
654 /*
655  *  outder option description:
656  */
657 #define OUTDER_DESC      (certtool_opt_strs+3621)
658 #define OUTDER_NAME      (certtool_opt_strs+3677)
659 #define NOT_OUTDER_name  (certtool_opt_strs+3684)
660 #define NOT_OUTDER_PFX   (certtool_opt_strs+3583)
661 #define OUTDER_name      (NOT_OUTDER_name + 3)
662 #define OUTDER_FLAGS     (OPTST_DISABLED)
663
664 /*
665  *  outraw option description:
666  */
667 #define OUTRAW_DESC    (certtool_opt_strs+3694)
668 #define OUTRAW_NAME    NULL
669 #define OUTRAW_name    (certtool_opt_strs+3724)
670 #define OUTRAW_FLAGS     (OUTDER_FLAGS | OPTST_ALIAS)
671
672 /*
673  *  bits option description:
674  */
675 #define BITS_DESC      (certtool_opt_strs+3731)
676 #define BITS_NAME      (certtool_opt_strs+3775)
677 #define BITS_name      (certtool_opt_strs+3780)
678 #define BITS_FLAGS     (OPTST_DISABLED \
679         | OPTST_SET_ARGTYPE(OPARG_TYPE_NUMERIC))
680
681 /*
682  *  sec-param option description:
683  */
684 #define SEC_PARAM_DESC      (certtool_opt_strs+3785)
685 #define SEC_PARAM_NAME      (certtool_opt_strs+3848)
686 #define SEC_PARAM_name      (certtool_opt_strs+3858)
687 #define SEC_PARAM_FLAGS     (OPTST_DISABLED \
688         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
689
690 /*
691  *  disable-quick-random option description:
692  */
693 #define DISABLE_QUICK_RANDOM_DESC      (certtool_opt_strs+3868)
694 #define DISABLE_QUICK_RANDOM_NAME      (certtool_opt_strs+3878)
695 #define DISABLE_QUICK_RANDOM_name      (certtool_opt_strs+3899)
696 #define DISABLE_QUICK_RANDOM_FLAGS     (OPTST_DISABLED)
697
698 /*
699  *  template option description:
700  */
701 #define TEMPLATE_DESC      (certtool_opt_strs+3920)
702 #define TEMPLATE_NAME      (certtool_opt_strs+3971)
703 #define TEMPLATE_name      (certtool_opt_strs+3980)
704 #define TEMPLATE_FLAGS     (OPTST_DISABLED \
705         | OPTST_SET_ARGTYPE(OPARG_TYPE_FILE))
706
707 /*
708  *  pkcs-cipher option description:
709  */
710 #define PKCS_CIPHER_DESC      (certtool_opt_strs+3989)
711 #define PKCS_CIPHER_NAME      (certtool_opt_strs+4034)
712 #define PKCS_CIPHER_name      (certtool_opt_strs+4046)
713 #define PKCS_CIPHER_FLAGS     (OPTST_DISABLED \
714         | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
715
716 /*
717  *  Help/More_Help/Version option descriptions:
718  */
719 #define HELP_DESC       (certtool_opt_strs+4058)
720 #define HELP_name       (certtool_opt_strs+4102)
721 #ifdef HAVE_WORKING_FORK
722 #define MORE_HELP_DESC  (certtool_opt_strs+4107)
723 #define MORE_HELP_name  (certtool_opt_strs+4152)
724 #define MORE_HELP_FLAGS (OPTST_IMM | OPTST_NO_INIT)
725 #else
726 #define MORE_HELP_DESC  NULL
727 #define MORE_HELP_name  NULL
728 #define MORE_HELP_FLAGS (OPTST_OMITTED | OPTST_NO_INIT)
729 #endif
730 #ifdef NO_OPTIONAL_OPT_ARGS
731 #  define VER_FLAGS     (OPTST_IMM | OPTST_NO_INIT)
732 #else
733 #  define VER_FLAGS     (OPTST_SET_ARGTYPE(OPARG_TYPE_STRING) | \
734                          OPTST_ARG_OPTIONAL | OPTST_IMM | OPTST_NO_INIT)
735 #endif
736 #define VER_DESC        (certtool_opt_strs+4162)
737 #define VER_name        (certtool_opt_strs+4198)
738 /*
739  *  Declare option callback procedures
740  */
741 extern tOptProc
742     optionBooleanVal,   optionNestedVal,    optionNumericVal,
743     optionPagedUsage,   optionPrintVersion, optionResetOpt,
744     optionStackArg,     optionTimeDate,     optionTimeVal,
745     optionUnstackArg,   optionVendorOption;
746 static tOptProc
747     doOptDebug,        doOptInfile,       doOptInraw,
748     doOptLoad_Request, doOptOutraw,       doOptTemplate,
749     doUsageOpt;
750 #define VER_PROC        optionPrintVersion
751
752 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
753 /**
754  *  Define the certtool Option Descriptions.
755  * This is an array of OPTION_CT entries, one for each
756  * option that the certtool program responds to.
757  */
758 static tOptDesc optDesc[OPTION_CT] = {
759   {  /* entry idx, value */ 0, VALUE_OPT_DEBUG,
760      /* equiv idx, value */ 0, VALUE_OPT_DEBUG,
761      /* equivalenced to  */ NO_EQUIVALENT,
762      /* min, max, act ct */ 0, 1, 0,
763      /* opt state flags  */ DEBUG_FLAGS, 0,
764      /* last opt argumnt */ { NULL }, /* --debug */
765      /* arg list/cookie  */ NULL,
766      /* must/cannot opts */ NULL, NULL,
767      /* option proc      */ doOptDebug,
768      /* desc, NAME, name */ DEBUG_DESC, DEBUG_NAME, DEBUG_name,
769      /* disablement strs */ NULL, NULL },
770
771   {  /* entry idx, value */ 1, VALUE_OPT_INFILE,
772      /* equiv idx, value */ 1, VALUE_OPT_INFILE,
773      /* equivalenced to  */ NO_EQUIVALENT,
774      /* min, max, act ct */ 0, 1, 0,
775      /* opt state flags  */ INFILE_FLAGS, 0,
776      /* last opt argumnt */ { NULL }, /* --infile */
777      /* arg list/cookie  */ NULL,
778      /* must/cannot opts */ NULL, NULL,
779      /* option proc      */ doOptInfile,
780      /* desc, NAME, name */ INFILE_DESC, INFILE_NAME, INFILE_name,
781      /* disablement strs */ NULL, NULL },
782
783   {  /* entry idx, value */ 2, VALUE_OPT_OUTFILE,
784      /* equiv idx, value */ 2, VALUE_OPT_OUTFILE,
785      /* equivalenced to  */ NO_EQUIVALENT,
786      /* min, max, act ct */ 0, 1, 0,
787      /* opt state flags  */ OUTFILE_FLAGS, 0,
788      /* last opt argumnt */ { NULL }, /* --outfile */
789      /* arg list/cookie  */ NULL,
790      /* must/cannot opts */ NULL, NULL,
791      /* option proc      */ NULL,
792      /* desc, NAME, name */ OUTFILE_DESC, OUTFILE_NAME, OUTFILE_name,
793      /* disablement strs */ NULL, NULL },
794
795   {  /* entry idx, value */ 3, VALUE_OPT_GENERATE_SELF_SIGNED,
796      /* equiv idx, value */ 3, VALUE_OPT_GENERATE_SELF_SIGNED,
797      /* equivalenced to  */ NO_EQUIVALENT,
798      /* min, max, act ct */ 0, 1, 0,
799      /* opt state flags  */ GENERATE_SELF_SIGNED_FLAGS, 0,
800      /* last opt argumnt */ { NULL }, /* --generate-self-signed */
801      /* arg list/cookie  */ NULL,
802      /* must/cannot opts */ NULL, NULL,
803      /* option proc      */ NULL,
804      /* desc, NAME, name */ GENERATE_SELF_SIGNED_DESC, GENERATE_SELF_SIGNED_NAME, GENERATE_SELF_SIGNED_name,
805      /* disablement strs */ NULL, NULL },
806
807   {  /* entry idx, value */ 4, VALUE_OPT_GENERATE_CERTIFICATE,
808      /* equiv idx, value */ 4, VALUE_OPT_GENERATE_CERTIFICATE,
809      /* equivalenced to  */ NO_EQUIVALENT,
810      /* min, max, act ct */ 0, 1, 0,
811      /* opt state flags  */ GENERATE_CERTIFICATE_FLAGS, 0,
812      /* last opt argumnt */ { NULL }, /* --generate-certificate */
813      /* arg list/cookie  */ NULL,
814      /* must/cannot opts */ NULL, NULL,
815      /* option proc      */ NULL,
816      /* desc, NAME, name */ GENERATE_CERTIFICATE_DESC, GENERATE_CERTIFICATE_NAME, GENERATE_CERTIFICATE_name,
817      /* disablement strs */ NULL, NULL },
818
819   {  /* entry idx, value */ 5, VALUE_OPT_GENERATE_PROXY,
820      /* equiv idx, value */ 5, VALUE_OPT_GENERATE_PROXY,
821      /* equivalenced to  */ NO_EQUIVALENT,
822      /* min, max, act ct */ 0, 1, 0,
823      /* opt state flags  */ GENERATE_PROXY_FLAGS, 0,
824      /* last opt argumnt */ { NULL }, /* --generate-proxy */
825      /* arg list/cookie  */ NULL,
826      /* must/cannot opts */ NULL, NULL,
827      /* option proc      */ NULL,
828      /* desc, NAME, name */ GENERATE_PROXY_DESC, GENERATE_PROXY_NAME, GENERATE_PROXY_name,
829      /* disablement strs */ NULL, NULL },
830
831   {  /* entry idx, value */ 6, VALUE_OPT_GENERATE_CRL,
832      /* equiv idx, value */ 6, VALUE_OPT_GENERATE_CRL,
833      /* equivalenced to  */ NO_EQUIVALENT,
834      /* min, max, act ct */ 0, 1, 0,
835      /* opt state flags  */ GENERATE_CRL_FLAGS, 0,
836      /* last opt argumnt */ { NULL }, /* --generate-crl */
837      /* arg list/cookie  */ NULL,
838      /* must/cannot opts */ NULL, NULL,
839      /* option proc      */ NULL,
840      /* desc, NAME, name */ GENERATE_CRL_DESC, GENERATE_CRL_NAME, GENERATE_CRL_name,
841      /* disablement strs */ NULL, NULL },
842
843   {  /* entry idx, value */ 7, VALUE_OPT_UPDATE_CERTIFICATE,
844      /* equiv idx, value */ 7, VALUE_OPT_UPDATE_CERTIFICATE,
845      /* equivalenced to  */ NO_EQUIVALENT,
846      /* min, max, act ct */ 0, 1, 0,
847      /* opt state flags  */ UPDATE_CERTIFICATE_FLAGS, 0,
848      /* last opt argumnt */ { NULL }, /* --update-certificate */
849      /* arg list/cookie  */ NULL,
850      /* must/cannot opts */ NULL, NULL,
851      /* option proc      */ NULL,
852      /* desc, NAME, name */ UPDATE_CERTIFICATE_DESC, UPDATE_CERTIFICATE_NAME, UPDATE_CERTIFICATE_name,
853      /* disablement strs */ NULL, NULL },
854
855   {  /* entry idx, value */ 8, VALUE_OPT_GENERATE_PRIVKEY,
856      /* equiv idx, value */ 8, VALUE_OPT_GENERATE_PRIVKEY,
857      /* equivalenced to  */ NO_EQUIVALENT,
858      /* min, max, act ct */ 0, 1, 0,
859      /* opt state flags  */ GENERATE_PRIVKEY_FLAGS, 0,
860      /* last opt argumnt */ { NULL }, /* --generate-privkey */
861      /* arg list/cookie  */ NULL,
862      /* must/cannot opts */ NULL, NULL,
863      /* option proc      */ NULL,
864      /* desc, NAME, name */ GENERATE_PRIVKEY_DESC, GENERATE_PRIVKEY_NAME, GENERATE_PRIVKEY_name,
865      /* disablement strs */ NULL, NULL },
866
867   {  /* entry idx, value */ 9, VALUE_OPT_GENERATE_REQUEST,
868      /* equiv idx, value */ 9, VALUE_OPT_GENERATE_REQUEST,
869      /* equivalenced to  */ NO_EQUIVALENT,
870      /* min, max, act ct */ 0, 1, 0,
871      /* opt state flags  */ GENERATE_REQUEST_FLAGS, 0,
872      /* last opt argumnt */ { NULL }, /* --generate-request */
873      /* arg list/cookie  */ NULL,
874      /* must/cannot opts */ NULL, NULL,
875      /* option proc      */ NULL,
876      /* desc, NAME, name */ GENERATE_REQUEST_DESC, GENERATE_REQUEST_NAME, GENERATE_REQUEST_name,
877      /* disablement strs */ NULL, NULL },
878
879   {  /* entry idx, value */ 10, VALUE_OPT_VERIFY_CHAIN,
880      /* equiv idx, value */ 10, VALUE_OPT_VERIFY_CHAIN,
881      /* equivalenced to  */ NO_EQUIVALENT,
882      /* min, max, act ct */ 0, 1, 0,
883      /* opt state flags  */ VERIFY_CHAIN_FLAGS, 0,
884      /* last opt argumnt */ { NULL }, /* --verify-chain */
885      /* arg list/cookie  */ NULL,
886      /* must/cannot opts */ NULL, NULL,
887      /* option proc      */ NULL,
888      /* desc, NAME, name */ VERIFY_CHAIN_DESC, VERIFY_CHAIN_NAME, VERIFY_CHAIN_name,
889      /* disablement strs */ NULL, NULL },
890
891   {  /* entry idx, value */ 11, VALUE_OPT_VERIFY,
892      /* equiv idx, value */ 11, VALUE_OPT_VERIFY,
893      /* equivalenced to  */ NO_EQUIVALENT,
894      /* min, max, act ct */ 0, 1, 0,
895      /* opt state flags  */ VERIFY_FLAGS, 0,
896      /* last opt argumnt */ { NULL }, /* --verify */
897      /* arg list/cookie  */ NULL,
898      /* must/cannot opts */ aVerifyMustList, NULL,
899      /* option proc      */ NULL,
900      /* desc, NAME, name */ VERIFY_DESC, VERIFY_NAME, VERIFY_name,
901      /* disablement strs */ NULL, NULL },
902
903   {  /* entry idx, value */ 12, VALUE_OPT_VERIFY_CRL,
904      /* equiv idx, value */ 12, VALUE_OPT_VERIFY_CRL,
905      /* equivalenced to  */ NO_EQUIVALENT,
906      /* min, max, act ct */ 0, 1, 0,
907      /* opt state flags  */ VERIFY_CRL_FLAGS, 0,
908      /* last opt argumnt */ { NULL }, /* --verify-crl */
909      /* arg list/cookie  */ NULL,
910      /* must/cannot opts */ aVerify_CrlMustList, NULL,
911      /* option proc      */ NULL,
912      /* desc, NAME, name */ VERIFY_CRL_DESC, VERIFY_CRL_NAME, VERIFY_CRL_name,
913      /* disablement strs */ NULL, NULL },
914
915   {  /* entry idx, value */ 13, VALUE_OPT_GENERATE_DH_PARAMS,
916      /* equiv idx, value */ 13, VALUE_OPT_GENERATE_DH_PARAMS,
917      /* equivalenced to  */ NO_EQUIVALENT,
918      /* min, max, act ct */ 0, 1, 0,
919      /* opt state flags  */ GENERATE_DH_PARAMS_FLAGS, 0,
920      /* last opt argumnt */ { NULL }, /* --generate-dh-params */
921      /* arg list/cookie  */ NULL,
922      /* must/cannot opts */ NULL, NULL,
923      /* option proc      */ NULL,
924      /* desc, NAME, name */ GENERATE_DH_PARAMS_DESC, GENERATE_DH_PARAMS_NAME, GENERATE_DH_PARAMS_name,
925      /* disablement strs */ NULL, NULL },
926
927   {  /* entry idx, value */ 14, VALUE_OPT_GET_DH_PARAMS,
928      /* equiv idx, value */ 14, VALUE_OPT_GET_DH_PARAMS,
929      /* equivalenced to  */ NO_EQUIVALENT,
930      /* min, max, act ct */ 0, 1, 0,
931      /* opt state flags  */ GET_DH_PARAMS_FLAGS, 0,
932      /* last opt argumnt */ { NULL }, /* --get-dh-params */
933      /* arg list/cookie  */ NULL,
934      /* must/cannot opts */ NULL, NULL,
935      /* option proc      */ NULL,
936      /* desc, NAME, name */ GET_DH_PARAMS_DESC, GET_DH_PARAMS_NAME, GET_DH_PARAMS_name,
937      /* disablement strs */ NULL, NULL },
938
939   {  /* entry idx, value */ 15, VALUE_OPT_DH_INFO,
940      /* equiv idx, value */ 15, VALUE_OPT_DH_INFO,
941      /* equivalenced to  */ NO_EQUIVALENT,
942      /* min, max, act ct */ 0, 1, 0,
943      /* opt state flags  */ DH_INFO_FLAGS, 0,
944      /* last opt argumnt */ { NULL }, /* --dh-info */
945      /* arg list/cookie  */ NULL,
946      /* must/cannot opts */ NULL, NULL,
947      /* option proc      */ NULL,
948      /* desc, NAME, name */ DH_INFO_DESC, DH_INFO_NAME, DH_INFO_name,
949      /* disablement strs */ NULL, NULL },
950
951   {  /* entry idx, value */ 16, VALUE_OPT_LOAD_PRIVKEY,
952      /* equiv idx, value */ 16, VALUE_OPT_LOAD_PRIVKEY,
953      /* equivalenced to  */ NO_EQUIVALENT,
954      /* min, max, act ct */ 0, 1, 0,
955      /* opt state flags  */ LOAD_PRIVKEY_FLAGS, 0,
956      /* last opt argumnt */ { NULL }, /* --load-privkey */
957      /* arg list/cookie  */ NULL,
958      /* must/cannot opts */ NULL, NULL,
959      /* option proc      */ NULL,
960      /* desc, NAME, name */ LOAD_PRIVKEY_DESC, LOAD_PRIVKEY_NAME, LOAD_PRIVKEY_name,
961      /* disablement strs */ NULL, NULL },
962
963   {  /* entry idx, value */ 17, VALUE_OPT_LOAD_PUBKEY,
964      /* equiv idx, value */ 17, VALUE_OPT_LOAD_PUBKEY,
965      /* equivalenced to  */ NO_EQUIVALENT,
966      /* min, max, act ct */ 0, 1, 0,
967      /* opt state flags  */ LOAD_PUBKEY_FLAGS, 0,
968      /* last opt argumnt */ { NULL }, /* --load-pubkey */
969      /* arg list/cookie  */ NULL,
970      /* must/cannot opts */ NULL, NULL,
971      /* option proc      */ NULL,
972      /* desc, NAME, name */ LOAD_PUBKEY_DESC, LOAD_PUBKEY_NAME, LOAD_PUBKEY_name,
973      /* disablement strs */ NULL, NULL },
974
975   {  /* entry idx, value */ 18, VALUE_OPT_LOAD_REQUEST,
976      /* equiv idx, value */ 18, VALUE_OPT_LOAD_REQUEST,
977      /* equivalenced to  */ NO_EQUIVALENT,
978      /* min, max, act ct */ 0, 1, 0,
979      /* opt state flags  */ LOAD_REQUEST_FLAGS, 0,
980      /* last opt argumnt */ { NULL }, /* --load-request */
981      /* arg list/cookie  */ NULL,
982      /* must/cannot opts */ NULL, NULL,
983      /* option proc      */ doOptLoad_Request,
984      /* desc, NAME, name */ LOAD_REQUEST_DESC, LOAD_REQUEST_NAME, LOAD_REQUEST_name,
985      /* disablement strs */ NULL, NULL },
986
987   {  /* entry idx, value */ 19, VALUE_OPT_LOAD_CERTIFICATE,
988      /* equiv idx, value */ 19, VALUE_OPT_LOAD_CERTIFICATE,
989      /* equivalenced to  */ NO_EQUIVALENT,
990      /* min, max, act ct */ 0, 1, 0,
991      /* opt state flags  */ LOAD_CERTIFICATE_FLAGS, 0,
992      /* last opt argumnt */ { NULL }, /* --load-certificate */
993      /* arg list/cookie  */ NULL,
994      /* must/cannot opts */ NULL, NULL,
995      /* option proc      */ NULL,
996      /* desc, NAME, name */ LOAD_CERTIFICATE_DESC, LOAD_CERTIFICATE_NAME, LOAD_CERTIFICATE_name,
997      /* disablement strs */ NULL, NULL },
998
999   {  /* entry idx, value */ 20, VALUE_OPT_LOAD_CA_PRIVKEY,
1000      /* equiv idx, value */ 20, VALUE_OPT_LOAD_CA_PRIVKEY,
1001      /* equivalenced to  */ NO_EQUIVALENT,
1002      /* min, max, act ct */ 0, 1, 0,
1003      /* opt state flags  */ LOAD_CA_PRIVKEY_FLAGS, 0,
1004      /* last opt argumnt */ { NULL }, /* --load-ca-privkey */
1005      /* arg list/cookie  */ NULL,
1006      /* must/cannot opts */ NULL, NULL,
1007      /* option proc      */ NULL,
1008      /* desc, NAME, name */ LOAD_CA_PRIVKEY_DESC, LOAD_CA_PRIVKEY_NAME, LOAD_CA_PRIVKEY_name,
1009      /* disablement strs */ NULL, NULL },
1010
1011   {  /* entry idx, value */ 21, VALUE_OPT_LOAD_CA_CERTIFICATE,
1012      /* equiv idx, value */ 21, VALUE_OPT_LOAD_CA_CERTIFICATE,
1013      /* equivalenced to  */ NO_EQUIVALENT,
1014      /* min, max, act ct */ 0, 1, 0,
1015      /* opt state flags  */ LOAD_CA_CERTIFICATE_FLAGS, 0,
1016      /* last opt argumnt */ { NULL }, /* --load-ca-certificate */
1017      /* arg list/cookie  */ NULL,
1018      /* must/cannot opts */ NULL, NULL,
1019      /* option proc      */ NULL,
1020      /* desc, NAME, name */ LOAD_CA_CERTIFICATE_DESC, LOAD_CA_CERTIFICATE_NAME, LOAD_CA_CERTIFICATE_name,
1021      /* disablement strs */ NULL, NULL },
1022
1023   {  /* entry idx, value */ 22, VALUE_OPT_PASSWORD,
1024      /* equiv idx, value */ 22, VALUE_OPT_PASSWORD,
1025      /* equivalenced to  */ NO_EQUIVALENT,
1026      /* min, max, act ct */ 0, 1, 0,
1027      /* opt state flags  */ PASSWORD_FLAGS, 0,
1028      /* last opt argumnt */ { NULL }, /* --password */
1029      /* arg list/cookie  */ NULL,
1030      /* must/cannot opts */ NULL, NULL,
1031      /* option proc      */ NULL,
1032      /* desc, NAME, name */ PASSWORD_DESC, PASSWORD_NAME, PASSWORD_name,
1033      /* disablement strs */ NULL, NULL },
1034
1035   {  /* entry idx, value */ 23, VALUE_OPT_CERTIFICATE_INFO,
1036      /* equiv idx, value */ 23, VALUE_OPT_CERTIFICATE_INFO,
1037      /* equivalenced to  */ NO_EQUIVALENT,
1038      /* min, max, act ct */ 0, 1, 0,
1039      /* opt state flags  */ CERTIFICATE_INFO_FLAGS, 0,
1040      /* last opt argumnt */ { NULL }, /* --certificate-info */
1041      /* arg list/cookie  */ NULL,
1042      /* must/cannot opts */ NULL, NULL,
1043      /* option proc      */ NULL,
1044      /* desc, NAME, name */ CERTIFICATE_INFO_DESC, CERTIFICATE_INFO_NAME, CERTIFICATE_INFO_name,
1045      /* disablement strs */ NULL, NULL },
1046
1047   {  /* entry idx, value */ 24, VALUE_OPT_CERTIFICATE_PUBKEY,
1048      /* equiv idx, value */ 24, VALUE_OPT_CERTIFICATE_PUBKEY,
1049      /* equivalenced to  */ NO_EQUIVALENT,
1050      /* min, max, act ct */ 0, 1, 0,
1051      /* opt state flags  */ CERTIFICATE_PUBKEY_FLAGS, 0,
1052      /* last opt argumnt */ { NULL }, /* --certificate-pubkey */
1053      /* arg list/cookie  */ NULL,
1054      /* must/cannot opts */ NULL, NULL,
1055      /* option proc      */ NULL,
1056      /* desc, NAME, name */ CERTIFICATE_PUBKEY_DESC, CERTIFICATE_PUBKEY_NAME, CERTIFICATE_PUBKEY_name,
1057      /* disablement strs */ NULL, NULL },
1058
1059   {  /* entry idx, value */ 25, VALUE_OPT_PGP_CERTIFICATE_INFO,
1060      /* equiv idx, value */ 25, VALUE_OPT_PGP_CERTIFICATE_INFO,
1061      /* equivalenced to  */ NO_EQUIVALENT,
1062      /* min, max, act ct */ 0, 1, 0,
1063      /* opt state flags  */ PGP_CERTIFICATE_INFO_FLAGS, 0,
1064      /* last opt argumnt */ { NULL }, /* --pgp-certificate-info */
1065      /* arg list/cookie  */ NULL,
1066      /* must/cannot opts */ NULL, NULL,
1067      /* option proc      */ NULL,
1068      /* desc, NAME, name */ PGP_CERTIFICATE_INFO_DESC, PGP_CERTIFICATE_INFO_NAME, PGP_CERTIFICATE_INFO_name,
1069      /* disablement strs */ NULL, NULL },
1070
1071   {  /* entry idx, value */ 26, VALUE_OPT_PGP_RING_INFO,
1072      /* equiv idx, value */ 26, VALUE_OPT_PGP_RING_INFO,
1073      /* equivalenced to  */ NO_EQUIVALENT,
1074      /* min, max, act ct */ 0, 1, 0,
1075      /* opt state flags  */ PGP_RING_INFO_FLAGS, 0,
1076      /* last opt argumnt */ { NULL }, /* --pgp-ring-info */
1077      /* arg list/cookie  */ NULL,
1078      /* must/cannot opts */ NULL, NULL,
1079      /* option proc      */ NULL,
1080      /* desc, NAME, name */ PGP_RING_INFO_DESC, PGP_RING_INFO_NAME, PGP_RING_INFO_name,
1081      /* disablement strs */ NULL, NULL },
1082
1083   {  /* entry idx, value */ 27, VALUE_OPT_CRL_INFO,
1084      /* equiv idx, value */ 27, VALUE_OPT_CRL_INFO,
1085      /* equivalenced to  */ NO_EQUIVALENT,
1086      /* min, max, act ct */ 0, 1, 0,
1087      /* opt state flags  */ CRL_INFO_FLAGS, 0,
1088      /* last opt argumnt */ { NULL }, /* --crl-info */
1089      /* arg list/cookie  */ NULL,
1090      /* must/cannot opts */ NULL, NULL,
1091      /* option proc      */ NULL,
1092      /* desc, NAME, name */ CRL_INFO_DESC, CRL_INFO_NAME, CRL_INFO_name,
1093      /* disablement strs */ NULL, NULL },
1094
1095   {  /* entry idx, value */ 28, VALUE_OPT_CRQ_INFO,
1096      /* equiv idx, value */ 28, VALUE_OPT_CRQ_INFO,
1097      /* equivalenced to  */ NO_EQUIVALENT,
1098      /* min, max, act ct */ 0, 1, 0,
1099      /* opt state flags  */ CRQ_INFO_FLAGS, 0,
1100      /* last opt argumnt */ { NULL }, /* --crq-info */
1101      /* arg list/cookie  */ NULL,
1102      /* must/cannot opts */ NULL, NULL,
1103      /* option proc      */ NULL,
1104      /* desc, NAME, name */ CRQ_INFO_DESC, CRQ_INFO_NAME, CRQ_INFO_name,
1105      /* disablement strs */ NULL, NULL },
1106
1107   {  /* entry idx, value */ 29, VALUE_OPT_NO_CRQ_EXTENSIONS,
1108      /* equiv idx, value */ 29, VALUE_OPT_NO_CRQ_EXTENSIONS,
1109      /* equivalenced to  */ NO_EQUIVALENT,
1110      /* min, max, act ct */ 0, 1, 0,
1111      /* opt state flags  */ NO_CRQ_EXTENSIONS_FLAGS, 0,
1112      /* last opt argumnt */ { NULL }, /* --no-crq-extensions */
1113      /* arg list/cookie  */ NULL,
1114      /* must/cannot opts */ NULL, NULL,
1115      /* option proc      */ NULL,
1116      /* desc, NAME, name */ NO_CRQ_EXTENSIONS_DESC, NO_CRQ_EXTENSIONS_NAME, NO_CRQ_EXTENSIONS_name,
1117      /* disablement strs */ NULL, NULL },
1118
1119   {  /* entry idx, value */ 30, VALUE_OPT_P12_INFO,
1120      /* equiv idx, value */ 30, VALUE_OPT_P12_INFO,
1121      /* equivalenced to  */ NO_EQUIVALENT,
1122      /* min, max, act ct */ 0, 1, 0,
1123      /* opt state flags  */ P12_INFO_FLAGS, 0,
1124      /* last opt argumnt */ { NULL }, /* --p12-info */
1125      /* arg list/cookie  */ NULL,
1126      /* must/cannot opts */ NULL, NULL,
1127      /* option proc      */ NULL,
1128      /* desc, NAME, name */ P12_INFO_DESC, P12_INFO_NAME, P12_INFO_name,
1129      /* disablement strs */ NULL, NULL },
1130
1131   {  /* entry idx, value */ 31, VALUE_OPT_P7_INFO,
1132      /* equiv idx, value */ 31, VALUE_OPT_P7_INFO,
1133      /* equivalenced to  */ NO_EQUIVALENT,
1134      /* min, max, act ct */ 0, 1, 0,
1135      /* opt state flags  */ P7_INFO_FLAGS, 0,
1136      /* last opt argumnt */ { NULL }, /* --p7-info */
1137      /* arg list/cookie  */ NULL,
1138      /* must/cannot opts */ NULL, NULL,
1139      /* option proc      */ NULL,
1140      /* desc, NAME, name */ P7_INFO_DESC, P7_INFO_NAME, P7_INFO_name,
1141      /* disablement strs */ NULL, NULL },
1142
1143   {  /* entry idx, value */ 32, VALUE_OPT_SMIME_TO_P7,
1144      /* equiv idx, value */ 32, VALUE_OPT_SMIME_TO_P7,
1145      /* equivalenced to  */ NO_EQUIVALENT,
1146      /* min, max, act ct */ 0, 1, 0,
1147      /* opt state flags  */ SMIME_TO_P7_FLAGS, 0,
1148      /* last opt argumnt */ { NULL }, /* --smime-to-p7 */
1149      /* arg list/cookie  */ NULL,
1150      /* must/cannot opts */ NULL, NULL,
1151      /* option proc      */ NULL,
1152      /* desc, NAME, name */ SMIME_TO_P7_DESC, SMIME_TO_P7_NAME, SMIME_TO_P7_name,
1153      /* disablement strs */ NULL, NULL },
1154
1155   {  /* entry idx, value */ 33, VALUE_OPT_KEY_INFO,
1156      /* equiv idx, value */ 33, VALUE_OPT_KEY_INFO,
1157      /* equivalenced to  */ NO_EQUIVALENT,
1158      /* min, max, act ct */ 0, 1, 0,
1159      /* opt state flags  */ KEY_INFO_FLAGS, 0,
1160      /* last opt argumnt */ { NULL }, /* --key-info */
1161      /* arg list/cookie  */ NULL,
1162      /* must/cannot opts */ NULL, NULL,
1163      /* option proc      */ NULL,
1164      /* desc, NAME, name */ KEY_INFO_DESC, KEY_INFO_NAME, KEY_INFO_name,
1165      /* disablement strs */ NULL, NULL },
1166
1167   {  /* entry idx, value */ 34, VALUE_OPT_PGP_KEY_INFO,
1168      /* equiv idx, value */ 34, VALUE_OPT_PGP_KEY_INFO,
1169      /* equivalenced to  */ NO_EQUIVALENT,
1170      /* min, max, act ct */ 0, 1, 0,
1171      /* opt state flags  */ PGP_KEY_INFO_FLAGS, 0,
1172      /* last opt argumnt */ { NULL }, /* --pgp-key-info */
1173      /* arg list/cookie  */ NULL,
1174      /* must/cannot opts */ NULL, NULL,
1175      /* option proc      */ NULL,
1176      /* desc, NAME, name */ PGP_KEY_INFO_DESC, PGP_KEY_INFO_NAME, PGP_KEY_INFO_name,
1177      /* disablement strs */ NULL, NULL },
1178
1179   {  /* entry idx, value */ 35, VALUE_OPT_PUBKEY_INFO,
1180      /* equiv idx, value */ 35, VALUE_OPT_PUBKEY_INFO,
1181      /* equivalenced to  */ NO_EQUIVALENT,
1182      /* min, max, act ct */ 0, 1, 0,
1183      /* opt state flags  */ PUBKEY_INFO_FLAGS, 0,
1184      /* last opt argumnt */ { NULL }, /* --pubkey-info */
1185      /* arg list/cookie  */ NULL,
1186      /* must/cannot opts */ NULL, NULL,
1187      /* option proc      */ NULL,
1188      /* desc, NAME, name */ PUBKEY_INFO_DESC, PUBKEY_INFO_NAME, PUBKEY_INFO_name,
1189      /* disablement strs */ NULL, NULL },
1190
1191   {  /* entry idx, value */ 36, VALUE_OPT_V1,
1192      /* equiv idx, value */ 36, VALUE_OPT_V1,
1193      /* equivalenced to  */ NO_EQUIVALENT,
1194      /* min, max, act ct */ 0, 1, 0,
1195      /* opt state flags  */ V1_FLAGS, 0,
1196      /* last opt argumnt */ { NULL }, /* --v1 */
1197      /* arg list/cookie  */ NULL,
1198      /* must/cannot opts */ NULL, NULL,
1199      /* option proc      */ NULL,
1200      /* desc, NAME, name */ V1_DESC, V1_NAME, V1_name,
1201      /* disablement strs */ NULL, NULL },
1202
1203   {  /* entry idx, value */ 37, VALUE_OPT_TO_P12,
1204      /* equiv idx, value */ 37, VALUE_OPT_TO_P12,
1205      /* equivalenced to  */ NO_EQUIVALENT,
1206      /* min, max, act ct */ 0, 1, 0,
1207      /* opt state flags  */ TO_P12_FLAGS, 0,
1208      /* last opt argumnt */ { NULL }, /* --to-p12 */
1209      /* arg list/cookie  */ NULL,
1210      /* must/cannot opts */ aTo_P12MustList, NULL,
1211      /* option proc      */ NULL,
1212      /* desc, NAME, name */ TO_P12_DESC, TO_P12_NAME, TO_P12_name,
1213      /* disablement strs */ NULL, NULL },
1214
1215   {  /* entry idx, value */ 38, VALUE_OPT_TO_P8,
1216      /* equiv idx, value */ 38, VALUE_OPT_TO_P8,
1217      /* equivalenced to  */ NO_EQUIVALENT,
1218      /* min, max, act ct */ 0, 1, 0,
1219      /* opt state flags  */ TO_P8_FLAGS, 0,
1220      /* last opt argumnt */ { NULL }, /* --to-p8 */
1221      /* arg list/cookie  */ NULL,
1222      /* must/cannot opts */ NULL, NULL,
1223      /* option proc      */ NULL,
1224      /* desc, NAME, name */ TO_P8_DESC, TO_P8_NAME, TO_P8_name,
1225      /* disablement strs */ NULL, NULL },
1226
1227   {  /* entry idx, value */ 39, VALUE_OPT_PKCS8,
1228      /* equiv idx, value */ 39, VALUE_OPT_PKCS8,
1229      /* equivalenced to  */ NO_EQUIVALENT,
1230      /* min, max, act ct */ 0, 1, 0,
1231      /* opt state flags  */ PKCS8_FLAGS, 0,
1232      /* last opt argumnt */ { NULL }, /* --pkcs8 */
1233      /* arg list/cookie  */ NULL,
1234      /* must/cannot opts */ NULL, NULL,
1235      /* option proc      */ NULL,
1236      /* desc, NAME, name */ PKCS8_DESC, PKCS8_NAME, PKCS8_name,
1237      /* disablement strs */ NULL, NULL },
1238
1239   {  /* entry idx, value */ 40, VALUE_OPT_RSA,
1240      /* equiv idx, value */ 40, VALUE_OPT_RSA,
1241      /* equivalenced to  */ NO_EQUIVALENT,
1242      /* min, max, act ct */ 0, 1, 0,
1243      /* opt state flags  */ RSA_FLAGS, 0,
1244      /* last opt argumnt */ { NULL }, /* --rsa */
1245      /* arg list/cookie  */ NULL,
1246      /* must/cannot opts */ NULL, NULL,
1247      /* option proc      */ NULL,
1248      /* desc, NAME, name */ RSA_DESC, RSA_NAME, RSA_name,
1249      /* disablement strs */ NULL, NULL },
1250
1251   {  /* entry idx, value */ 41, VALUE_OPT_DSA,
1252      /* equiv idx, value */ 41, VALUE_OPT_DSA,
1253      /* equivalenced to  */ NO_EQUIVALENT,
1254      /* min, max, act ct */ 0, 1, 0,
1255      /* opt state flags  */ DSA_FLAGS, 0,
1256      /* last opt argumnt */ { NULL }, /* --dsa */
1257      /* arg list/cookie  */ NULL,
1258      /* must/cannot opts */ NULL, NULL,
1259      /* option proc      */ NULL,
1260      /* desc, NAME, name */ DSA_DESC, DSA_NAME, DSA_name,
1261      /* disablement strs */ NULL, NULL },
1262
1263   {  /* entry idx, value */ 42, VALUE_OPT_ECC,
1264      /* equiv idx, value */ 42, VALUE_OPT_ECC,
1265      /* equivalenced to  */ NO_EQUIVALENT,
1266      /* min, max, act ct */ 0, 1, 0,
1267      /* opt state flags  */ ECC_FLAGS, 0,
1268      /* last opt argumnt */ { NULL }, /* --ecc */
1269      /* arg list/cookie  */ NULL,
1270      /* must/cannot opts */ NULL, NULL,
1271      /* option proc      */ NULL,
1272      /* desc, NAME, name */ ECC_DESC, ECC_NAME, ECC_name,
1273      /* disablement strs */ NULL, NULL },
1274
1275   {  /* entry idx, value */ 43, VALUE_OPT_HASH,
1276      /* equiv idx, value */ 43, VALUE_OPT_HASH,
1277      /* equivalenced to  */ NO_EQUIVALENT,
1278      /* min, max, act ct */ 0, 1, 0,
1279      /* opt state flags  */ HASH_FLAGS, 0,
1280      /* last opt argumnt */ { NULL }, /* --hash */
1281      /* arg list/cookie  */ NULL,
1282      /* must/cannot opts */ NULL, NULL,
1283      /* option proc      */ NULL,
1284      /* desc, NAME, name */ HASH_DESC, HASH_NAME, HASH_name,
1285      /* disablement strs */ NULL, NULL },
1286
1287   {  /* entry idx, value */ 44, VALUE_OPT_INDER,
1288      /* equiv idx, value */ 44, VALUE_OPT_INDER,
1289      /* equivalenced to  */ NO_EQUIVALENT,
1290      /* min, max, act ct */ 0, 1, 0,
1291      /* opt state flags  */ INDER_FLAGS, 0,
1292      /* last opt argumnt */ { NULL }, /* --inder */
1293      /* arg list/cookie  */ NULL,
1294      /* must/cannot opts */ NULL, NULL,
1295      /* option proc      */ NULL,
1296      /* desc, NAME, name */ INDER_DESC, INDER_NAME, INDER_name,
1297      /* disablement strs */ NOT_INDER_name, NOT_INDER_PFX },
1298
1299   {  /* entry idx, value */ 45, VALUE_OPT_INRAW,
1300      /* equiv idx, value */ 45, VALUE_OPT_INRAW,
1301      /* equivalenced to  */ NO_EQUIVALENT,
1302      /* min, max, act ct */ 0, 1, 0,
1303      /* opt state flags  */ INRAW_FLAGS, 0,
1304      /* last opt argumnt */ { NULL }, /* --inraw */
1305      /* arg list/cookie  */ NULL,
1306      /* must/cannot opts */ NULL, NULL,
1307      /* option proc      */ doOptInraw,
1308      /* desc, NAME, name */ INRAW_DESC, INRAW_NAME, INRAW_name,
1309      /* disablement strs */ 0, 0 },
1310
1311   {  /* entry idx, value */ 46, VALUE_OPT_OUTDER,
1312      /* equiv idx, value */ 46, VALUE_OPT_OUTDER,
1313      /* equivalenced to  */ NO_EQUIVALENT,
1314      /* min, max, act ct */ 0, 1, 0,
1315      /* opt state flags  */ OUTDER_FLAGS, 0,
1316      /* last opt argumnt */ { NULL }, /* --outder */
1317      /* arg list/cookie  */ NULL,
1318      /* must/cannot opts */ NULL, NULL,
1319      /* option proc      */ NULL,
1320      /* desc, NAME, name */ OUTDER_DESC, OUTDER_NAME, OUTDER_name,
1321      /* disablement strs */ NOT_OUTDER_name, NOT_OUTDER_PFX },
1322
1323   {  /* entry idx, value */ 47, VALUE_OPT_OUTRAW,
1324      /* equiv idx, value */ 47, VALUE_OPT_OUTRAW,
1325      /* equivalenced to  */ NO_EQUIVALENT,
1326      /* min, max, act ct */ 0, 1, 0,
1327      /* opt state flags  */ OUTRAW_FLAGS, 0,
1328      /* last opt argumnt */ { NULL }, /* --outraw */
1329      /* arg list/cookie  */ NULL,
1330      /* must/cannot opts */ NULL, NULL,
1331      /* option proc      */ doOptOutraw,
1332      /* desc, NAME, name */ OUTRAW_DESC, OUTRAW_NAME, OUTRAW_name,
1333      /* disablement strs */ 0, 0 },
1334
1335   {  /* entry idx, value */ 48, VALUE_OPT_BITS,
1336      /* equiv idx, value */ 48, VALUE_OPT_BITS,
1337      /* equivalenced to  */ NO_EQUIVALENT,
1338      /* min, max, act ct */ 0, 1, 0,
1339      /* opt state flags  */ BITS_FLAGS, 0,
1340      /* last opt argumnt */ { NULL }, /* --bits */
1341      /* arg list/cookie  */ NULL,
1342      /* must/cannot opts */ NULL, NULL,
1343      /* option proc      */ optionNumericVal,
1344      /* desc, NAME, name */ BITS_DESC, BITS_NAME, BITS_name,
1345      /* disablement strs */ NULL, NULL },
1346
1347   {  /* entry idx, value */ 49, VALUE_OPT_SEC_PARAM,
1348      /* equiv idx, value */ 49, VALUE_OPT_SEC_PARAM,
1349      /* equivalenced to  */ NO_EQUIVALENT,
1350      /* min, max, act ct */ 0, 1, 0,
1351      /* opt state flags  */ SEC_PARAM_FLAGS, 0,
1352      /* last opt argumnt */ { NULL }, /* --sec-param */
1353      /* arg list/cookie  */ NULL,
1354      /* must/cannot opts */ NULL, NULL,
1355      /* option proc      */ NULL,
1356      /* desc, NAME, name */ SEC_PARAM_DESC, SEC_PARAM_NAME, SEC_PARAM_name,
1357      /* disablement strs */ NULL, NULL },
1358
1359   {  /* entry idx, value */ 50, VALUE_OPT_DISABLE_QUICK_RANDOM,
1360      /* equiv idx, value */ 50, VALUE_OPT_DISABLE_QUICK_RANDOM,
1361      /* equivalenced to  */ NO_EQUIVALENT,
1362      /* min, max, act ct */ 0, 1, 0,
1363      /* opt state flags  */ DISABLE_QUICK_RANDOM_FLAGS, 0,
1364      /* last opt argumnt */ { NULL }, /* --disable-quick-random */
1365      /* arg list/cookie  */ NULL,
1366      /* must/cannot opts */ NULL, NULL,
1367      /* option proc      */ NULL,
1368      /* desc, NAME, name */ DISABLE_QUICK_RANDOM_DESC, DISABLE_QUICK_RANDOM_NAME, DISABLE_QUICK_RANDOM_name,
1369      /* disablement strs */ NULL, NULL },
1370
1371   {  /* entry idx, value */ 51, VALUE_OPT_TEMPLATE,
1372      /* equiv idx, value */ 51, VALUE_OPT_TEMPLATE,
1373      /* equivalenced to  */ NO_EQUIVALENT,
1374      /* min, max, act ct */ 0, 1, 0,
1375      /* opt state flags  */ TEMPLATE_FLAGS, 0,
1376      /* last opt argumnt */ { NULL }, /* --template */
1377      /* arg list/cookie  */ NULL,
1378      /* must/cannot opts */ NULL, NULL,
1379      /* option proc      */ doOptTemplate,
1380      /* desc, NAME, name */ TEMPLATE_DESC, TEMPLATE_NAME, TEMPLATE_name,
1381      /* disablement strs */ NULL, NULL },
1382
1383   {  /* entry idx, value */ 52, VALUE_OPT_PKCS_CIPHER,
1384      /* equiv idx, value */ 52, VALUE_OPT_PKCS_CIPHER,
1385      /* equivalenced to  */ NO_EQUIVALENT,
1386      /* min, max, act ct */ 0, 1, 0,
1387      /* opt state flags  */ PKCS_CIPHER_FLAGS, 0,
1388      /* last opt argumnt */ { NULL }, /* --pkcs-cipher */
1389      /* arg list/cookie  */ NULL,
1390      /* must/cannot opts */ NULL, NULL,
1391      /* option proc      */ NULL,
1392      /* desc, NAME, name */ PKCS_CIPHER_DESC, PKCS_CIPHER_NAME, PKCS_CIPHER_name,
1393      /* disablement strs */ NULL, NULL },
1394
1395   {  /* entry idx, value */ INDEX_OPT_VERSION, VALUE_OPT_VERSION,
1396      /* equiv idx value  */ NO_EQUIVALENT, VALUE_OPT_VERSION,
1397      /* equivalenced to  */ NO_EQUIVALENT,
1398      /* min, max, act ct */ 0, 1, 0,
1399      /* opt state flags  */ VER_FLAGS, 0,
1400      /* last opt argumnt */ { NULL },
1401      /* arg list/cookie  */ NULL,
1402      /* must/cannot opts */ NULL, NULL,
1403      /* option proc      */ VER_PROC,
1404      /* desc, NAME, name */ VER_DESC, NULL, VER_name,
1405      /* disablement strs */ NULL, NULL },
1406
1407
1408
1409   {  /* entry idx, value */ INDEX_OPT_HELP, VALUE_OPT_HELP,
1410      /* equiv idx value  */ NO_EQUIVALENT, VALUE_OPT_HELP,
1411      /* equivalenced to  */ NO_EQUIVALENT,
1412      /* min, max, act ct */ 0, 1, 0,
1413      /* opt state flags  */ OPTST_IMM | OPTST_NO_INIT, 0,
1414      /* last opt argumnt */ { NULL },
1415      /* arg list/cookie  */ NULL,
1416      /* must/cannot opts */ NULL, NULL,
1417      /* option proc      */ doUsageOpt,
1418      /* desc, NAME, name */ HELP_DESC, NULL, HELP_name,
1419      /* disablement strs */ NULL, NULL },
1420
1421   {  /* entry idx, value */ INDEX_OPT_MORE_HELP, VALUE_OPT_MORE_HELP,
1422      /* equiv idx value  */ NO_EQUIVALENT, VALUE_OPT_MORE_HELP,
1423      /* equivalenced to  */ NO_EQUIVALENT,
1424      /* min, max, act ct */ 0, 1, 0,
1425      /* opt state flags  */ MORE_HELP_FLAGS, 0,
1426      /* last opt argumnt */ { NULL },
1427      /* arg list/cookie  */ NULL,
1428      /* must/cannot opts */ NULL,  NULL,
1429      /* option proc      */ optionPagedUsage,
1430      /* desc, NAME, name */ MORE_HELP_DESC, NULL, MORE_HELP_name,
1431      /* disablement strs */ NULL, NULL }
1432 };
1433
1434
1435 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
1436  *
1437  *  Define the certtool Option Environment
1438  */
1439 #define zPROGNAME       (certtool_opt_strs+4206)
1440 #define zUsageTitle     (certtool_opt_strs+4215)
1441 #define zRcName         NULL
1442 #define apzHomeList     NULL
1443 #define zBugsAddr       (certtool_opt_strs+4319)
1444 #define zExplain        (certtool_opt_strs+4338)
1445 #define zDetail         (certtool_opt_strs+4341)
1446 #define zFullVersion    (certtool_opt_strs+4515)
1447 /* extracted from optcode.tlib near line 350 */
1448
1449 #if defined(ENABLE_NLS)
1450 # define OPTPROC_BASE OPTPROC_TRANSLATE | OPTPROC_NXLAT_OPT
1451   static tOptionXlateProc translate_option_strings;
1452 #else
1453 # define OPTPROC_BASE OPTPROC_NONE
1454 # define translate_option_strings NULL
1455 #endif /* ENABLE_NLS */
1456
1457
1458 #define certtool_full_usage (NULL)
1459
1460 #define certtool_short_usage (certtool_opt_strs+4531)
1461
1462 #endif /* not defined __doxygen__ */
1463
1464 /*
1465  *  Create the static procedure(s) declared above.
1466  */
1467 /**
1468  * The callout function that invokes the optionUsage function.
1469  *
1470  * @param pOptions the AutoOpts option description structure
1471  * @param pOptDesc the descriptor for the "help" (usage) option.
1472  * @noreturn
1473  */
1474 static void
1475 doUsageOpt(tOptions * pOptions, tOptDesc * pOptDesc)
1476 {
1477     optionUsage(&certtoolOptions, CERTTOOL_EXIT_SUCCESS);
1478     /* NOTREACHED */
1479     (void)pOptDesc;
1480     (void)pOptions;
1481 }
1482
1483 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
1484 /**
1485  * Code to handle the debug option.
1486  *
1487  * @param pOptions the certtool options data structure
1488  * @param pOptDesc the option descriptor for this option.
1489  */
1490 static void
1491 doOptDebug(tOptions* pOptions, tOptDesc* pOptDesc)
1492 {
1493     static struct {long rmin, rmax;} const rng[1] = {
1494         { 0 ,  9999 } };
1495     int  ix;
1496
1497     if (pOptions <= OPTPROC_EMIT_LIMIT)
1498         goto emit_ranges;
1499     optionNumericVal(pOptions, pOptDesc);
1500
1501     for (ix = 0; ix < 1; ix++) {
1502         if (pOptDesc->optArg.argInt < rng[ix].rmin)
1503             continue;  /* ranges need not be ordered. */
1504         if (pOptDesc->optArg.argInt == rng[ix].rmin)
1505             return;
1506         if (rng[ix].rmax == LONG_MIN)
1507             continue;
1508         if (pOptDesc->optArg.argInt <= rng[ix].rmax)
1509             return;
1510     }
1511
1512     option_usage_fp = stderr;
1513
1514 emit_ranges:
1515
1516     optionShowRange(pOptions, pOptDesc, (void *)rng, 1);
1517 }
1518
1519 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
1520 /**
1521  * Code to handle the infile option.
1522  *
1523  * @param pOptions the certtool options data structure
1524  * @param pOptDesc the option descriptor for this option.
1525  */
1526 static void
1527 doOptInfile(tOptions* pOptions, tOptDesc* pOptDesc)
1528 {
1529     static teOptFileType const  type =
1530         FTYPE_MODE_MUST_EXIST + FTYPE_MODE_NO_OPEN;
1531     static tuFileMode           mode;
1532 #ifndef O_CLOEXEC
1533 #  define O_CLOEXEC 0
1534 #endif
1535     mode.file_flags = O_CLOEXEC;
1536
1537     optionFileCheck(pOptions, pOptDesc, type, mode);
1538 }
1539
1540 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
1541 /**
1542  * Code to handle the load-request option.
1543  *
1544  * @param pOptions the certtool options data structure
1545  * @param pOptDesc the option descriptor for this option.
1546  */
1547 static void
1548 doOptLoad_Request(tOptions* pOptions, tOptDesc* pOptDesc)
1549 {
1550     static teOptFileType const  type =
1551         FTYPE_MODE_MUST_EXIST + FTYPE_MODE_NO_OPEN;
1552     static tuFileMode           mode;
1553 #ifndef O_CLOEXEC
1554 #  define O_CLOEXEC 0
1555 #endif
1556     mode.file_flags = O_CLOEXEC;
1557
1558     optionFileCheck(pOptions, pOptDesc, type, mode);
1559 }
1560
1561 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
1562 /**
1563  * Code to handle the inraw option.
1564  *
1565  * @param pOptions the certtool options data structure
1566  * @param pOptDesc the option descriptor for this option.
1567  */
1568 static void
1569 doOptInraw(tOptions* pOptions, tOptDesc* pOptDesc)
1570 {
1571     int res = optionAlias(pOptions, pOptDesc, INDEX_OPT_INDER);
1572     if ((res != 0) && ((pOptions->fOptSet & OPTPROC_ERRSTOP) != 0))
1573         USAGE(CERTTOOL_EXIT_FAILURE);
1574
1575 }
1576
1577 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
1578 /**
1579  * Code to handle the outraw option.
1580  *
1581  * @param pOptions the certtool options data structure
1582  * @param pOptDesc the option descriptor for this option.
1583  */
1584 static void
1585 doOptOutraw(tOptions* pOptions, tOptDesc* pOptDesc)
1586 {
1587     int res = optionAlias(pOptions, pOptDesc, INDEX_OPT_OUTDER);
1588     if ((res != 0) && ((pOptions->fOptSet & OPTPROC_ERRSTOP) != 0))
1589         USAGE(CERTTOOL_EXIT_FAILURE);
1590
1591 }
1592
1593 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
1594 /**
1595  * Code to handle the template option.
1596  *
1597  * @param pOptions the certtool options data structure
1598  * @param pOptDesc the option descriptor for this option.
1599  */
1600 static void
1601 doOptTemplate(tOptions* pOptions, tOptDesc* pOptDesc)
1602 {
1603     static teOptFileType const  type =
1604         FTYPE_MODE_MUST_EXIST + FTYPE_MODE_NO_OPEN;
1605     static tuFileMode           mode;
1606 #ifndef O_CLOEXEC
1607 #  define O_CLOEXEC 0
1608 #endif
1609     mode.file_flags = O_CLOEXEC;
1610
1611     optionFileCheck(pOptions, pOptDesc, type, mode);
1612 }
1613 /* extracted from optmain.tlib near line 1113 */
1614
1615 /**
1616  * The directory containing the data associated with certtool.
1617  */
1618 #ifndef  PKGDATADIR
1619 # define PKGDATADIR ""
1620 #endif
1621
1622 /**
1623  * Information about the person or institution that packaged certtool
1624  * for the current distribution.
1625  */
1626 #ifndef  WITH_PACKAGER
1627 # define certtool_packager_info NULL
1628 #else
1629 static char const certtool_packager_info[] =
1630     "Packaged by " WITH_PACKAGER
1631
1632 # ifdef WITH_PACKAGER_VERSION
1633         " ("WITH_PACKAGER_VERSION")"
1634 # endif
1635
1636 # ifdef WITH_PACKAGER_BUG_REPORTS
1637     "\nReport certtool bugs to " WITH_PACKAGER_BUG_REPORTS
1638 # endif
1639     "\n";
1640 #endif
1641 #ifndef __doxygen__
1642
1643 #endif /* __doxygen__ */
1644 /**
1645  * The option definitions for certtool.  The one structure that
1646  * binds them all.
1647  */
1648 tOptions certtoolOptions = {
1649     OPTIONS_STRUCT_VERSION,
1650     0, NULL,                    /* original argc + argv    */
1651     ( OPTPROC_BASE
1652     + OPTPROC_ERRSTOP
1653     + OPTPROC_SHORTOPT
1654     + OPTPROC_LONGOPT
1655     + OPTPROC_NO_REQ_OPT
1656     + OPTPROC_NEGATIONS
1657     + OPTPROC_NO_ARGS
1658     + OPTPROC_GNUUSAGE
1659     + OPTPROC_MISUSE ),
1660     0, NULL,                    /* current option index, current option */
1661     NULL,         NULL,         zPROGNAME,
1662     zRcName,      zCopyright,   zLicenseDescrip,
1663     zFullVersion, apzHomeList,  zUsageTitle,
1664     zExplain,     zDetail,      optDesc,
1665     zBugsAddr,                  /* address to send bugs to */
1666     NULL, NULL,                 /* extensions/saved state  */
1667     optionUsage, /* usage procedure */
1668     translate_option_strings,   /* translation procedure */
1669     /*
1670      *  Indexes to special options
1671      */
1672     { INDEX_OPT_MORE_HELP, /* more-help option index */
1673       NO_EQUIVALENT, /* save option index */
1674       NO_EQUIVALENT, /* '-#' option index */
1675       NO_EQUIVALENT /* index of default opt */
1676     },
1677     56 /* full option count */, 53 /* user option count */,
1678     certtool_full_usage, certtool_short_usage,
1679     NULL, NULL,
1680     PKGDATADIR, certtool_packager_info
1681 };
1682
1683 #if ENABLE_NLS
1684 #include <stdio.h>
1685 #include <stdlib.h>
1686 #include <string.h>
1687 #include <unistd.h>
1688 #include <autoopts/usage-txt.h>
1689
1690 static char* AO_gettext(char const* pz);
1691 static void  coerce_it(void** s);
1692
1693 /**
1694  * AutoGen specific wrapper function for gettext.
1695  * It relies on the macro _() to convert from English to the target
1696  * language, then strdup-duplicates the result string.
1697  *
1698  * @param[in] pz the input text used as a lookup key.
1699  * @returns the translated text (if there is one),
1700  *   or the original text (if not).
1701  */
1702 static char *
1703 AO_gettext(char const* pz)
1704 {
1705     char* pzRes;
1706     if (pz == NULL)
1707         return NULL;
1708     pzRes = _(pz);
1709     if (pzRes == pz)
1710         return pzRes;
1711     pzRes = strdup(pzRes);
1712     if (pzRes == NULL) {
1713         fputs(_("No memory for duping translated strings\n"), stderr);
1714         exit(CERTTOOL_EXIT_FAILURE);
1715     }
1716     return pzRes;
1717 }
1718
1719 static void coerce_it(void** s) { *s = AO_gettext(*s);
1720 }
1721
1722 /**
1723  * Translate all the translatable strings in the certtoolOptions
1724  * structure defined above.  This is done only once.
1725  */
1726 static void
1727 translate_option_strings(void)
1728 {
1729     tOptions * const pOpt = &certtoolOptions;
1730
1731     /*
1732      *  Guard against re-translation.  It won't work.  The strings will have
1733      *  been changed by the first pass through this code.  One shot only.
1734      */
1735     if (option_usage_text.field_ct != 0) {
1736         /*
1737          *  Do the translations.  The first pointer follows the field count
1738          *  field.  The field count field is the size of a pointer.
1739          */
1740         tOptDesc * pOD = pOpt->pOptDesc;
1741         char **    ppz = (char**)(void*)&(option_usage_text);
1742         int        ix  = option_usage_text.field_ct;
1743
1744         do {
1745             ppz++;
1746             *ppz = AO_gettext(*ppz);
1747         } while (--ix > 0);
1748
1749         coerce_it((void*)&(pOpt->pzCopyright));
1750         coerce_it((void*)&(pOpt->pzCopyNotice));
1751         coerce_it((void*)&(pOpt->pzFullVersion));
1752         coerce_it((void*)&(pOpt->pzUsageTitle));
1753         coerce_it((void*)&(pOpt->pzExplain));
1754         coerce_it((void*)&(pOpt->pzDetail));
1755         coerce_it((void*)&(pOpt->pzPackager));
1756         coerce_it((void*)&(pOpt->pzShortUsage));
1757         option_usage_text.field_ct = 0;
1758
1759         for (ix = pOpt->optCt; ix > 0; ix--, pOD++)
1760             coerce_it((void*)&(pOD->pzText));
1761     }
1762
1763     if ((pOpt->fOptSet & OPTPROC_NXLAT_OPT_CFG) == 0) {
1764         tOptDesc * pOD = pOpt->pOptDesc;
1765         int        ix;
1766
1767         for (ix = pOpt->optCt; ix > 0; ix--, pOD++) {
1768             coerce_it((void*)&(pOD->pz_Name));
1769             coerce_it((void*)&(pOD->pz_DisableName));
1770             coerce_it((void*)&(pOD->pz_DisablePfx));
1771         }
1772         /* prevent re-translation */
1773         certtoolOptions.fOptSet |= OPTPROC_NXLAT_OPT_CFG | OPTPROC_NXLAT_OPT;
1774     }
1775 }
1776
1777 #endif /* ENABLE_NLS */
1778
1779 #ifdef  __cplusplus
1780 }
1781 #endif
1782 /* certtool-args.c ends here */