/contrib/ntp/util/ntp-keygen-opts.c
C | 1044 lines | 788 code | 109 blank | 147 comment | 22 complexity | f6fa50476a87cfa7db8be288b2378c73 MD5 | raw file
1/* 2 * EDIT THIS FILE WITH CAUTION (ntp-keygen-opts.c) 3 * 4 * It has been AutoGen-ed Tuesday December 8, 2009 at 08:14:56 AM EST 5 * From the definitions ntp-keygen-opts.def 6 * and the template file options 7 * 8 * Generated from AutoOpts 29:0:4 templates. 9 */ 10 11/* 12 * This file was produced by an AutoOpts template. AutoOpts is a 13 * copyrighted work. This source file is not encumbered by AutoOpts 14 * licensing, but is provided under the licensing terms chosen by the 15 * ntp-keygen author or copyright holder. AutoOpts is licensed under 16 * the terms of the LGPL. The redistributable library (``libopts'') is 17 * licensed under the terms of either the LGPL or, at the users discretion, 18 * the BSD license. See the AutoOpts and/or libopts sources for details. 19 * 20 * This source file is copyrighted and licensed under the following terms: 21 * 22 * ntp-keygen copyright 1970-2009 David L. Mills and/or others - all rights reserved 23 * 24 * see html/copyright.html 25 */ 26 27 28#include <limits.h> 29#include <stdio.h> 30#define OPTION_CODE_COMPILE 1 31#include "ntp-keygen-opts.h" 32 33#ifdef __cplusplus 34extern "C" { 35#endif 36tSCC zCopyright[] = 37 "ntp-keygen copyright (c) 1970-2009 David L. Mills and/or others, all rights reserved"; 38tSCC zCopyrightNotice[] = 39 40/* extracted from ../include/copyright.def near line 8 */ 41"see html/copyright.html"; 42extern tUsageProc optionUsage; 43 44/* 45 * global included definitions 46 */ 47#include <stdlib.h> 48#ifdef __windows 49 extern int atoi(const char*); 50#else 51# include <stdlib.h> 52#endif 53 54#ifndef NULL 55# define NULL 0 56#endif 57#ifndef EXIT_SUCCESS 58# define EXIT_SUCCESS 0 59#endif 60#ifndef EXIT_FAILURE 61# define EXIT_FAILURE 1 62#endif 63/* 64 * Certificate option description: 65 */ 66#ifdef OPENSSL 67tSCC zCertificateText[] = 68 "certificate scheme"; 69tSCC zCertificate_NAME[] = "CERTIFICATE"; 70tSCC zCertificate_Name[] = "certificate"; 71#define CERTIFICATE_FLAGS (OPTST_DISABLED \ 72 | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING)) 73 74#else /* disable Certificate */ 75#define VALUE_OPT_CERTIFICATE NO_EQUIVALENT 76#define CERTIFICATE_FLAGS (OPTST_OMITTED | OPTST_NO_INIT) 77#define zCertificateText NULL 78#define zCertificate_NAME NULL 79#define zCertificate_Name NULL 80#endif /* OPENSSL */ 81 82/* 83 * Debug_Level option description: 84 */ 85#ifdef DEBUG 86tSCC zDebug_LevelText[] = 87 "Increase output debug message level"; 88tSCC zDebug_Level_NAME[] = "DEBUG_LEVEL"; 89tSCC zDebug_Level_Name[] = "debug-level"; 90#define DEBUG_LEVEL_FLAGS (OPTST_DISABLED) 91 92#else /* disable Debug_Level */ 93#define VALUE_OPT_DEBUG_LEVEL NO_EQUIVALENT 94#define DEBUG_LEVEL_FLAGS (OPTST_OMITTED | OPTST_NO_INIT) 95#define zDebug_LevelText NULL 96#define zDebug_Level_NAME NULL 97#define zDebug_Level_Name NULL 98#endif /* DEBUG */ 99 100/* 101 * Set_Debug_Level option description: 102 */ 103#ifdef DEBUG 104tSCC zSet_Debug_LevelText[] = 105 "Set the output debug message level"; 106tSCC zSet_Debug_Level_NAME[] = "SET_DEBUG_LEVEL"; 107tSCC zSet_Debug_Level_Name[] = "set-debug-level"; 108#define SET_DEBUG_LEVEL_FLAGS (OPTST_DISABLED \ 109 | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING)) 110 111#else /* disable Set_Debug_Level */ 112#define VALUE_OPT_SET_DEBUG_LEVEL NO_EQUIVALENT 113#define SET_DEBUG_LEVEL_FLAGS (OPTST_OMITTED | OPTST_NO_INIT) 114#define zSet_Debug_LevelText NULL 115#define zSet_Debug_Level_NAME NULL 116#define zSet_Debug_Level_Name NULL 117#endif /* DEBUG */ 118 119/* 120 * Id_Key option description: 121 */ 122#ifdef OPENSSL 123tSCC zId_KeyText[] = 124 "Write identity keys"; 125tSCC zId_Key_NAME[] = "ID_KEY"; 126tSCC zId_Key_Name[] = "id-key"; 127#define ID_KEY_FLAGS (OPTST_DISABLED) 128 129#else /* disable Id_Key */ 130#define VALUE_OPT_ID_KEY NO_EQUIVALENT 131#define ID_KEY_FLAGS (OPTST_OMITTED | OPTST_NO_INIT) 132#define zId_KeyText NULL 133#define zId_Key_NAME NULL 134#define zId_Key_Name NULL 135#endif /* OPENSSL */ 136 137/* 138 * Gq_Params option description: 139 */ 140#ifdef OPENSSL 141tSCC zGq_ParamsText[] = 142 "Generate GQ parameters and keys"; 143tSCC zGq_Params_NAME[] = "GQ_PARAMS"; 144tSCC zGq_Params_Name[] = "gq-params"; 145#define GQ_PARAMS_FLAGS (OPTST_DISABLED) 146 147#else /* disable Gq_Params */ 148#define VALUE_OPT_GQ_PARAMS NO_EQUIVALENT 149#define GQ_PARAMS_FLAGS (OPTST_OMITTED | OPTST_NO_INIT) 150#define zGq_ParamsText NULL 151#define zGq_Params_NAME NULL 152#define zGq_Params_Name NULL 153#endif /* OPENSSL */ 154 155/* 156 * Gq_Keys option description: 157 */ 158#ifdef OPENSSL 159tSCC zGq_KeysText[] = 160 "update GQ keys"; 161tSCC zGq_Keys_NAME[] = "GQ_KEYS"; 162tSCC zGq_Keys_Name[] = "gq-keys"; 163#define GQ_KEYS_FLAGS (OPTST_DISABLED) 164 165#else /* disable Gq_Keys */ 166#define VALUE_OPT_GQ_KEYS NO_EQUIVALENT 167#define GQ_KEYS_FLAGS (OPTST_OMITTED | OPTST_NO_INIT) 168#define zGq_KeysText NULL 169#define zGq_Keys_NAME NULL 170#define zGq_Keys_Name NULL 171#endif /* OPENSSL */ 172 173/* 174 * Host_Key option description: 175 */ 176#ifdef OPENSSL 177tSCC zHost_KeyText[] = 178 "generate RSA host key"; 179tSCC zHost_Key_NAME[] = "HOST_KEY"; 180tSCC zHost_Key_Name[] = "host-key"; 181#define HOST_KEY_FLAGS (OPTST_DISABLED) 182 183#else /* disable Host_Key */ 184#define VALUE_OPT_HOST_KEY NO_EQUIVALENT 185#define HOST_KEY_FLAGS (OPTST_OMITTED | OPTST_NO_INIT) 186#define zHost_KeyText NULL 187#define zHost_Key_NAME NULL 188#define zHost_Key_Name NULL 189#endif /* OPENSSL */ 190 191/* 192 * Iffkey option description: 193 */ 194#ifdef OPENSSL 195tSCC zIffkeyText[] = 196 "generate IFF parameters"; 197tSCC zIffkey_NAME[] = "IFFKEY"; 198tSCC zIffkey_Name[] = "iffkey"; 199#define IFFKEY_FLAGS (OPTST_DISABLED) 200 201#else /* disable Iffkey */ 202#define VALUE_OPT_IFFKEY NO_EQUIVALENT 203#define IFFKEY_FLAGS (OPTST_OMITTED | OPTST_NO_INIT) 204#define zIffkeyText NULL 205#define zIffkey_NAME NULL 206#define zIffkey_Name NULL 207#endif /* OPENSSL */ 208 209/* 210 * Issuer_Name option description: 211 */ 212#ifdef OPENSSL 213tSCC zIssuer_NameText[] = 214 "set issuer name"; 215tSCC zIssuer_Name_NAME[] = "ISSUER_NAME"; 216tSCC zIssuer_Name_Name[] = "issuer-name"; 217#define ISSUER_NAME_FLAGS (OPTST_DISABLED) 218 219#else /* disable Issuer_Name */ 220#define VALUE_OPT_ISSUER_NAME NO_EQUIVALENT 221#define ISSUER_NAME_FLAGS (OPTST_OMITTED | OPTST_NO_INIT) 222#define zIssuer_NameText NULL 223#define zIssuer_Name_NAME NULL 224#define zIssuer_Name_Name NULL 225#endif /* OPENSSL */ 226 227/* 228 * Md5key option description: 229 */ 230tSCC zMd5keyText[] = 231 "generate MD5 keys"; 232tSCC zMd5key_NAME[] = "MD5KEY"; 233tSCC zMd5key_Name[] = "md5key"; 234#define MD5KEY_FLAGS (OPTST_DISABLED) 235 236/* 237 * Modulus option description: 238 */ 239#ifdef OPENSSL 240tSCC zModulusText[] = 241 "modulus"; 242tSCC zModulus_NAME[] = "MODULUS"; 243tSCC zModulus_Name[] = "modulus"; 244#define MODULUS_FLAGS (OPTST_DISABLED \ 245 | OPTST_SET_ARGTYPE(OPARG_TYPE_NUMERIC)) 246 247#else /* disable Modulus */ 248#define VALUE_OPT_MODULUS NO_EQUIVALENT 249#define MODULUS_FLAGS (OPTST_OMITTED | OPTST_NO_INIT) 250#define zModulusText NULL 251#define zModulus_NAME NULL 252#define zModulus_Name NULL 253#endif /* OPENSSL */ 254 255/* 256 * Pvt_Cert option description: 257 */ 258#ifdef OPENSSL 259tSCC zPvt_CertText[] = 260 "generate PC private certificate"; 261tSCC zPvt_Cert_NAME[] = "PVT_CERT"; 262tSCC zPvt_Cert_Name[] = "pvt-cert"; 263#define PVT_CERT_FLAGS (OPTST_DISABLED) 264 265#else /* disable Pvt_Cert */ 266#define VALUE_OPT_PVT_CERT NO_EQUIVALENT 267#define PVT_CERT_FLAGS (OPTST_OMITTED | OPTST_NO_INIT) 268#define zPvt_CertText NULL 269#define zPvt_Cert_NAME NULL 270#define zPvt_Cert_Name NULL 271#endif /* OPENSSL */ 272 273/* 274 * Pvt_Passwd option description: 275 */ 276#ifdef OPENSSL 277tSCC zPvt_PasswdText[] = 278 "output private password"; 279tSCC zPvt_Passwd_NAME[] = "PVT_PASSWD"; 280tSCC zPvt_Passwd_Name[] = "pvt-passwd"; 281#define PVT_PASSWD_FLAGS (OPTST_DISABLED \ 282 | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING)) 283 284#else /* disable Pvt_Passwd */ 285#define VALUE_OPT_PVT_PASSWD NO_EQUIVALENT 286#define PVT_PASSWD_FLAGS (OPTST_OMITTED | OPTST_NO_INIT) 287#define zPvt_PasswdText NULL 288#define zPvt_Passwd_NAME NULL 289#define zPvt_Passwd_Name NULL 290#endif /* OPENSSL */ 291 292/* 293 * Get_Pvt_Passwd option description: 294 */ 295#ifdef OPENSSL 296tSCC zGet_Pvt_PasswdText[] = 297 "input private password"; 298tSCC zGet_Pvt_Passwd_NAME[] = "GET_PVT_PASSWD"; 299tSCC zGet_Pvt_Passwd_Name[] = "get-pvt-passwd"; 300#define GET_PVT_PASSWD_FLAGS (OPTST_DISABLED \ 301 | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING)) 302 303#else /* disable Get_Pvt_Passwd */ 304#define VALUE_OPT_GET_PVT_PASSWD NO_EQUIVALENT 305#define GET_PVT_PASSWD_FLAGS (OPTST_OMITTED | OPTST_NO_INIT) 306#define zGet_Pvt_PasswdText NULL 307#define zGet_Pvt_Passwd_NAME NULL 308#define zGet_Pvt_Passwd_Name NULL 309#endif /* OPENSSL */ 310 311/* 312 * Sign_Key option description: 313 */ 314#ifdef OPENSSL 315tSCC zSign_KeyText[] = 316 "generate sign key (RSA or DSA)"; 317tSCC zSign_Key_NAME[] = "SIGN_KEY"; 318tSCC zSign_Key_Name[] = "sign-key"; 319#define SIGN_KEY_FLAGS (OPTST_DISABLED \ 320 | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING)) 321 322#else /* disable Sign_Key */ 323#define VALUE_OPT_SIGN_KEY NO_EQUIVALENT 324#define SIGN_KEY_FLAGS (OPTST_OMITTED | OPTST_NO_INIT) 325#define zSign_KeyText NULL 326#define zSign_Key_NAME NULL 327#define zSign_Key_Name NULL 328#endif /* OPENSSL */ 329 330/* 331 * Subject_Name option description: 332 */ 333#ifdef OPENSSL 334tSCC zSubject_NameText[] = 335 "set subject name"; 336tSCC zSubject_Name_NAME[] = "SUBJECT_NAME"; 337tSCC zSubject_Name_Name[] = "subject-name"; 338#define SUBJECT_NAME_FLAGS (OPTST_DISABLED \ 339 | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING)) 340 341#else /* disable Subject_Name */ 342#define VALUE_OPT_SUBJECT_NAME NO_EQUIVALENT 343#define SUBJECT_NAME_FLAGS (OPTST_OMITTED | OPTST_NO_INIT) 344#define zSubject_NameText NULL 345#define zSubject_Name_NAME NULL 346#define zSubject_Name_Name NULL 347#endif /* OPENSSL */ 348 349/* 350 * Trusted_Cert option description: 351 */ 352#ifdef OPENSSL 353tSCC zTrusted_CertText[] = 354 "trusted certificate (TC scheme)"; 355tSCC zTrusted_Cert_NAME[] = "TRUSTED_CERT"; 356tSCC zTrusted_Cert_Name[] = "trusted-cert"; 357#define TRUSTED_CERT_FLAGS (OPTST_DISABLED) 358 359#else /* disable Trusted_Cert */ 360#define VALUE_OPT_TRUSTED_CERT NO_EQUIVALENT 361#define TRUSTED_CERT_FLAGS (OPTST_OMITTED | OPTST_NO_INIT) 362#define zTrusted_CertText NULL 363#define zTrusted_Cert_NAME NULL 364#define zTrusted_Cert_Name NULL 365#endif /* OPENSSL */ 366 367/* 368 * Mv_Params option description: 369 */ 370#ifdef OPENSSL 371tSCC zMv_ParamsText[] = 372 "generate <num> MV parameters"; 373tSCC zMv_Params_NAME[] = "MV_PARAMS"; 374tSCC zMv_Params_Name[] = "mv-params"; 375#define MV_PARAMS_FLAGS (OPTST_DISABLED \ 376 | OPTST_SET_ARGTYPE(OPARG_TYPE_NUMERIC)) 377 378#else /* disable Mv_Params */ 379#define VALUE_OPT_MV_PARAMS NO_EQUIVALENT 380#define MV_PARAMS_FLAGS (OPTST_OMITTED | OPTST_NO_INIT) 381#define zMv_ParamsText NULL 382#define zMv_Params_NAME NULL 383#define zMv_Params_Name NULL 384#endif /* OPENSSL */ 385 386/* 387 * Mv_Keys option description: 388 */ 389#ifdef OPENSSL 390tSCC zMv_KeysText[] = 391 "update <num> MV keys"; 392tSCC zMv_Keys_NAME[] = "MV_KEYS"; 393tSCC zMv_Keys_Name[] = "mv-keys"; 394#define MV_KEYS_FLAGS (OPTST_DISABLED \ 395 | OPTST_SET_ARGTYPE(OPARG_TYPE_NUMERIC)) 396 397#else /* disable Mv_Keys */ 398#define VALUE_OPT_MV_KEYS NO_EQUIVALENT 399#define MV_KEYS_FLAGS (OPTST_OMITTED | OPTST_NO_INIT) 400#define zMv_KeysText NULL 401#define zMv_Keys_NAME NULL 402#define zMv_Keys_Name NULL 403#endif /* OPENSSL */ 404 405/* 406 * Help/More_Help/Version option descriptions: 407 */ 408tSCC zHelpText[] = "Display usage information and exit"; 409tSCC zHelp_Name[] = "help"; 410 411tSCC zMore_HelpText[] = "Extended usage information passed thru pager"; 412tSCC zMore_Help_Name[] = "more-help"; 413 414tSCC zVersionText[] = "Output version information and exit"; 415tSCC zVersion_Name[] = "version"; 416 417/* 418 * Save/Load_Opts option description: 419 */ 420tSCC zSave_OptsText[] = "Save the option state to a config file"; 421tSCC zSave_Opts_Name[] = "save-opts"; 422 423tSCC zLoad_OptsText[] = "Load options from a config file"; 424tSCC zLoad_Opts_NAME[] = "LOAD_OPTS"; 425 426tSCC zNotLoad_Opts_Name[] = "no-load-opts"; 427tSCC zNotLoad_Opts_Pfx[] = "no"; 428#define zLoad_Opts_Name (zNotLoad_Opts_Name + 3) 429/* 430 * Declare option callback procedures 431 */ 432#ifdef DEBUG 433 static tOptProc doOptSet_Debug_Level; 434#else /* not DEBUG */ 435# define doOptSet_Debug_Level NULL 436#endif /* def/not DEBUG */ 437#ifdef OPENSSL 438 static tOptProc doOptModulus; 439#else /* not OPENSSL */ 440# define doOptModulus NULL 441#endif /* def/not OPENSSL */ 442#ifdef OPENSSL 443 extern tOptProc optionNumericVal; 444#else /* not OPENSSL */ 445# define optionNumericVal NULL 446#endif /* def/not OPENSSL */ 447#ifdef OPENSSL 448 extern tOptProc optionNumericVal; 449#else /* not OPENSSL */ 450# define optionNumericVal NULL 451#endif /* def/not OPENSSL */ 452#if defined(TEST_NTP_KEYGEN_OPTS) 453/* 454 * Under test, omit argument processing, or call optionStackArg, 455 * if multiple copies are allowed. 456 */ 457extern tOptProc 458 optionNumericVal, optionPagedUsage, optionVersionStderr; 459static tOptProc 460 doOptModulus, doUsageOpt; 461 462/* 463 * #define map the "normal" callout procs to the test ones... 464 */ 465#define SET_DEBUG_LEVEL_OPT_PROC optionStackArg 466 467 468#else /* NOT defined TEST_NTP_KEYGEN_OPTS */ 469/* 470 * When not under test, there are different procs to use 471 */ 472extern tOptProc 473 optionPagedUsage, optionPrintVersion; 474static tOptProc 475 doUsageOpt; 476 477/* 478 * #define map the "normal" callout procs 479 */ 480#define SET_DEBUG_LEVEL_OPT_PROC doOptSet_Debug_Level 481 482#define SET_DEBUG_LEVEL_OPT_PROC doOptSet_Debug_Level 483#endif /* defined(TEST_NTP_KEYGEN_OPTS) */ 484#ifdef TEST_NTP_KEYGEN_OPTS 485# define DOVERPROC optionVersionStderr 486#else 487# define DOVERPROC optionPrintVersion 488#endif /* TEST_NTP_KEYGEN_OPTS */ 489 490/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 491 * 492 * Define the Ntp_Keygen Option Descriptions. 493 */ 494static tOptDesc optDesc[ OPTION_CT ] = { 495 { /* entry idx, value */ 0, VALUE_OPT_CERTIFICATE, 496 /* equiv idx, value */ 0, VALUE_OPT_CERTIFICATE, 497 /* equivalenced to */ NO_EQUIVALENT, 498 /* min, max, act ct */ 0, 1, 0, 499 /* opt state flags */ CERTIFICATE_FLAGS, 0, 500 /* last opt argumnt */ { NULL }, 501 /* arg list/cookie */ NULL, 502 /* must/cannot opts */ NULL, NULL, 503 /* option proc */ NULL, 504 /* desc, NAME, name */ zCertificateText, zCertificate_NAME, zCertificate_Name, 505 /* disablement strs */ NULL, NULL }, 506 507 { /* entry idx, value */ 1, VALUE_OPT_DEBUG_LEVEL, 508 /* equiv idx, value */ 1, VALUE_OPT_DEBUG_LEVEL, 509 /* equivalenced to */ NO_EQUIVALENT, 510 /* min, max, act ct */ 0, NOLIMIT, 0, 511 /* opt state flags */ DEBUG_LEVEL_FLAGS, 0, 512 /* last opt argumnt */ { NULL }, 513 /* arg list/cookie */ NULL, 514 /* must/cannot opts */ NULL, NULL, 515 /* option proc */ NULL, 516 /* desc, NAME, name */ zDebug_LevelText, zDebug_Level_NAME, zDebug_Level_Name, 517 /* disablement strs */ NULL, NULL }, 518 519 { /* entry idx, value */ 2, VALUE_OPT_SET_DEBUG_LEVEL, 520 /* equiv idx, value */ 2, VALUE_OPT_SET_DEBUG_LEVEL, 521 /* equivalenced to */ NO_EQUIVALENT, 522 /* min, max, act ct */ 0, NOLIMIT, 0, 523 /* opt state flags */ SET_DEBUG_LEVEL_FLAGS, 0, 524 /* last opt argumnt */ { NULL }, 525 /* arg list/cookie */ NULL, 526 /* must/cannot opts */ NULL, NULL, 527 /* option proc */ SET_DEBUG_LEVEL_OPT_PROC, 528 /* desc, NAME, name */ zSet_Debug_LevelText, zSet_Debug_Level_NAME, zSet_Debug_Level_Name, 529 /* disablement strs */ NULL, NULL }, 530 531 { /* entry idx, value */ 3, VALUE_OPT_ID_KEY, 532 /* equiv idx, value */ 3, VALUE_OPT_ID_KEY, 533 /* equivalenced to */ NO_EQUIVALENT, 534 /* min, max, act ct */ 0, 1, 0, 535 /* opt state flags */ ID_KEY_FLAGS, 0, 536 /* last opt argumnt */ { NULL }, 537 /* arg list/cookie */ NULL, 538 /* must/cannot opts */ NULL, NULL, 539 /* option proc */ NULL, 540 /* desc, NAME, name */ zId_KeyText, zId_Key_NAME, zId_Key_Name, 541 /* disablement strs */ NULL, NULL }, 542 543 { /* entry idx, value */ 4, VALUE_OPT_GQ_PARAMS, 544 /* equiv idx, value */ 4, VALUE_OPT_GQ_PARAMS, 545 /* equivalenced to */ NO_EQUIVALENT, 546 /* min, max, act ct */ 0, 1, 0, 547 /* opt state flags */ GQ_PARAMS_FLAGS, 0, 548 /* last opt argumnt */ { NULL }, 549 /* arg list/cookie */ NULL, 550 /* must/cannot opts */ NULL, NULL, 551 /* option proc */ NULL, 552 /* desc, NAME, name */ zGq_ParamsText, zGq_Params_NAME, zGq_Params_Name, 553 /* disablement strs */ NULL, NULL }, 554 555 { /* entry idx, value */ 5, VALUE_OPT_GQ_KEYS, 556 /* equiv idx, value */ 5, VALUE_OPT_GQ_KEYS, 557 /* equivalenced to */ NO_EQUIVALENT, 558 /* min, max, act ct */ 0, 1, 0, 559 /* opt state flags */ GQ_KEYS_FLAGS, 0, 560 /* last opt argumnt */ { NULL }, 561 /* arg list/cookie */ NULL, 562 /* must/cannot opts */ NULL, NULL, 563 /* option proc */ NULL, 564 /* desc, NAME, name */ zGq_KeysText, zGq_Keys_NAME, zGq_Keys_Name, 565 /* disablement strs */ NULL, NULL }, 566 567 { /* entry idx, value */ 6, VALUE_OPT_HOST_KEY, 568 /* equiv idx, value */ 6, VALUE_OPT_HOST_KEY, 569 /* equivalenced to */ NO_EQUIVALENT, 570 /* min, max, act ct */ 0, 1, 0, 571 /* opt state flags */ HOST_KEY_FLAGS, 0, 572 /* last opt argumnt */ { NULL }, 573 /* arg list/cookie */ NULL, 574 /* must/cannot opts */ NULL, NULL, 575 /* option proc */ NULL, 576 /* desc, NAME, name */ zHost_KeyText, zHost_Key_NAME, zHost_Key_Name, 577 /* disablement strs */ NULL, NULL }, 578 579 { /* entry idx, value */ 7, VALUE_OPT_IFFKEY, 580 /* equiv idx, value */ 7, VALUE_OPT_IFFKEY, 581 /* equivalenced to */ NO_EQUIVALENT, 582 /* min, max, act ct */ 0, 1, 0, 583 /* opt state flags */ IFFKEY_FLAGS, 0, 584 /* last opt argumnt */ { NULL }, 585 /* arg list/cookie */ NULL, 586 /* must/cannot opts */ NULL, NULL, 587 /* option proc */ NULL, 588 /* desc, NAME, name */ zIffkeyText, zIffkey_NAME, zIffkey_Name, 589 /* disablement strs */ NULL, NULL }, 590 591 { /* entry idx, value */ 8, VALUE_OPT_ISSUER_NAME, 592 /* equiv idx, value */ 8, VALUE_OPT_ISSUER_NAME, 593 /* equivalenced to */ NO_EQUIVALENT, 594 /* min, max, act ct */ 0, 1, 0, 595 /* opt state flags */ ISSUER_NAME_FLAGS, 0, 596 /* last opt argumnt */ { NULL }, 597 /* arg list/cookie */ NULL, 598 /* must/cannot opts */ NULL, NULL, 599 /* option proc */ NULL, 600 /* desc, NAME, name */ zIssuer_NameText, zIssuer_Name_NAME, zIssuer_Name_Name, 601 /* disablement strs */ NULL, NULL }, 602 603 { /* entry idx, value */ 9, VALUE_OPT_MD5KEY, 604 /* equiv idx, value */ 9, VALUE_OPT_MD5KEY, 605 /* equivalenced to */ NO_EQUIVALENT, 606 /* min, max, act ct */ 0, 1, 0, 607 /* opt state flags */ MD5KEY_FLAGS, 0, 608 /* last opt argumnt */ { NULL }, 609 /* arg list/cookie */ NULL, 610 /* must/cannot opts */ NULL, NULL, 611 /* option proc */ NULL, 612 /* desc, NAME, name */ zMd5keyText, zMd5key_NAME, zMd5key_Name, 613 /* disablement strs */ NULL, NULL }, 614 615 { /* entry idx, value */ 10, VALUE_OPT_MODULUS, 616 /* equiv idx, value */ 10, VALUE_OPT_MODULUS, 617 /* equivalenced to */ NO_EQUIVALENT, 618 /* min, max, act ct */ 0, 1, 0, 619 /* opt state flags */ MODULUS_FLAGS, 0, 620 /* last opt argumnt */ { NULL }, 621 /* arg list/cookie */ NULL, 622 /* must/cannot opts */ NULL, NULL, 623 /* option proc */ doOptModulus, 624 /* desc, NAME, name */ zModulusText, zModulus_NAME, zModulus_Name, 625 /* disablement strs */ NULL, NULL }, 626 627 { /* entry idx, value */ 11, VALUE_OPT_PVT_CERT, 628 /* equiv idx, value */ 11, VALUE_OPT_PVT_CERT, 629 /* equivalenced to */ NO_EQUIVALENT, 630 /* min, max, act ct */ 0, 1, 0, 631 /* opt state flags */ PVT_CERT_FLAGS, 0, 632 /* last opt argumnt */ { NULL }, 633 /* arg list/cookie */ NULL, 634 /* must/cannot opts */ NULL, NULL, 635 /* option proc */ NULL, 636 /* desc, NAME, name */ zPvt_CertText, zPvt_Cert_NAME, zPvt_Cert_Name, 637 /* disablement strs */ NULL, NULL }, 638 639 { /* entry idx, value */ 12, VALUE_OPT_PVT_PASSWD, 640 /* equiv idx, value */ 12, VALUE_OPT_PVT_PASSWD, 641 /* equivalenced to */ NO_EQUIVALENT, 642 /* min, max, act ct */ 0, 1, 0, 643 /* opt state flags */ PVT_PASSWD_FLAGS, 0, 644 /* last opt argumnt */ { NULL }, 645 /* arg list/cookie */ NULL, 646 /* must/cannot opts */ NULL, NULL, 647 /* option proc */ NULL, 648 /* desc, NAME, name */ zPvt_PasswdText, zPvt_Passwd_NAME, zPvt_Passwd_Name, 649 /* disablement strs */ NULL, NULL }, 650 651 { /* entry idx, value */ 13, VALUE_OPT_GET_PVT_PASSWD, 652 /* equiv idx, value */ 13, VALUE_OPT_GET_PVT_PASSWD, 653 /* equivalenced to */ NO_EQUIVALENT, 654 /* min, max, act ct */ 0, 1, 0, 655 /* opt state flags */ GET_PVT_PASSWD_FLAGS, 0, 656 /* last opt argumnt */ { NULL }, 657 /* arg list/cookie */ NULL, 658 /* must/cannot opts */ NULL, NULL, 659 /* option proc */ NULL, 660 /* desc, NAME, name */ zGet_Pvt_PasswdText, zGet_Pvt_Passwd_NAME, zGet_Pvt_Passwd_Name, 661 /* disablement strs */ NULL, NULL }, 662 663 { /* entry idx, value */ 14, VALUE_OPT_SIGN_KEY, 664 /* equiv idx, value */ 14, VALUE_OPT_SIGN_KEY, 665 /* equivalenced to */ NO_EQUIVALENT, 666 /* min, max, act ct */ 0, 1, 0, 667 /* opt state flags */ SIGN_KEY_FLAGS, 0, 668 /* last opt argumnt */ { NULL }, 669 /* arg list/cookie */ NULL, 670 /* must/cannot opts */ NULL, NULL, 671 /* option proc */ NULL, 672 /* desc, NAME, name */ zSign_KeyText, zSign_Key_NAME, zSign_Key_Name, 673 /* disablement strs */ NULL, NULL }, 674 675 { /* entry idx, value */ 15, VALUE_OPT_SUBJECT_NAME, 676 /* equiv idx, value */ 15, VALUE_OPT_SUBJECT_NAME, 677 /* equivalenced to */ NO_EQUIVALENT, 678 /* min, max, act ct */ 0, 1, 0, 679 /* opt state flags */ SUBJECT_NAME_FLAGS, 0, 680 /* last opt argumnt */ { NULL }, 681 /* arg list/cookie */ NULL, 682 /* must/cannot opts */ NULL, NULL, 683 /* option proc */ NULL, 684 /* desc, NAME, name */ zSubject_NameText, zSubject_Name_NAME, zSubject_Name_Name, 685 /* disablement strs */ NULL, NULL }, 686 687 { /* entry idx, value */ 16, VALUE_OPT_TRUSTED_CERT, 688 /* equiv idx, value */ 16, VALUE_OPT_TRUSTED_CERT, 689 /* equivalenced to */ NO_EQUIVALENT, 690 /* min, max, act ct */ 0, 1, 0, 691 /* opt state flags */ TRUSTED_CERT_FLAGS, 0, 692 /* last opt argumnt */ { NULL }, 693 /* arg list/cookie */ NULL, 694 /* must/cannot opts */ NULL, NULL, 695 /* option proc */ NULL, 696 /* desc, NAME, name */ zTrusted_CertText, zTrusted_Cert_NAME, zTrusted_Cert_Name, 697 /* disablement strs */ NULL, NULL }, 698 699 { /* entry idx, value */ 17, VALUE_OPT_MV_PARAMS, 700 /* equiv idx, value */ 17, VALUE_OPT_MV_PARAMS, 701 /* equivalenced to */ NO_EQUIVALENT, 702 /* min, max, act ct */ 0, 1, 0, 703 /* opt state flags */ MV_PARAMS_FLAGS, 0, 704 /* last opt argumnt */ { NULL }, 705 /* arg list/cookie */ NULL, 706 /* must/cannot opts */ NULL, NULL, 707 /* option proc */ optionNumericVal, 708 /* desc, NAME, name */ zMv_ParamsText, zMv_Params_NAME, zMv_Params_Name, 709 /* disablement strs */ NULL, NULL }, 710 711 { /* entry idx, value */ 18, VALUE_OPT_MV_KEYS, 712 /* equiv idx, value */ 18, VALUE_OPT_MV_KEYS, 713 /* equivalenced to */ NO_EQUIVALENT, 714 /* min, max, act ct */ 0, 1, 0, 715 /* opt state flags */ MV_KEYS_FLAGS, 0, 716 /* last opt argumnt */ { NULL }, 717 /* arg list/cookie */ NULL, 718 /* must/cannot opts */ NULL, NULL, 719 /* option proc */ optionNumericVal, 720 /* desc, NAME, name */ zMv_KeysText, zMv_Keys_NAME, zMv_Keys_Name, 721 /* disablement strs */ NULL, NULL }, 722 723#ifdef NO_OPTIONAL_OPT_ARGS 724# define VERSION_OPT_FLAGS OPTST_IMM | OPTST_NO_INIT 725#else 726# define VERSION_OPT_FLAGS OPTST_SET_ARGTYPE(OPARG_TYPE_STRING) | \ 727 OPTST_ARG_OPTIONAL | OPTST_IMM | OPTST_NO_INIT 728#endif 729 730 { /* entry idx, value */ INDEX_OPT_VERSION, VALUE_OPT_VERSION, 731 /* equiv idx value */ NO_EQUIVALENT, 0, 732 /* equivalenced to */ NO_EQUIVALENT, 733 /* min, max, act ct */ 0, 1, 0, 734 /* opt state flags */ VERSION_OPT_FLAGS, 0, 735 /* last opt argumnt */ { NULL }, 736 /* arg list/cookie */ NULL, 737 /* must/cannot opts */ NULL, NULL, 738 /* option proc */ DOVERPROC, 739 /* desc, NAME, name */ zVersionText, NULL, zVersion_Name, 740 /* disablement strs */ NULL, NULL }, 741 742#undef VERSION_OPT_FLAGS 743 744 745 { /* entry idx, value */ INDEX_OPT_HELP, VALUE_OPT_HELP, 746 /* equiv idx value */ NO_EQUIVALENT, 0, 747 /* equivalenced to */ NO_EQUIVALENT, 748 /* min, max, act ct */ 0, 1, 0, 749 /* opt state flags */ OPTST_IMM | OPTST_NO_INIT, 0, 750 /* last opt argumnt */ { NULL }, 751 /* arg list/cookie */ NULL, 752 /* must/cannot opts */ NULL, NULL, 753 /* option proc */ doUsageOpt, 754 /* desc, NAME, name */ zHelpText, NULL, zHelp_Name, 755 /* disablement strs */ NULL, NULL }, 756 757 { /* entry idx, value */ INDEX_OPT_MORE_HELP, VALUE_OPT_MORE_HELP, 758 /* equiv idx value */ NO_EQUIVALENT, 0, 759 /* equivalenced to */ NO_EQUIVALENT, 760 /* min, max, act ct */ 0, 1, 0, 761 /* opt state flags */ OPTST_IMM | OPTST_NO_INIT, 0, 762 /* last opt argumnt */ { NULL }, 763 /* arg list/cookie */ NULL, 764 /* must/cannot opts */ NULL, NULL, 765 /* option proc */ optionPagedUsage, 766 /* desc, NAME, name */ zMore_HelpText, NULL, zMore_Help_Name, 767 /* disablement strs */ NULL, NULL }, 768 769 { /* entry idx, value */ INDEX_OPT_SAVE_OPTS, VALUE_OPT_SAVE_OPTS, 770 /* equiv idx value */ NO_EQUIVALENT, 0, 771 /* equivalenced to */ NO_EQUIVALENT, 772 /* min, max, act ct */ 0, 1, 0, 773 /* opt state flags */ OPTST_SET_ARGTYPE(OPARG_TYPE_STRING) 774 | OPTST_ARG_OPTIONAL | OPTST_NO_INIT, 0, 775 /* last opt argumnt */ { NULL }, 776 /* arg list/cookie */ NULL, 777 /* must/cannot opts */ NULL, NULL, 778 /* option proc */ NULL, 779 /* desc, NAME, name */ zSave_OptsText, NULL, zSave_Opts_Name, 780 /* disablement strs */ NULL, NULL }, 781 782 { /* entry idx, value */ INDEX_OPT_LOAD_OPTS, VALUE_OPT_LOAD_OPTS, 783 /* equiv idx value */ NO_EQUIVALENT, 0, 784 /* equivalenced to */ NO_EQUIVALENT, 785 /* min, max, act ct */ 0, NOLIMIT, 0, 786 /* opt state flags */ OPTST_SET_ARGTYPE(OPARG_TYPE_STRING) \ 787 | OPTST_DISABLE_IMM, 0, 788 /* last opt argumnt */ { NULL }, 789 /* arg list/cookie */ NULL, 790 /* must/cannot opts */ NULL, NULL, 791 /* option proc */ optionLoadOpt, 792 /* desc, NAME, name */ zLoad_OptsText, zLoad_Opts_NAME, zLoad_Opts_Name, 793 /* disablement strs */ zNotLoad_Opts_Name, zNotLoad_Opts_Pfx } 794}; 795 796/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 797 * 798 * Define the Ntp_Keygen Option Environment 799 */ 800tSCC zPROGNAME[] = "NTP_KEYGEN"; 801tSCC zUsageTitle[] = 802"ntp-keygen (ntp) - Create a NTP host key - Ver. 4.2.4p8\n\ 803USAGE: %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]...\n"; 804tSCC zRcName[] = ".ntprc"; 805tSCC* apzHomeList[] = { 806 "$HOME", 807 ".", 808 NULL }; 809 810tSCC zBugsAddr[] = "http://bugs.ntp.org, bugs@ntp.org"; 811#define zExplain NULL 812tSCC zDetail[] = "\n\ 813If there is no new host key, look for an existing one.\n\ 814If one is not found, create it.\n"; 815tSCC zFullVersion[] = NTP_KEYGEN_FULL_VERSION; 816/* extracted from /usr/local/gnu/autogen-5.9.1/share/autogen/optcode.tpl near line 408 */ 817 818#if defined(ENABLE_NLS) 819# define OPTPROC_BASE OPTPROC_TRANSLATE 820 static tOptionXlateProc translate_option_strings; 821#else 822# define OPTPROC_BASE OPTPROC_NONE 823# define translate_option_strings NULL 824#endif /* ENABLE_NLS */ 825 826tOptions ntp_keygenOptions = { 827 OPTIONS_STRUCT_VERSION, 828 0, NULL, /* original argc + argv */ 829 ( OPTPROC_BASE 830 + OPTPROC_ERRSTOP 831 + OPTPROC_SHORTOPT 832 + OPTPROC_LONGOPT 833 + OPTPROC_NO_REQ_OPT 834 + OPTPROC_ENVIRON 835 + OPTPROC_NO_ARGS 836 + OPTPROC_HAS_IMMED ), 837 0, NULL, /* current option index, current option */ 838 NULL, NULL, zPROGNAME, 839 zRcName, zCopyright, zCopyrightNotice, 840 zFullVersion, apzHomeList, zUsageTitle, 841 zExplain, zDetail, optDesc, 842 zBugsAddr, /* address to send bugs to */ 843 NULL, NULL, /* extensions/saved state */ 844 optionUsage, /* usage procedure */ 845 translate_option_strings, /* translation procedure */ 846 /* 847 * Indexes to special options 848 */ 849 { INDEX_OPT_MORE_HELP, 850 INDEX_OPT_SAVE_OPTS, 851 NO_EQUIVALENT /* index of '-#' option */, 852 NO_EQUIVALENT /* index of default opt */ 853 }, 854 24 /* full option count */, 19 /* user option count */ 855}; 856 857/* 858 * Create the static procedure(s) declared above. 859 */ 860static void 861doUsageOpt( 862 tOptions* pOptions, 863 tOptDesc* pOptDesc ) 864{ 865 USAGE( EXIT_SUCCESS ); 866} 867 868#if ! defined(TEST_NTP_KEYGEN_OPTS) 869 870/* * * * * * * 871 * 872 * For the set-debug-level option, when DEBUG is #define-d. 873 */ 874#ifdef DEBUG 875static void 876doOptSet_Debug_Level( 877 tOptions* pOptions, 878 tOptDesc* pOptDesc ) 879{ 880 /* extracted from ../include/debug-opt.def, line 29 */ 881DESC(DEBUG_LEVEL).optOccCt = atoi( pOptDesc->pzLastArg ); 882} 883#endif /* defined DEBUG */ 884 885#endif /* defined(TEST_NTP_KEYGEN_OPTS) */ 886 887/* * * * * * * 888 * 889 * For the modulus option, when OPENSSL is #define-d. 890 */ 891#ifdef OPENSSL 892static void 893doOptModulus( 894 tOptions* pOptions, 895 tOptDesc* pOptDesc ) 896{ 897 static const struct {const int rmin, rmax;} rng[ 1 ] = { 898 { 256, 2048 } }; 899 int val; 900 int ix; 901 char const* pzIndent = "\t\t\t\t "; 902 extern FILE* option_usage_fp; 903 904 if (pOptDesc == NULL) /* usage is requesting range list 905 option_usage_fp has already been set */ 906 goto emit_ranges; 907 908 val = atoi( pOptDesc->optArg.argString ); 909 for (ix = 0; ix < 1; ix++) { 910 if (val < rng[ix].rmin) 911 continue; /* ranges need not be ordered. */ 912 if (val == rng[ix].rmin) 913 goto valid_return; 914 if (rng[ix].rmax == INT_MIN) 915 continue; 916 if (val <= rng[ix].rmax) 917 goto valid_return; 918 } 919 920 option_usage_fp = stderr; 921 fprintf(stderr, _("%s error: %s option value ``%s''is out of range.\n"), 922 pOptions->pzProgName, pOptDesc->pz_Name, pOptDesc->optArg.argString); 923 pzIndent = "\t"; 924 925 emit_ranges: 926 fprintf( option_usage_fp, _("%sit must lie in the range: %d to %d\n"), 927 pzIndent, rng[0].rmin, rng[0].rmax ); 928 if (pOptDesc == NULL) 929 return; 930 931 USAGE( EXIT_FAILURE ); 932 /* NOTREACHED */ 933 return; 934 935 valid_return: 936 pOptDesc->optArg.argInt = val; 937} 938#endif /* defined OPENSSL */ 939 940/* extracted from /usr/local/gnu/autogen-5.9.1/share/autogen/optmain.tpl near line 92 */ 941 942#if defined(TEST_NTP_KEYGEN_OPTS) /* TEST MAIN PROCEDURE: */ 943 944int 945main( int argc, char** argv ) 946{ 947 int res = EXIT_SUCCESS; 948 (void)optionProcess( &ntp_keygenOptions, argc, argv ); 949 { 950 void optionPutShell( tOptions* ); 951 optionPutShell( &ntp_keygenOptions ); 952 } 953 return res; 954} 955#endif /* defined TEST_NTP_KEYGEN_OPTS */ 956/* extracted from /usr/local/gnu/autogen-5.9.1/share/autogen/optcode.tpl near line 514 */ 957 958#if ENABLE_NLS 959#include <stdio.h> 960#include <stdlib.h> 961#include <string.h> 962#include <unistd.h> 963#include <autoopts/usage-txt.h> 964 965static char* AO_gettext( char const* pz ); 966static void coerce_it(void** s); 967 968static char* 969AO_gettext( char const* pz ) 970{ 971 char* pzRes; 972 if (pz == NULL) 973 return NULL; 974 pzRes = _(pz); 975 if (pzRes == pz) 976 return pzRes; 977 pzRes = strdup( pzRes ); 978 if (pzRes == NULL) { 979 fputs( _("No memory for duping translated strings\n"), stderr ); 980 exit( EXIT_FAILURE ); 981 } 982 return pzRes; 983} 984 985static void coerce_it(void** s) { *s = AO_gettext(*s); } 986#define COERSION(_f) \ 987 coerce_it((void*)&(ntp_keygenOptions._f)) 988 989/* 990 * This invokes the translation code (e.g. gettext(3)). 991 */ 992static void 993translate_option_strings( void ) 994{ 995 /* 996 * Guard against re-translation. It won't work. The strings will have 997 * been changed by the first pass through this code. One shot only. 998 */ 999 if (option_usage_text.field_ct == 0) 1000 return; 1001 /* 1002 * Do the translations. The first pointer follows the field count field. 1003 * The field count field is the size of a pointer. 1004 */ 1005 { 1006 char** ppz = (char**)(void*)&(option_usage_text); 1007 int ix = option_usage_text.field_ct; 1008 1009 do { 1010 ppz++; 1011 *ppz = AO_gettext(*ppz); 1012 } while (--ix > 0); 1013 } 1014 option_usage_text.field_ct = 0; 1015 1016 { 1017 tOptDesc* pOD = ntp_keygenOptions.pOptDesc; 1018 int ix = ntp_keygenOptions.optCt; 1019 1020 for (;;) { 1021 pOD->pzText = AO_gettext(pOD->pzText); 1022 pOD->pz_NAME = AO_gettext(pOD->pz_NAME); 1023 pOD->pz_Name = AO_gettext(pOD->pz_Name); 1024 pOD->pz_DisableName = AO_gettext(pOD->pz_DisableName); 1025 pOD->pz_DisablePfx = AO_gettext(pOD->pz_DisablePfx); 1026 if (--ix <= 0) 1027 break; 1028 pOD++; 1029 } 1030 } 1031 COERSION(pzCopyright); 1032 COERSION(pzCopyNotice); 1033 COERSION(pzFullVersion); 1034 COERSION(pzUsageTitle); 1035 COERSION(pzExplain); 1036 COERSION(pzDetail); 1037} 1038 1039#endif /* ENABLE_NLS */ 1040 1041#ifdef __cplusplus 1042} 1043#endif 1044/* ntp-keygen-opts.c ends here */