diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 07:33:12 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 07:33:12 +0000 |
commit | 36082a2fe36ecd800d784ae44c14f1f18c66a7e9 (patch) | |
tree | 6c68e0c0097987aff85a01dabddd34b862309a7c /src/p11tool-options.h | |
parent | Initial commit. (diff) | |
download | gnutls28-36082a2fe36ecd800d784ae44c14f1f18c66a7e9.tar.xz gnutls28-36082a2fe36ecd800d784ae44c14f1f18c66a7e9.zip |
Adding upstream version 3.7.9.upstream/3.7.9upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/p11tool-options.h')
-rw-r--r-- | src/p11tool-options.h | 395 |
1 files changed, 395 insertions, 0 deletions
diff --git a/src/p11tool-options.h b/src/p11tool-options.h new file mode 100644 index 0000000..1eee080 --- /dev/null +++ b/src/p11tool-options.h @@ -0,0 +1,395 @@ +#include <stdbool.h> +#include <stdio.h> + +#ifndef P11TOOL_OPTIONS_H_ +#define P11TOOL_OPTIONS_H_ 1 + +struct p11tool_list +{ + const char **args; + unsigned int count; +}; + +struct p11tool_options +{ + /* Options present in the command line */ + struct + { + bool list_tokens; + bool list_token_urls; + bool list_mechanisms; + bool initialize; + bool initialize_pin; + bool initialize_so_pin; + bool set_pin; + bool set_so_pin; + bool list_all; + bool list_all_certs; + bool list_certs; + bool list_all_privkeys; + bool list_all_trusted; + bool export; + bool export_stapled; + bool export_chain; + bool export_pubkey; + bool info; + bool generate_privkey; + bool generate_rsa; + bool generate_dsa; + bool generate_ecc; + bool bits; + bool curve; + bool sec_param; + bool set_id; + bool set_label; + bool write; + bool delete; + bool label; + bool id; + bool mark_wrap; + bool mark_trusted; + bool mark_distrusted; + bool mark_decrypt; + bool mark_sign; + bool mark_ca; + bool mark_private; + bool mark_always_authenticate; + bool secret_key; + bool load_privkey; + bool load_pubkey; + bool load_certificate; + bool debug; + bool outfile; + bool login; + bool so_login; + bool test_sign; + bool sign_params; + bool hash; + bool generate_random; + bool pkcs8; + bool inder; + bool outder; + bool provider; + bool provider_opts; + bool detailed_url; + bool only_urls; + bool batch; + bool version; + bool help; + bool more_help; + } present; + + /* Option arguments in raw string form */ + struct + { + const char *set_pin; + const char *set_so_pin; + const char *generate_privkey; + const char *bits; + const char *curve; + const char *sec_param; + const char *set_id; + const char *set_label; + const char *label; + const char *id; + const char *secret_key; + const char *load_privkey; + const char *load_pubkey; + const char *load_certificate; + const char *debug; + const char *outfile; + const char *sign_params; + const char *hash; + const char *generate_random; + const char *provider; + const char *provider_opts; + const char *version; + } arg; + + /* Option arguments parsed as integer */ + struct + { + int bits; + int debug; + int generate_random; + } value; + + /* Option enablement status */ + struct + { + bool list_tokens; + bool list_token_urls; + bool list_mechanisms; + bool initialize; + bool initialize_pin; + bool initialize_so_pin; + bool set_pin; + bool set_so_pin; + bool list_all; + bool list_all_certs; + bool list_certs; + bool list_all_privkeys; + bool list_all_trusted; + bool export; + bool export_stapled; + bool export_chain; + bool export_pubkey; + bool info; + bool generate_privkey; + bool generate_rsa; + bool generate_dsa; + bool generate_ecc; + bool bits; + bool curve; + bool sec_param; + bool set_id; + bool set_label; + bool write; + bool delete; + bool label; + bool id; + bool mark_wrap; + bool mark_trusted; + bool mark_distrusted; + bool mark_decrypt; + bool mark_sign; + bool mark_ca; + bool mark_private; + bool mark_always_authenticate; + bool secret_key; + bool load_privkey; + bool load_pubkey; + bool load_certificate; + bool debug; + bool outfile; + bool login; + bool so_login; + bool test_sign; + bool sign_params; + bool hash; + bool generate_random; + bool pkcs8; + bool inder; + bool outder; + bool provider; + bool provider_opts; + bool detailed_url; + bool only_urls; + bool batch; + 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_LIST_TOKENS p11tool_options.present.list_tokens +#define HAVE_OPT_LIST_TOKEN_URLS p11tool_options.present.list_token_urls +#define HAVE_OPT_LIST_MECHANISMS p11tool_options.present.list_mechanisms +#define HAVE_OPT_INITIALIZE p11tool_options.present.initialize +#define HAVE_OPT_INITIALIZE_PIN p11tool_options.present.initialize_pin +#define HAVE_OPT_INITIALIZE_SO_PIN p11tool_options.present.initialize_so_pin +#define HAVE_OPT_SET_PIN p11tool_options.present.set_pin +#define HAVE_OPT_SET_SO_PIN p11tool_options.present.set_so_pin +#define HAVE_OPT_LIST_ALL p11tool_options.present.list_all +#define HAVE_OPT_LIST_ALL_CERTS p11tool_options.present.list_all_certs +#define HAVE_OPT_LIST_CERTS p11tool_options.present.list_certs +#define HAVE_OPT_LIST_ALL_PRIVKEYS p11tool_options.present.list_all_privkeys +#define HAVE_OPT_LIST_ALL_TRUSTED p11tool_options.present.list_all_trusted +#define HAVE_OPT_EXPORT p11tool_options.present.export +#define HAVE_OPT_EXPORT_STAPLED p11tool_options.present.export_stapled +#define HAVE_OPT_EXPORT_CHAIN p11tool_options.present.export_chain +#define HAVE_OPT_EXPORT_PUBKEY p11tool_options.present.export_pubkey +#define HAVE_OPT_INFO p11tool_options.present.info +#define HAVE_OPT_GENERATE_PRIVKEY p11tool_options.present.generate_privkey +#define HAVE_OPT_GENERATE_RSA p11tool_options.present.generate_rsa +#define HAVE_OPT_GENERATE_DSA p11tool_options.present.generate_dsa +#define HAVE_OPT_GENERATE_ECC p11tool_options.present.generate_ecc +#define HAVE_OPT_BITS p11tool_options.present.bits +#define HAVE_OPT_CURVE p11tool_options.present.curve +#define HAVE_OPT_SEC_PARAM p11tool_options.present.sec_param +#define HAVE_OPT_SET_ID p11tool_options.present.set_id +#define HAVE_OPT_SET_LABEL p11tool_options.present.set_label +#define HAVE_OPT_WRITE p11tool_options.present.write +#define HAVE_OPT_DELETE p11tool_options.present.delete +#define HAVE_OPT_LABEL p11tool_options.present.label +#define HAVE_OPT_ID p11tool_options.present.id +#define HAVE_OPT_MARK_WRAP p11tool_options.present.mark_wrap +#define HAVE_OPT_MARK_TRUSTED p11tool_options.present.mark_trusted +#define HAVE_OPT_MARK_DISTRUSTED p11tool_options.present.mark_distrusted +#define HAVE_OPT_MARK_DECRYPT p11tool_options.present.mark_decrypt +#define HAVE_OPT_MARK_SIGN p11tool_options.present.mark_sign +#define HAVE_OPT_MARK_CA p11tool_options.present.mark_ca +#define HAVE_OPT_MARK_PRIVATE p11tool_options.present.mark_private +#define HAVE_OPT_MARK_ALWAYS_AUTHENTICATE p11tool_options.present.mark_always_authenticate +#define HAVE_OPT_SECRET_KEY p11tool_options.present.secret_key +#define HAVE_OPT_LOAD_PRIVKEY p11tool_options.present.load_privkey +#define HAVE_OPT_LOAD_PUBKEY p11tool_options.present.load_pubkey +#define HAVE_OPT_LOAD_CERTIFICATE p11tool_options.present.load_certificate +#define HAVE_OPT_DEBUG p11tool_options.present.debug +#define HAVE_OPT_OUTFILE p11tool_options.present.outfile +#define HAVE_OPT_LOGIN p11tool_options.present.login +#define HAVE_OPT_SO_LOGIN p11tool_options.present.so_login +#define HAVE_OPT_TEST_SIGN p11tool_options.present.test_sign +#define HAVE_OPT_SIGN_PARAMS p11tool_options.present.sign_params +#define HAVE_OPT_HASH p11tool_options.present.hash +#define HAVE_OPT_GENERATE_RANDOM p11tool_options.present.generate_random +#define HAVE_OPT_PKCS8 p11tool_options.present.pkcs8 +#define HAVE_OPT_INDER p11tool_options.present.inder +#define HAVE_OPT_OUTDER p11tool_options.present.outder +#define HAVE_OPT_PROVIDER p11tool_options.present.provider +#define HAVE_OPT_PROVIDER_OPTS p11tool_options.present.provider_opts +#define HAVE_OPT_DETAILED_URL p11tool_options.present.detailed_url +#define HAVE_OPT_ONLY_URLS p11tool_options.present.only_urls +#define HAVE_OPT_BATCH p11tool_options.present.batch +#define HAVE_OPT_VERSION p11tool_options.present.version +#define HAVE_OPT_HELP p11tool_options.present.help +#define HAVE_OPT_MORE_HELP p11tool_options.present.more_help + +#define OPT_ARG_LIST_TOKENS p11tool_options.arg.list_tokens +#define OPT_ARG_LIST_TOKEN_URLS p11tool_options.arg.list_token_urls +#define OPT_ARG_LIST_MECHANISMS p11tool_options.arg.list_mechanisms +#define OPT_ARG_INITIALIZE p11tool_options.arg.initialize +#define OPT_ARG_INITIALIZE_PIN p11tool_options.arg.initialize_pin +#define OPT_ARG_INITIALIZE_SO_PIN p11tool_options.arg.initialize_so_pin +#define OPT_ARG_SET_PIN p11tool_options.arg.set_pin +#define OPT_ARG_SET_SO_PIN p11tool_options.arg.set_so_pin +#define OPT_ARG_LIST_ALL p11tool_options.arg.list_all +#define OPT_ARG_LIST_ALL_CERTS p11tool_options.arg.list_all_certs +#define OPT_ARG_LIST_CERTS p11tool_options.arg.list_certs +#define OPT_ARG_LIST_ALL_PRIVKEYS p11tool_options.arg.list_all_privkeys +#define OPT_ARG_LIST_ALL_TRUSTED p11tool_options.arg.list_all_trusted +#define OPT_ARG_EXPORT p11tool_options.arg.export +#define OPT_ARG_EXPORT_STAPLED p11tool_options.arg.export_stapled +#define OPT_ARG_EXPORT_CHAIN p11tool_options.arg.export_chain +#define OPT_ARG_EXPORT_PUBKEY p11tool_options.arg.export_pubkey +#define OPT_ARG_INFO p11tool_options.arg.info +#define OPT_ARG_GENERATE_PRIVKEY p11tool_options.arg.generate_privkey +#define OPT_ARG_GENERATE_RSA p11tool_options.arg.generate_rsa +#define OPT_ARG_GENERATE_DSA p11tool_options.arg.generate_dsa +#define OPT_ARG_GENERATE_ECC p11tool_options.arg.generate_ecc +#define OPT_ARG_BITS p11tool_options.arg.bits +#define OPT_ARG_CURVE p11tool_options.arg.curve +#define OPT_ARG_SEC_PARAM p11tool_options.arg.sec_param +#define OPT_ARG_SET_ID p11tool_options.arg.set_id +#define OPT_ARG_SET_LABEL p11tool_options.arg.set_label +#define OPT_ARG_WRITE p11tool_options.arg.write +#define OPT_ARG_DELETE p11tool_options.arg.delete +#define OPT_ARG_LABEL p11tool_options.arg.label +#define OPT_ARG_ID p11tool_options.arg.id +#define OPT_ARG_MARK_WRAP p11tool_options.arg.mark_wrap +#define OPT_ARG_MARK_TRUSTED p11tool_options.arg.mark_trusted +#define OPT_ARG_MARK_DISTRUSTED p11tool_options.arg.mark_distrusted +#define OPT_ARG_MARK_DECRYPT p11tool_options.arg.mark_decrypt +#define OPT_ARG_MARK_SIGN p11tool_options.arg.mark_sign +#define OPT_ARG_MARK_CA p11tool_options.arg.mark_ca +#define OPT_ARG_MARK_PRIVATE p11tool_options.arg.mark_private +#define OPT_ARG_MARK_ALWAYS_AUTHENTICATE p11tool_options.arg.mark_always_authenticate +#define OPT_ARG_SECRET_KEY p11tool_options.arg.secret_key +#define OPT_ARG_LOAD_PRIVKEY p11tool_options.arg.load_privkey +#define OPT_ARG_LOAD_PUBKEY p11tool_options.arg.load_pubkey +#define OPT_ARG_LOAD_CERTIFICATE p11tool_options.arg.load_certificate +#define OPT_ARG_DEBUG p11tool_options.arg.debug +#define OPT_ARG_OUTFILE p11tool_options.arg.outfile +#define OPT_ARG_LOGIN p11tool_options.arg.login +#define OPT_ARG_SO_LOGIN p11tool_options.arg.so_login +#define OPT_ARG_TEST_SIGN p11tool_options.arg.test_sign +#define OPT_ARG_SIGN_PARAMS p11tool_options.arg.sign_params +#define OPT_ARG_HASH p11tool_options.arg.hash +#define OPT_ARG_GENERATE_RANDOM p11tool_options.arg.generate_random +#define OPT_ARG_PKCS8 p11tool_options.arg.pkcs8 +#define OPT_ARG_INDER p11tool_options.arg.inder +#define OPT_ARG_OUTDER p11tool_options.arg.outder +#define OPT_ARG_PROVIDER p11tool_options.arg.provider +#define OPT_ARG_PROVIDER_OPTS p11tool_options.arg.provider_opts +#define OPT_ARG_DETAILED_URL p11tool_options.arg.detailed_url +#define OPT_ARG_ONLY_URLS p11tool_options.arg.only_urls +#define OPT_ARG_BATCH p11tool_options.arg.batch +#define OPT_ARG_VERSION p11tool_options.arg.version +#define OPT_ARG_HELP p11tool_options.arg.help +#define OPT_ARG_MORE_HELP p11tool_options.arg.more_help + +#define OPT_VALUE_BITS p11tool_options.value.bits +#define OPT_VALUE_DEBUG p11tool_options.value.debug +#define OPT_VALUE_GENERATE_RANDOM p11tool_options.value.generate_random + +#define ENABLED_OPT_LIST_TOKENS p11tool_options.enabled.list_tokens +#define ENABLED_OPT_LIST_TOKEN_URLS p11tool_options.enabled.list_token_urls +#define ENABLED_OPT_LIST_MECHANISMS p11tool_options.enabled.list_mechanisms +#define ENABLED_OPT_INITIALIZE p11tool_options.enabled.initialize +#define ENABLED_OPT_INITIALIZE_PIN p11tool_options.enabled.initialize_pin +#define ENABLED_OPT_INITIALIZE_SO_PIN p11tool_options.enabled.initialize_so_pin +#define ENABLED_OPT_SET_PIN p11tool_options.enabled.set_pin +#define ENABLED_OPT_SET_SO_PIN p11tool_options.enabled.set_so_pin +#define ENABLED_OPT_LIST_ALL p11tool_options.enabled.list_all +#define ENABLED_OPT_LIST_ALL_CERTS p11tool_options.enabled.list_all_certs +#define ENABLED_OPT_LIST_CERTS p11tool_options.enabled.list_certs +#define ENABLED_OPT_LIST_ALL_PRIVKEYS p11tool_options.enabled.list_all_privkeys +#define ENABLED_OPT_LIST_ALL_TRUSTED p11tool_options.enabled.list_all_trusted +#define ENABLED_OPT_EXPORT p11tool_options.enabled.export +#define ENABLED_OPT_EXPORT_STAPLED p11tool_options.enabled.export_stapled +#define ENABLED_OPT_EXPORT_CHAIN p11tool_options.enabled.export_chain +#define ENABLED_OPT_EXPORT_PUBKEY p11tool_options.enabled.export_pubkey +#define ENABLED_OPT_INFO p11tool_options.enabled.info +#define ENABLED_OPT_GENERATE_PRIVKEY p11tool_options.enabled.generate_privkey +#define ENABLED_OPT_GENERATE_RSA p11tool_options.enabled.generate_rsa +#define ENABLED_OPT_GENERATE_DSA p11tool_options.enabled.generate_dsa +#define ENABLED_OPT_GENERATE_ECC p11tool_options.enabled.generate_ecc +#define ENABLED_OPT_BITS p11tool_options.enabled.bits +#define ENABLED_OPT_CURVE p11tool_options.enabled.curve +#define ENABLED_OPT_SEC_PARAM p11tool_options.enabled.sec_param +#define ENABLED_OPT_SET_ID p11tool_options.enabled.set_id +#define ENABLED_OPT_SET_LABEL p11tool_options.enabled.set_label +#define ENABLED_OPT_WRITE p11tool_options.enabled.write +#define ENABLED_OPT_DELETE p11tool_options.enabled.delete +#define ENABLED_OPT_LABEL p11tool_options.enabled.label +#define ENABLED_OPT_ID p11tool_options.enabled.id +#define ENABLED_OPT_MARK_WRAP p11tool_options.enabled.mark_wrap +#define ENABLED_OPT_MARK_TRUSTED p11tool_options.enabled.mark_trusted +#define ENABLED_OPT_MARK_DISTRUSTED p11tool_options.enabled.mark_distrusted +#define ENABLED_OPT_MARK_DECRYPT p11tool_options.enabled.mark_decrypt +#define ENABLED_OPT_MARK_SIGN p11tool_options.enabled.mark_sign +#define ENABLED_OPT_MARK_CA p11tool_options.enabled.mark_ca +#define ENABLED_OPT_MARK_PRIVATE p11tool_options.enabled.mark_private +#define ENABLED_OPT_MARK_ALWAYS_AUTHENTICATE p11tool_options.enabled.mark_always_authenticate +#define ENABLED_OPT_SECRET_KEY p11tool_options.enabled.secret_key +#define ENABLED_OPT_LOAD_PRIVKEY p11tool_options.enabled.load_privkey +#define ENABLED_OPT_LOAD_PUBKEY p11tool_options.enabled.load_pubkey +#define ENABLED_OPT_LOAD_CERTIFICATE p11tool_options.enabled.load_certificate +#define ENABLED_OPT_DEBUG p11tool_options.enabled.debug +#define ENABLED_OPT_OUTFILE p11tool_options.enabled.outfile +#define ENABLED_OPT_LOGIN p11tool_options.enabled.login +#define ENABLED_OPT_SO_LOGIN p11tool_options.enabled.so_login +#define ENABLED_OPT_TEST_SIGN p11tool_options.enabled.test_sign +#define ENABLED_OPT_SIGN_PARAMS p11tool_options.enabled.sign_params +#define ENABLED_OPT_HASH p11tool_options.enabled.hash +#define ENABLED_OPT_GENERATE_RANDOM p11tool_options.enabled.generate_random +#define ENABLED_OPT_PKCS8 p11tool_options.enabled.pkcs8 +#define ENABLED_OPT_INDER p11tool_options.enabled.inder +#define ENABLED_OPT_OUTDER p11tool_options.enabled.outder +#define ENABLED_OPT_PROVIDER p11tool_options.enabled.provider +#define ENABLED_OPT_PROVIDER_OPTS p11tool_options.enabled.provider_opts +#define ENABLED_OPT_DETAILED_URL p11tool_options.enabled.detailed_url +#define ENABLED_OPT_ONLY_URLS p11tool_options.enabled.only_urls +#define ENABLED_OPT_BATCH p11tool_options.enabled.batch +#define ENABLED_OPT_VERSION p11tool_options.enabled.version +#define ENABLED_OPT_HELP p11tool_options.enabled.help +#define ENABLED_OPT_MORE_HELP p11tool_options.enabled.more_help + + + + +extern struct p11tool_options p11tool_options; +int process_options (int argc, char **argv); +void usage (FILE *out, int status); + +#endif /* P11TOOL_OPTIONS_H_ */ +#define optionProcess(a,b,c) process_options(b,c) +#define STACKCT_OPT OPTS_COUNT +#define STACKLST_OPT OPTS_ARRAY |