/* -*- Mode: Text -*- */

autogen definitions options;

#include copyright.def
#include homerc.def
#include autogen-version.def

prog-name      = "ntp-keygen";
prog-title     = "Create a NTP host key";
package        = ntp;

test-main;

include        = '#include <stdlib.h>';
#include       version.def

flag = {
    name      = certificate;
    value     = c;
    arg-type  = string;
    arg-name  = scheme;
    ifdef     = OPENSSL;
    descrip   = "certificate scheme";
    doc = <<-  _EndOfDoc_
	Just some descriptive text.
	_EndOfDoc_;
};

#include       debug-opt.def

flag = {
    name      = id-key;
    value     = e;
    ifdef     = OPENSSL;
    descrip   = "Write identity keys";
    doc = <<-  _EndOfDoc_
	Just some descriptive text.
	_EndOfDoc_;
};

flag = {
    name      = gq-params;
    value     = G;
    ifdef     = OPENSSL;
    descrip   = "Generate GQ parameters and keys";
    doc = <<-  _EndOfDoc_
	Just some descriptive text.
	_EndOfDoc_;
};

flag = {
    name      = gq-keys;
    value     = g;
    ifdef     = OPENSSL;
    descrip   = "update GQ keys";
    doc = <<-  _EndOfDoc_
	Just some descriptive text.
	_EndOfDoc_;
};

flag = {
    name      = host-key;
    value     = H;
    ifdef     = OPENSSL;
    descrip   = "generate RSA host key";
    doc = <<-  _EndOfDoc_
	Just some descriptive text.
	_EndOfDoc_;
};

flag = {
    name      = iffkey;
    value     = I;
    ifdef     = OPENSSL;
    descrip   = "generate IFF parameters";
    doc = <<-  _EndOfDoc_
	Just some descriptive text.
	_EndOfDoc_;
};

flag = {
    name      = issuer-name;
    value     = i;
    ifdef     = OPENSSL;
    descrip   = "set issuer name";
    doc = <<-  _EndOfDoc_
	Just some descriptive text.
	_EndOfDoc_;
};

flag = {
    name      = md5key;
    value     = M;
    descrip   = "generate MD5 keys";
    doc = <<-  _EndOfDoc_
	Just some descriptive text.
	_EndOfDoc_;
};

flag = {
    name      = modulus;
    value     = m;
    arg-type  = number;
    arg-name  = modulus;
    arg-range = '256->2048';
    ifdef     = OPENSSL;
    descrip   = "modulus";
    doc = <<-  _EndOfDoc_
	Just some descriptive text.
	_EndOfDoc_;
};

flag = {
    name      = pvt-cert;
    value     = P;
    ifdef     = OPENSSL;
    descrip   = "generate PC private certificate";
    doc = <<-  _EndOfDoc_
	Just some descriptive text.
	_EndOfDoc_;
};

flag = {
    name      = pvt-passwd;
    value     = p;
    ifdef     = OPENSSL;
    arg-type  = string;
    arg-name  = passwd;
    descrip   = "output private password";
    doc = <<-  _EndOfDoc_
	Just some descriptive text.
	_EndOfDoc_;
};

flag = {
    name      = get-pvt-passwd;
    value     = q;
    ifdef     = OPENSSL;
    arg-type  = string;
    arg-name  = passwd;
    descrip   = "input private password";
    doc = <<-  _EndOfDoc_
	Just some descriptive text.
	_EndOfDoc_;
};

flag = {
    name      = sign-key;
    value     = S;
    arg-type  = string;
    arg-name  = sign;
    ifdef     = OPENSSL;
    descrip   = "generate sign key (RSA or DSA)";
    doc = <<-  _EndOfDoc_
	Just some descriptive text.
	_EndOfDoc_;
};

flag = {
    name      = subject-name;
    value     = s;
    arg-type  = string;
    arg-name  = host;
    ifdef     = OPENSSL;
    descrip   = "set subject name";
    doc = <<-  _EndOfDoc_
	Just some descriptive text.
	_EndOfDoc_;
};

flag = {
    name      = trusted-cert;
    value     = T;
    ifdef     = OPENSSL;
    descrip   = "trusted certificate (TC scheme)";
    doc = <<-  _EndOfDoc_
	Just some descriptive text.
	_EndOfDoc_;
};

flag = {
    name      = mv-params;
    value     = V;
    arg-type  = number;
    arg-name  = num;
    ifdef     = OPENSSL;
    descrip   = "generate <num> MV parameters";
    doc = <<-  _EndOfDoc_
	Just some descriptive text.
	_EndOfDoc_;
};

flag = {
    name      = mv-keys;
    value     = v;
    arg-type  = number;
    arg-name  = num;
    ifdef     = OPENSSL;
    descrip   = "update <num> MV keys";
    doc = <<-  _EndOfDoc_
	Just some descriptive text.
	_EndOfDoc_;
};

detail = <<-  _EODetail_
	If there is no new host key, look for an existing one.
	If one is not found, create it.
	_EODetail_;
