AutoGen Definitions options;
prog-name     = gnutls-cli-debug;
prog-title    = "GnuTLS debug client";
prog-desc     = "Simple client program to check TLS server capabilities.";
short-usage   = "Usage: gnutls-cli-debug [options] hostname\n"
                "gnutls-cli --help for usage instructions.\n";
explain       = "";
detail        = "TLS debug client. It sets up multiple TLS connections to 
a server and queries its capabilities. It was created to assist in debugging 
GnuTLS, but it might be useful to extract a TLS server's capabilities.
It connects to a TLS server, performs tests and print the server's 
capabilities. If called with the `-v' parameter more checks will be performed.
Can be used to check for servers with special needs or bugs.";
reorder-args;
argument;

#define  VERBOSE_OPT 1
#include args-std.def

flag = {
    name      = port;
    value     = p;
    arg-type  = number;
    arg-range = "0 -> 65536";
    descrip   = "The port to connect to";
    doc      = "";
};

flag = {
    name      = app-proto;
    arg-type  = string;
    descrip   = "The application protocol to be used to obtain the server's certificate (https, smtp, imap)";
    doc      = "";
};

doc-section = {
  ds-type   = 'SEE ALSO'; // or anything else
  ds-format = 'texi';      // or texi or mdoc format
  ds-text   = <<-_EOText_
gnutls-cli(1), gnutls-serv(1)
_EOText_;
};

doc-section = {
  ds-type = 'EXAMPLES';
  ds-format = 'texi';
  ds-text   = <<-_EOF_
@example
$ ../src/gnutls-cli-debug localhost
Resolving 'localhost'...
Connecting to '127.0.0.1:443'...
Checking for SSL 3.0 support... yes
Checking whether %COMPAT is required... no
Checking for TLS 1.0 support... yes
Checking for TLS 1.1 support... no
Checking fallback from TLS 1.1 to... TLS 1.0
Checking for TLS 1.2 support... no
Checking whether we need to disable TLS 1.0... N/A
Checking for Safe renegotiation support... yes
Checking for Safe renegotiation support (SCSV)... yes
Checking for HTTPS server name... not checked
Checking for version rollback bug in RSA PMS... no
Checking for version rollback bug in Client Hello... no
Checking whether the server ignores the RSA PMS version... no
Checking whether the server can accept Hello Extensions... yes
Checking whether the server can accept small records (512 bytes)... yes
Checking whether the server can accept cipher suites not in SSL 3.0 spec... yes
Checking whether the server can accept a bogus TLS record version in the client hello... yes
Checking for certificate information... N/A
Checking for trusted CAs... N/A
Checking whether the server understands TLS closure alerts... partially
Checking whether the server supports session resumption... yes
Checking for export-grade ciphersuite support... no
Checking RSA-export ciphersuite info... N/A
Checking for anonymous authentication support... no
Checking anonymous Diffie-Hellman group info... N/A
Checking for ephemeral Diffie-Hellman support... no
Checking ephemeral Diffie-Hellman group info... N/A
Checking for ephemeral EC Diffie-Hellman support... yes
Checking ephemeral EC Diffie-Hellman group info...
 Curve SECP256R1 
Checking for AES-GCM cipher support... no
Checking for AES-CBC cipher support... yes
Checking for CAMELLIA cipher support... no
Checking for 3DES-CBC cipher support... yes
Checking for ARCFOUR 128 cipher support... yes
Checking for ARCFOUR 40 cipher support... no
Checking for MD5 MAC support... yes
Checking for SHA1 MAC support... yes
Checking for SHA256 MAC support... no
Checking for ZLIB compression support... no
Checking for max record size... no
Checking for OpenPGP authentication support... no
@end example
_EOF_;
};

