in fizz/tool/FizzClientCommand.cpp [43:93]
void printUsage() {
// clang-format off
std::cerr
<< "Usage: client args\n"
<< "\n"
<< "Supported arguments:\n"
<< " -host host (use connect instead)\n"
<< " -port port (use connect instead)\n"
<< " -connect host:port (set the address to connect to. Default: localhost:8443)\n"
<< " -verify (enable server cert verification. Default: false)\n"
<< " -cert cert (PEM format client certificate to send if requested. Default: none)\n"
<< " -key key (PEM format private key for client certificate. Default: none)\n"
<< " -pass password (private key password. Default: none)\n"
<< " -capath directory (path to a directory of hashed formed CA certs used for verification.\n"
<< " The directory should contain one certificate or CRL per file in PEM format,\n"
<< " with a file name of the form hash.N for a certificate, or hash.rN for a CRL.\n"
<< " Refer to https://www.openssl.org/docs/man1.1.1/man1/rehash.html for how to generate such files.)\n"
<< " -cafile file (path to a bundle file of CA certs used for verification; can be used with or without -capath.)\n"
<< " -reconnect (after connecting, open another connection using a psk. Default: false)\n"
<< " -psk_save file (after connecting, save the psk to file )\n"
<< " -psk_load file (given file that contains a serialized psk, deserialize psk and open a connection with it)\n"
<< " -keylog file (dump TLS secrets to a NSS key log file; for debugging purpose only)\n"
<< " -servername name (server name to send in SNI. Default: same as host)\n"
<< " -alpn alpn1:... (colon-separated list of ALPNs to send. Default: none)\n"
<< " -ciphers c1:... (colon-separated list of ciphers in preference order. Default:\n"
<< " TLS_AES_128_GCM_SHA256,TLS_AES_256_GCM_SHA384,TLS_CHACHA20_POLY1305_SHA256)\n"
<< " -sigschemes s1:... (colon-separated list of signature schemes in preference order.\n"
<< " -curves c1:... (colon-separated list of supported ECDSA curves. Default: secp256r1, x25519)\n"
<< " -certcompression a1:... (enables certificate compression support for given algorithms. Default: None)\n"
<< " -early (enables sending early data during resumption. Default: false)\n"
<< " -quiet (hide informational logging. Default: false)\n"
<< " -v verbosity (set verbose log level for VLOG macros. Default: 0)\n"
<< " -vmodule m1=N,... (set per-module verbose log level for VLOG macros. Default: none)\n"
<< " -httpproxy host:port (set an HTTP proxy to use. Default: none)\n"
<< " -delegatedcred (enable delegated credential support. Default: false)\n"
<< " -ech (use default values to simulate the sending of an encrypted client hello.)\n"
<< " -echconfigs file (path to read ECH configs from. Format for contents is JSON.)\n"
<< " (JSON format: {echconfigs: [${your ECH config here with all the fields..}]})\n"
<< " (See FizzCommandCommonTest for an example.)\n"
<< " (Note: Setting ech configs implicitly enables ECH.)\n"
#ifdef FIZZ_TOOL_ENABLE_IO_URING
<< " -io_uring (use io_uring for I/O. Default: false)\n"
<< " -io_uring_capacity N (backend capacity for io_uring. Default: 128)\n"
<< " -io_uring_max_submit N (maximum submit size for io_uring. Default: 64)\n"
<< " -io_uring_max_get N (maximum get size for io_uring. Default: no limit)\n"
<< " -io_uring_register_fds (use registered fds with io_uring. Default: false)\n"
<< " -io_uring_async_recv (use async recv for io_uring. Default: false)\n"
#endif
;
// clang-format on
}