summaryrefslogtreecommitdiffstats
path: root/src/certtool-options.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/certtool-options.h')
-rw-r--r--src/certtool-options.h522
1 files changed, 522 insertions, 0 deletions
diff --git a/src/certtool-options.h b/src/certtool-options.h
new file mode 100644
index 0000000..e18280a
--- /dev/null
+++ b/src/certtool-options.h
@@ -0,0 +1,522 @@
+#include <stdbool.h>
+#include <stdio.h>
+
+#ifndef CERTTOOL_OPTIONS_H_
+#define CERTTOOL_OPTIONS_H_ 1
+
+struct certtool_list
+{
+ const char **args;
+ unsigned int count;
+};
+
+struct certtool_options
+{
+ /* Options present in the command line */
+ struct
+ {
+ bool debug;
+ bool verbose;
+ bool infile;
+ bool outfile;
+ bool certificate_info;
+ bool pubkey_info;
+ bool generate_self_signed;
+ bool generate_certificate;
+ bool generate_proxy;
+ bool update_certificate;
+ bool fingerprint;
+ bool key_id;
+ bool certificate_pubkey;
+ bool v1;
+ bool sign_params;
+ bool crq_info;
+ bool generate_request;
+ bool no_crq_extensions;
+ bool p12_info;
+ bool p12_name;
+ bool to_p12;
+ bool key_info;
+ bool p8_info;
+ bool to_rsa;
+ bool generate_privkey;
+ bool key_type;
+ bool bits;
+ bool curve;
+ bool sec_param;
+ bool to_p8;
+ bool pkcs8;
+ bool provable;
+ bool verify_provable_privkey;
+ bool seed;
+ bool crl_info;
+ bool generate_crl;
+ bool verify_crl;
+ bool verify_chain;
+ bool verify;
+ bool verify_hostname;
+ bool verify_email;
+ bool verify_purpose;
+ bool verify_allow_broken;
+ bool verify_profile;
+ bool p7_generate;
+ bool p7_sign;
+ bool p7_detached_sign;
+ bool p7_include_cert;
+ bool p7_time;
+ bool p7_show_data;
+ bool p7_info;
+ bool p7_verify;
+ bool smime_to_p7;
+ bool generate_dh_params;
+ bool get_dh_params;
+ bool dh_info;
+ bool load_privkey;
+ bool load_pubkey;
+ bool load_request;
+ bool load_certificate;
+ bool load_ca_privkey;
+ bool load_ca_certificate;
+ bool load_crl;
+ bool load_data;
+ bool password;
+ bool null_password;
+ bool empty_password;
+ bool hex_numbers;
+ bool cprint;
+ bool rsa;
+ bool dsa;
+ bool ecc;
+ bool hash;
+ bool salt_size;
+ bool inder;
+ bool outder;
+ bool disable_quick_random;
+ bool template;
+ bool stdout_info;
+ bool ask_pass;
+ bool pkcs_cipher;
+ bool provider;
+ bool text;
+ bool version;
+ bool help;
+ bool more_help;
+ } present;
+
+ /* Option arguments in raw string form */
+ struct
+ {
+ const char *debug;
+ const char *infile;
+ const char *outfile;
+ const char *sign_params;
+ const char *p12_name;
+ const char *key_type;
+ const char *bits;
+ const char *curve;
+ const char *sec_param;
+ const char *seed;
+ const char *verify_hostname;
+ const char *verify_email;
+ const char *verify_purpose;
+ const char *verify_profile;
+ const char *load_privkey;
+ const char *load_pubkey;
+ const char *load_request;
+ const char *load_certificate;
+ const char *load_ca_privkey;
+ const char *load_ca_certificate;
+ const char *load_crl;
+ const char *load_data;
+ const char *password;
+ const char *hash;
+ const char *salt_size;
+ const char *template;
+ const char *pkcs_cipher;
+ const char *provider;
+ const char *version;
+ } arg;
+
+ /* Option arguments parsed as integer */
+ struct
+ {
+ int debug;
+ int bits;
+ int salt_size;
+ } value;
+
+ /* Option enablement status */
+ struct
+ {
+ bool debug;
+ bool verbose;
+ bool infile;
+ bool outfile;
+ bool certificate_info;
+ bool pubkey_info;
+ bool generate_self_signed;
+ bool generate_certificate;
+ bool generate_proxy;
+ bool update_certificate;
+ bool fingerprint;
+ bool key_id;
+ bool certificate_pubkey;
+ bool v1;
+ bool sign_params;
+ bool crq_info;
+ bool generate_request;
+ bool no_crq_extensions;
+ bool p12_info;
+ bool p12_name;
+ bool to_p12;
+ bool key_info;
+ bool p8_info;
+ bool to_rsa;
+ bool generate_privkey;
+ bool key_type;
+ bool bits;
+ bool curve;
+ bool sec_param;
+ bool to_p8;
+ bool pkcs8;
+ bool provable;
+ bool verify_provable_privkey;
+ bool seed;
+ bool crl_info;
+ bool generate_crl;
+ bool verify_crl;
+ bool verify_chain;
+ bool verify;
+ bool verify_hostname;
+ bool verify_email;
+ bool verify_purpose;
+ bool verify_allow_broken;
+ bool verify_profile;
+ bool p7_generate;
+ bool p7_sign;
+ bool p7_detached_sign;
+ bool p7_include_cert;
+ bool p7_time;
+ bool p7_show_data;
+ bool p7_info;
+ bool p7_verify;
+ bool smime_to_p7;
+ bool generate_dh_params;
+ bool get_dh_params;
+ bool dh_info;
+ bool load_privkey;
+ bool load_pubkey;
+ bool load_request;
+ bool load_certificate;
+ bool load_ca_privkey;
+ bool load_ca_certificate;
+ bool load_crl;
+ bool load_data;
+ bool password;
+ bool null_password;
+ bool empty_password;
+ bool hex_numbers;
+ bool cprint;
+ bool rsa;
+ bool dsa;
+ bool ecc;
+ bool hash;
+ bool salt_size;
+ bool inder;
+ bool outder;
+ bool disable_quick_random;
+ bool template;
+ bool stdout_info;
+ bool ask_pass;
+ bool pkcs_cipher;
+ bool provider;
+ bool text;
+ bool version;
+ bool help;
+ bool more_help;
+ } enabled;
+};
+
+#define HAVE_OPT(name) HAVE_OPT_ ## name
+#define OPT_ARG(name) OPT_ARG_ ## name
+#define ENABLED_OPT(name) ENABLED_OPT_ ## name
+#define OPTS_COUNT(name) OPTS_COUNT_ ## name
+#define OPTS_ARRAY(name) OPTS_ARRAY_ ## name
+#define USAGE(status) usage (stdout, (status))
+
+#define HAVE_OPT_DEBUG certtool_options.present.debug
+#define HAVE_OPT_VERBOSE certtool_options.present.verbose
+#define HAVE_OPT_INFILE certtool_options.present.infile
+#define HAVE_OPT_OUTFILE certtool_options.present.outfile
+#define HAVE_OPT_CERTIFICATE_INFO certtool_options.present.certificate_info
+#define HAVE_OPT_PUBKEY_INFO certtool_options.present.pubkey_info
+#define HAVE_OPT_GENERATE_SELF_SIGNED certtool_options.present.generate_self_signed
+#define HAVE_OPT_GENERATE_CERTIFICATE certtool_options.present.generate_certificate
+#define HAVE_OPT_GENERATE_PROXY certtool_options.present.generate_proxy
+#define HAVE_OPT_UPDATE_CERTIFICATE certtool_options.present.update_certificate
+#define HAVE_OPT_FINGERPRINT certtool_options.present.fingerprint
+#define HAVE_OPT_KEY_ID certtool_options.present.key_id
+#define HAVE_OPT_CERTIFICATE_PUBKEY certtool_options.present.certificate_pubkey
+#define HAVE_OPT_V1 certtool_options.present.v1
+#define HAVE_OPT_SIGN_PARAMS certtool_options.present.sign_params
+#define HAVE_OPT_CRQ_INFO certtool_options.present.crq_info
+#define HAVE_OPT_GENERATE_REQUEST certtool_options.present.generate_request
+#define HAVE_OPT_NO_CRQ_EXTENSIONS certtool_options.present.no_crq_extensions
+#define HAVE_OPT_P12_INFO certtool_options.present.p12_info
+#define HAVE_OPT_P12_NAME certtool_options.present.p12_name
+#define HAVE_OPT_TO_P12 certtool_options.present.to_p12
+#define HAVE_OPT_KEY_INFO certtool_options.present.key_info
+#define HAVE_OPT_P8_INFO certtool_options.present.p8_info
+#define HAVE_OPT_TO_RSA certtool_options.present.to_rsa
+#define HAVE_OPT_GENERATE_PRIVKEY certtool_options.present.generate_privkey
+#define HAVE_OPT_KEY_TYPE certtool_options.present.key_type
+#define HAVE_OPT_BITS certtool_options.present.bits
+#define HAVE_OPT_CURVE certtool_options.present.curve
+#define HAVE_OPT_SEC_PARAM certtool_options.present.sec_param
+#define HAVE_OPT_TO_P8 certtool_options.present.to_p8
+#define HAVE_OPT_PKCS8 certtool_options.present.pkcs8
+#define HAVE_OPT_PROVABLE certtool_options.present.provable
+#define HAVE_OPT_VERIFY_PROVABLE_PRIVKEY certtool_options.present.verify_provable_privkey
+#define HAVE_OPT_SEED certtool_options.present.seed
+#define HAVE_OPT_CRL_INFO certtool_options.present.crl_info
+#define HAVE_OPT_GENERATE_CRL certtool_options.present.generate_crl
+#define HAVE_OPT_VERIFY_CRL certtool_options.present.verify_crl
+#define HAVE_OPT_VERIFY_CHAIN certtool_options.present.verify_chain
+#define HAVE_OPT_VERIFY certtool_options.present.verify
+#define HAVE_OPT_VERIFY_HOSTNAME certtool_options.present.verify_hostname
+#define HAVE_OPT_VERIFY_EMAIL certtool_options.present.verify_email
+#define HAVE_OPT_VERIFY_PURPOSE certtool_options.present.verify_purpose
+#define HAVE_OPT_VERIFY_ALLOW_BROKEN certtool_options.present.verify_allow_broken
+#define HAVE_OPT_VERIFY_PROFILE certtool_options.present.verify_profile
+#define HAVE_OPT_P7_GENERATE certtool_options.present.p7_generate
+#define HAVE_OPT_P7_SIGN certtool_options.present.p7_sign
+#define HAVE_OPT_P7_DETACHED_SIGN certtool_options.present.p7_detached_sign
+#define HAVE_OPT_P7_INCLUDE_CERT certtool_options.present.p7_include_cert
+#define HAVE_OPT_P7_TIME certtool_options.present.p7_time
+#define HAVE_OPT_P7_SHOW_DATA certtool_options.present.p7_show_data
+#define HAVE_OPT_P7_INFO certtool_options.present.p7_info
+#define HAVE_OPT_P7_VERIFY certtool_options.present.p7_verify
+#define HAVE_OPT_SMIME_TO_P7 certtool_options.present.smime_to_p7
+#define HAVE_OPT_GENERATE_DH_PARAMS certtool_options.present.generate_dh_params
+#define HAVE_OPT_GET_DH_PARAMS certtool_options.present.get_dh_params
+#define HAVE_OPT_DH_INFO certtool_options.present.dh_info
+#define HAVE_OPT_LOAD_PRIVKEY certtool_options.present.load_privkey
+#define HAVE_OPT_LOAD_PUBKEY certtool_options.present.load_pubkey
+#define HAVE_OPT_LOAD_REQUEST certtool_options.present.load_request
+#define HAVE_OPT_LOAD_CERTIFICATE certtool_options.present.load_certificate
+#define HAVE_OPT_LOAD_CA_PRIVKEY certtool_options.present.load_ca_privkey
+#define HAVE_OPT_LOAD_CA_CERTIFICATE certtool_options.present.load_ca_certificate
+#define HAVE_OPT_LOAD_CRL certtool_options.present.load_crl
+#define HAVE_OPT_LOAD_DATA certtool_options.present.load_data
+#define HAVE_OPT_PASSWORD certtool_options.present.password
+#define HAVE_OPT_NULL_PASSWORD certtool_options.present.null_password
+#define HAVE_OPT_EMPTY_PASSWORD certtool_options.present.empty_password
+#define HAVE_OPT_HEX_NUMBERS certtool_options.present.hex_numbers
+#define HAVE_OPT_CPRINT certtool_options.present.cprint
+#define HAVE_OPT_RSA certtool_options.present.rsa
+#define HAVE_OPT_DSA certtool_options.present.dsa
+#define HAVE_OPT_ECC certtool_options.present.ecc
+#define HAVE_OPT_HASH certtool_options.present.hash
+#define HAVE_OPT_SALT_SIZE certtool_options.present.salt_size
+#define HAVE_OPT_INDER certtool_options.present.inder
+#define HAVE_OPT_OUTDER certtool_options.present.outder
+#define HAVE_OPT_DISABLE_QUICK_RANDOM certtool_options.present.disable_quick_random
+#define HAVE_OPT_TEMPLATE certtool_options.present.template
+#define HAVE_OPT_STDOUT_INFO certtool_options.present.stdout_info
+#define HAVE_OPT_ASK_PASS certtool_options.present.ask_pass
+#define HAVE_OPT_PKCS_CIPHER certtool_options.present.pkcs_cipher
+#define HAVE_OPT_PROVIDER certtool_options.present.provider
+#define HAVE_OPT_TEXT certtool_options.present.text
+#define HAVE_OPT_VERSION certtool_options.present.version
+#define HAVE_OPT_HELP certtool_options.present.help
+#define HAVE_OPT_MORE_HELP certtool_options.present.more_help
+
+#define OPT_ARG_DEBUG certtool_options.arg.debug
+#define OPT_ARG_VERBOSE certtool_options.arg.verbose
+#define OPT_ARG_INFILE certtool_options.arg.infile
+#define OPT_ARG_OUTFILE certtool_options.arg.outfile
+#define OPT_ARG_CERTIFICATE_INFO certtool_options.arg.certificate_info
+#define OPT_ARG_PUBKEY_INFO certtool_options.arg.pubkey_info
+#define OPT_ARG_GENERATE_SELF_SIGNED certtool_options.arg.generate_self_signed
+#define OPT_ARG_GENERATE_CERTIFICATE certtool_options.arg.generate_certificate
+#define OPT_ARG_GENERATE_PROXY certtool_options.arg.generate_proxy
+#define OPT_ARG_UPDATE_CERTIFICATE certtool_options.arg.update_certificate
+#define OPT_ARG_FINGERPRINT certtool_options.arg.fingerprint
+#define OPT_ARG_KEY_ID certtool_options.arg.key_id
+#define OPT_ARG_CERTIFICATE_PUBKEY certtool_options.arg.certificate_pubkey
+#define OPT_ARG_V1 certtool_options.arg.v1
+#define OPT_ARG_SIGN_PARAMS certtool_options.arg.sign_params
+#define OPT_ARG_CRQ_INFO certtool_options.arg.crq_info
+#define OPT_ARG_GENERATE_REQUEST certtool_options.arg.generate_request
+#define OPT_ARG_NO_CRQ_EXTENSIONS certtool_options.arg.no_crq_extensions
+#define OPT_ARG_P12_INFO certtool_options.arg.p12_info
+#define OPT_ARG_P12_NAME certtool_options.arg.p12_name
+#define OPT_ARG_TO_P12 certtool_options.arg.to_p12
+#define OPT_ARG_KEY_INFO certtool_options.arg.key_info
+#define OPT_ARG_P8_INFO certtool_options.arg.p8_info
+#define OPT_ARG_TO_RSA certtool_options.arg.to_rsa
+#define OPT_ARG_GENERATE_PRIVKEY certtool_options.arg.generate_privkey
+#define OPT_ARG_KEY_TYPE certtool_options.arg.key_type
+#define OPT_ARG_BITS certtool_options.arg.bits
+#define OPT_ARG_CURVE certtool_options.arg.curve
+#define OPT_ARG_SEC_PARAM certtool_options.arg.sec_param
+#define OPT_ARG_TO_P8 certtool_options.arg.to_p8
+#define OPT_ARG_PKCS8 certtool_options.arg.pkcs8
+#define OPT_ARG_PROVABLE certtool_options.arg.provable
+#define OPT_ARG_VERIFY_PROVABLE_PRIVKEY certtool_options.arg.verify_provable_privkey
+#define OPT_ARG_SEED certtool_options.arg.seed
+#define OPT_ARG_CRL_INFO certtool_options.arg.crl_info
+#define OPT_ARG_GENERATE_CRL certtool_options.arg.generate_crl
+#define OPT_ARG_VERIFY_CRL certtool_options.arg.verify_crl
+#define OPT_ARG_VERIFY_CHAIN certtool_options.arg.verify_chain
+#define OPT_ARG_VERIFY certtool_options.arg.verify
+#define OPT_ARG_VERIFY_HOSTNAME certtool_options.arg.verify_hostname
+#define OPT_ARG_VERIFY_EMAIL certtool_options.arg.verify_email
+#define OPT_ARG_VERIFY_PURPOSE certtool_options.arg.verify_purpose
+#define OPT_ARG_VERIFY_ALLOW_BROKEN certtool_options.arg.verify_allow_broken
+#define OPT_ARG_VERIFY_PROFILE certtool_options.arg.verify_profile
+#define OPT_ARG_P7_GENERATE certtool_options.arg.p7_generate
+#define OPT_ARG_P7_SIGN certtool_options.arg.p7_sign
+#define OPT_ARG_P7_DETACHED_SIGN certtool_options.arg.p7_detached_sign
+#define OPT_ARG_P7_INCLUDE_CERT certtool_options.arg.p7_include_cert
+#define OPT_ARG_P7_TIME certtool_options.arg.p7_time
+#define OPT_ARG_P7_SHOW_DATA certtool_options.arg.p7_show_data
+#define OPT_ARG_P7_INFO certtool_options.arg.p7_info
+#define OPT_ARG_P7_VERIFY certtool_options.arg.p7_verify
+#define OPT_ARG_SMIME_TO_P7 certtool_options.arg.smime_to_p7
+#define OPT_ARG_GENERATE_DH_PARAMS certtool_options.arg.generate_dh_params
+#define OPT_ARG_GET_DH_PARAMS certtool_options.arg.get_dh_params
+#define OPT_ARG_DH_INFO certtool_options.arg.dh_info
+#define OPT_ARG_LOAD_PRIVKEY certtool_options.arg.load_privkey
+#define OPT_ARG_LOAD_PUBKEY certtool_options.arg.load_pubkey
+#define OPT_ARG_LOAD_REQUEST certtool_options.arg.load_request
+#define OPT_ARG_LOAD_CERTIFICATE certtool_options.arg.load_certificate
+#define OPT_ARG_LOAD_CA_PRIVKEY certtool_options.arg.load_ca_privkey
+#define OPT_ARG_LOAD_CA_CERTIFICATE certtool_options.arg.load_ca_certificate
+#define OPT_ARG_LOAD_CRL certtool_options.arg.load_crl
+#define OPT_ARG_LOAD_DATA certtool_options.arg.load_data
+#define OPT_ARG_PASSWORD certtool_options.arg.password
+#define OPT_ARG_NULL_PASSWORD certtool_options.arg.null_password
+#define OPT_ARG_EMPTY_PASSWORD certtool_options.arg.empty_password
+#define OPT_ARG_HEX_NUMBERS certtool_options.arg.hex_numbers
+#define OPT_ARG_CPRINT certtool_options.arg.cprint
+#define OPT_ARG_RSA certtool_options.arg.rsa
+#define OPT_ARG_DSA certtool_options.arg.dsa
+#define OPT_ARG_ECC certtool_options.arg.ecc
+#define OPT_ARG_HASH certtool_options.arg.hash
+#define OPT_ARG_SALT_SIZE certtool_options.arg.salt_size
+#define OPT_ARG_INDER certtool_options.arg.inder
+#define OPT_ARG_OUTDER certtool_options.arg.outder
+#define OPT_ARG_DISABLE_QUICK_RANDOM certtool_options.arg.disable_quick_random
+#define OPT_ARG_TEMPLATE certtool_options.arg.template
+#define OPT_ARG_STDOUT_INFO certtool_options.arg.stdout_info
+#define OPT_ARG_ASK_PASS certtool_options.arg.ask_pass
+#define OPT_ARG_PKCS_CIPHER certtool_options.arg.pkcs_cipher
+#define OPT_ARG_PROVIDER certtool_options.arg.provider
+#define OPT_ARG_TEXT certtool_options.arg.text
+#define OPT_ARG_VERSION certtool_options.arg.version
+#define OPT_ARG_HELP certtool_options.arg.help
+#define OPT_ARG_MORE_HELP certtool_options.arg.more_help
+
+#define OPT_VALUE_DEBUG certtool_options.value.debug
+#define OPT_VALUE_BITS certtool_options.value.bits
+#define OPT_VALUE_SALT_SIZE certtool_options.value.salt_size
+
+#define ENABLED_OPT_DEBUG certtool_options.enabled.debug
+#define ENABLED_OPT_VERBOSE certtool_options.enabled.verbose
+#define ENABLED_OPT_INFILE certtool_options.enabled.infile
+#define ENABLED_OPT_OUTFILE certtool_options.enabled.outfile
+#define ENABLED_OPT_CERTIFICATE_INFO certtool_options.enabled.certificate_info
+#define ENABLED_OPT_PUBKEY_INFO certtool_options.enabled.pubkey_info
+#define ENABLED_OPT_GENERATE_SELF_SIGNED certtool_options.enabled.generate_self_signed
+#define ENABLED_OPT_GENERATE_CERTIFICATE certtool_options.enabled.generate_certificate
+#define ENABLED_OPT_GENERATE_PROXY certtool_options.enabled.generate_proxy
+#define ENABLED_OPT_UPDATE_CERTIFICATE certtool_options.enabled.update_certificate
+#define ENABLED_OPT_FINGERPRINT certtool_options.enabled.fingerprint
+#define ENABLED_OPT_KEY_ID certtool_options.enabled.key_id
+#define ENABLED_OPT_CERTIFICATE_PUBKEY certtool_options.enabled.certificate_pubkey
+#define ENABLED_OPT_V1 certtool_options.enabled.v1
+#define ENABLED_OPT_SIGN_PARAMS certtool_options.enabled.sign_params
+#define ENABLED_OPT_CRQ_INFO certtool_options.enabled.crq_info
+#define ENABLED_OPT_GENERATE_REQUEST certtool_options.enabled.generate_request
+#define ENABLED_OPT_NO_CRQ_EXTENSIONS certtool_options.enabled.no_crq_extensions
+#define ENABLED_OPT_P12_INFO certtool_options.enabled.p12_info
+#define ENABLED_OPT_P12_NAME certtool_options.enabled.p12_name
+#define ENABLED_OPT_TO_P12 certtool_options.enabled.to_p12
+#define ENABLED_OPT_KEY_INFO certtool_options.enabled.key_info
+#define ENABLED_OPT_P8_INFO certtool_options.enabled.p8_info
+#define ENABLED_OPT_TO_RSA certtool_options.enabled.to_rsa
+#define ENABLED_OPT_GENERATE_PRIVKEY certtool_options.enabled.generate_privkey
+#define ENABLED_OPT_KEY_TYPE certtool_options.enabled.key_type
+#define ENABLED_OPT_BITS certtool_options.enabled.bits
+#define ENABLED_OPT_CURVE certtool_options.enabled.curve
+#define ENABLED_OPT_SEC_PARAM certtool_options.enabled.sec_param
+#define ENABLED_OPT_TO_P8 certtool_options.enabled.to_p8
+#define ENABLED_OPT_PKCS8 certtool_options.enabled.pkcs8
+#define ENABLED_OPT_PROVABLE certtool_options.enabled.provable
+#define ENABLED_OPT_VERIFY_PROVABLE_PRIVKEY certtool_options.enabled.verify_provable_privkey
+#define ENABLED_OPT_SEED certtool_options.enabled.seed
+#define ENABLED_OPT_CRL_INFO certtool_options.enabled.crl_info
+#define ENABLED_OPT_GENERATE_CRL certtool_options.enabled.generate_crl
+#define ENABLED_OPT_VERIFY_CRL certtool_options.enabled.verify_crl
+#define ENABLED_OPT_VERIFY_CHAIN certtool_options.enabled.verify_chain
+#define ENABLED_OPT_VERIFY certtool_options.enabled.verify
+#define ENABLED_OPT_VERIFY_HOSTNAME certtool_options.enabled.verify_hostname
+#define ENABLED_OPT_VERIFY_EMAIL certtool_options.enabled.verify_email
+#define ENABLED_OPT_VERIFY_PURPOSE certtool_options.enabled.verify_purpose
+#define ENABLED_OPT_VERIFY_ALLOW_BROKEN certtool_options.enabled.verify_allow_broken
+#define ENABLED_OPT_VERIFY_PROFILE certtool_options.enabled.verify_profile
+#define ENABLED_OPT_P7_GENERATE certtool_options.enabled.p7_generate
+#define ENABLED_OPT_P7_SIGN certtool_options.enabled.p7_sign
+#define ENABLED_OPT_P7_DETACHED_SIGN certtool_options.enabled.p7_detached_sign
+#define ENABLED_OPT_P7_INCLUDE_CERT certtool_options.enabled.p7_include_cert
+#define ENABLED_OPT_P7_TIME certtool_options.enabled.p7_time
+#define ENABLED_OPT_P7_SHOW_DATA certtool_options.enabled.p7_show_data
+#define ENABLED_OPT_P7_INFO certtool_options.enabled.p7_info
+#define ENABLED_OPT_P7_VERIFY certtool_options.enabled.p7_verify
+#define ENABLED_OPT_SMIME_TO_P7 certtool_options.enabled.smime_to_p7
+#define ENABLED_OPT_GENERATE_DH_PARAMS certtool_options.enabled.generate_dh_params
+#define ENABLED_OPT_GET_DH_PARAMS certtool_options.enabled.get_dh_params
+#define ENABLED_OPT_DH_INFO certtool_options.enabled.dh_info
+#define ENABLED_OPT_LOAD_PRIVKEY certtool_options.enabled.load_privkey
+#define ENABLED_OPT_LOAD_PUBKEY certtool_options.enabled.load_pubkey
+#define ENABLED_OPT_LOAD_REQUEST certtool_options.enabled.load_request
+#define ENABLED_OPT_LOAD_CERTIFICATE certtool_options.enabled.load_certificate
+#define ENABLED_OPT_LOAD_CA_PRIVKEY certtool_options.enabled.load_ca_privkey
+#define ENABLED_OPT_LOAD_CA_CERTIFICATE certtool_options.enabled.load_ca_certificate
+#define ENABLED_OPT_LOAD_CRL certtool_options.enabled.load_crl
+#define ENABLED_OPT_LOAD_DATA certtool_options.enabled.load_data
+#define ENABLED_OPT_PASSWORD certtool_options.enabled.password
+#define ENABLED_OPT_NULL_PASSWORD certtool_options.enabled.null_password
+#define ENABLED_OPT_EMPTY_PASSWORD certtool_options.enabled.empty_password
+#define ENABLED_OPT_HEX_NUMBERS certtool_options.enabled.hex_numbers
+#define ENABLED_OPT_CPRINT certtool_options.enabled.cprint
+#define ENABLED_OPT_RSA certtool_options.enabled.rsa
+#define ENABLED_OPT_DSA certtool_options.enabled.dsa
+#define ENABLED_OPT_ECC certtool_options.enabled.ecc
+#define ENABLED_OPT_HASH certtool_options.enabled.hash
+#define ENABLED_OPT_SALT_SIZE certtool_options.enabled.salt_size
+#define ENABLED_OPT_INDER certtool_options.enabled.inder
+#define ENABLED_OPT_OUTDER certtool_options.enabled.outder
+#define ENABLED_OPT_DISABLE_QUICK_RANDOM certtool_options.enabled.disable_quick_random
+#define ENABLED_OPT_TEMPLATE certtool_options.enabled.template
+#define ENABLED_OPT_STDOUT_INFO certtool_options.enabled.stdout_info
+#define ENABLED_OPT_ASK_PASS certtool_options.enabled.ask_pass
+#define ENABLED_OPT_PKCS_CIPHER certtool_options.enabled.pkcs_cipher
+#define ENABLED_OPT_PROVIDER certtool_options.enabled.provider
+#define ENABLED_OPT_TEXT certtool_options.enabled.text
+#define ENABLED_OPT_VERSION certtool_options.enabled.version
+#define ENABLED_OPT_HELP certtool_options.enabled.help
+#define ENABLED_OPT_MORE_HELP certtool_options.enabled.more_help
+
+
+
+
+extern struct certtool_options certtool_options;
+int process_options (int argc, char **argv);
+void usage (FILE *out, int status);
+
+#endif /* CERTTOOL_OPTIONS_H_ */
+#define optionProcess(a,b,c) process_options(b,c)
+#define STACKCT_OPT OPTS_COUNT
+#define STACKLST_OPT OPTS_ARRAY