{
    "content": [
        {
            "type": "text",
            "text": "# config(5) (man)\n\n**Summary:** config - OpenSSL CONF library configuration files\n\n## Examples\n\n- `This example shows how to use quoting and escaping.`\n- `# This is the default section.`\n- `HOME = /temp`\n- `configdir = $ENV::HOME/config`\n- `[ sectionone ]`\n- `# Quotes permit leading and trailing whitespace`\n- `any = \" any variable name \"`\n- `other = A string that can \\`\n- `cover several lines \\`\n- `by including \\\\ characters`\n- `message = Hello World\\n`\n- `[ sectiontwo ]`\n- `greeting = $sectionone::message`\n- `This example shows how to expand environment variables safely.  In this example, the variable`\n- `tempfile is intended to refer to a temporary file, and the environment variable TEMP or TMP,`\n- `if present, specify the directory where the file should be put.  Since the default section is`\n- `checked if a variable does not exist, it is possible to set TMP to default to /tmp, and TEMP`\n- `to default to TMP.`\n- `# These two lines must be in the default section.`\n- `TMP = /tmp`\n- `TEMP = $ENV::TMP`\n- `# This can be used anywhere`\n- `tmpfile = ${ENV::TEMP}/tmp.filename`\n- `This example shows how to enforce FIPS mode for the application sample.`\n- `sample = fipsconfig`\n- `[fipsconfig]`\n- `algsection = evpproperties`\n- `[evpproperties]`\n- `defaultproperties = \"fips=yes\"`\n\n## See Also\n\n- openssl-x509(1)\n- openssl-req(1)\n- openssl-ca(1)\n- openssl-fipsinstall(1)\n- ASN1generatenconf(3)\n- EVPsetdefaultproperties(3)\n- CONFmodulesload(3)\n- CONFmodulesloadfile(3)\n- fipsconfig(5)\n- x509v3config(5)\n\n## Section Outline\n\n- **NAME** (2 lines)\n- **DESCRIPTION** (9 lines)\n- **SYNTAX** (4 lines) — 2 subsections\n  - Directives (47 lines)\n  - Settings (59 lines)\n- **OPENSSL LIBRARY CONFIGURATION** (50 lines) — 16 subsections\n  - ASN.1 Object Identifier Configuration (21 lines)\n  - Provider Configuration (7 lines)\n  - identity (9 lines)\n  - module (2 lines)\n  - activate (13 lines)\n  - EVP Configuration (9 lines)\n  - fips___mode (deprecated) (8 lines)\n  - SSL Configuration (37 lines)\n  - Engine Configuration (23 lines)\n  - init (22 lines)\n  - Random Configuration (5 lines)\n  - random (10 lines)\n  - cipher (3 lines)\n  - digest (3 lines)\n  - properties (3 lines)\n  - seed (7 lines)\n- **EXAMPLES** (40 lines)\n- **ENVIRONMENT** (14 lines)\n- **BUGS** (9 lines)\n- **HISTORY** (7 lines)\n- **SEE ALSO** (4 lines)\n- **COPYRIGHT** (9 lines)\n\n## Full Content\n\n### NAME\n\nconfig - OpenSSL CONF library configuration files\n\n### DESCRIPTION\n\nThis page documents the syntax of OpenSSL configuration files, as parsed by NCONFload(3) and\nrelated functions.  This format is used by many of the OpenSSL commands, and to initialize\nthe libraries when used by any application.\n\nThe first part describes the general syntax of the configuration files, and subsequent\nsections describe the semantics of individual modules. Other modules are described in\nfipsconfig(5) and x509v3config(5).  The syntax for defining ASN.1 values is described in\nASN1generatenconf(3).\n\n### SYNTAX\n\nA configuration file is a series of lines.  Blank lines, and whitespace between the elements\nof a line, have no significance. A comment starts with a # character; the rest of the line is\nignored. If the # is the first non-space character in a line, the entire line is ignored.\n\n#### Directives\n\nTwo directives can be used to control the parsing of configuration files: .include and\n.pragma.\n\nFor compatibility with older versions of OpenSSL, an equal sign after the directive will be\nignored.  Older versions will treat it as an assignment, so care should be taken if the\ndifference in semantics is important.\n\nA file can include other files using the include syntax:\n\n.include [=] pathname\n\nIf pathname is a simple filename, that file is included directly at that point.  Included\nfiles can have .include statements that specify other files.  If pathname is a directory, all\nfiles within that directory that have a \".cnf\" or \".conf\" extension will be included.  (This\nis only available on systems with POSIX IO support.)  Any sub-directories found inside the\npathname are ignored.  Similarly, if a file is opened while scanning a directory, and that\nfile has an .include directive that specifies a directory, that is also ignored.\n\nAs a general rule, the pathname should be an absolute path; this can be enforced with the\nabspath and includedir pragmas, described below.  The environment variable\nOPENSSLCONFINCLUDE, if it exists, is prepended to all relative pathnames.  If the pathname\nis still relative, it is interpreted based on the current working directory.\n\nTo require all file inclusions to name absolute paths, use the following directive:\n\n.pragma [=] abspath:value\n\nThe default behavior, where the value is false or off, is to allow relative paths. To require\nall .include pathnames to be absolute paths, use a value of true or on.\n\nIn these files, the dollar sign, $, is used to reference a variable, as described below.  On\nsome platforms, however, it is common to treat $ as a regular character in symbol names.\nSupporting this behavior can be done with the following directive:\n\n.pragma [=] dollarid:value\n\nThe default behavior, where the value is false or off, is to treat the dollarsign as\nindicating a variable name; \"foo$bar\" is interpreted as \"foo\" followed by the expansion of\nthe variable \"bar\". If value is true or on, then \"foo$bar\" is a single seven-character name\nnad variable expansions must be specified using braces or parentheses.\n\n.pragma [=] includedir:value\n\nIf a relative pathname is specified in the .include directive, and the OPENSSLCONFINCLUDE\nenvironment variable doesn't exist, then the value of the includedir pragma, if it exists, is\nprepended to the pathname.\n\n#### Settings\n\nA configuration file is divided into a number of sections.  A section begins with the section\nname in square brackets, and ends when a new section starts, or at the end of the file.  The\nsection name can consist of alphanumeric characters and underscores.  Whitespace between the\nname and the brackets is removed.\n\nThe first section of a configuration file is special and is referred to as the default\nsection. This section is usually unnamed and spans from the start of file until the first\nnamed section. When a name is being looked up, it is first looked up in the current or named\nsection, and then the default section if necessary.\n\nThe environment is mapped onto a section called ENV.\n\nWithin a section are a series of name/value assignments, described in more detail below.  As\na reminder, the square brackets shown in this example are required, not optional:\n\n[ section ]\nname1 = This is value1\nname2 = Another value\n...\n[ newsection ]\nname1 = New value1\nname3 = Value 3\n\nThe name can contain any alphanumeric characters as well as a few punctuation symbols such as\n. , ; and .  Whitespace after the name and before the equal sign is ignored.\n\nIf a name is repeated in the same section, then all but the last value are ignored. In\ncertain circumstances, such as with Certificate DNs, the same field may occur multiple times.\nIn order to support this, commands like openssl-req(1) ignore any leading text that is\npreceded with a period. For example:\n\n1.OU = First OU\n2.OU = Second OU\n\nThe value consists of the string following the = character until end of line with any leading\nand trailing whitespace removed.\n\nThe value string undergoes variable expansion. The text $var or \"${var}\" inserts the value of\nthe named variable from the current section.  To use a value from another section use\n$section::name or \"${section::name}\".  By using $ENV::name, the value of the specified\nenvironment variable will be substituted.\n\nVariables must be defined before their value is referenced, otherwise an error is flagged and\nthe file will not load.  This can be worked around by specifying a default value in the\ndefault section before the variable is used.\n\nAny name/value settings in an ENV section are available to the configuration file, but are\nnot propagated to the environment.\n\nIt is an error if the value ends up longer than 64k.\n\nIt is possible to escape certain characters by using a single ' or double \" quote around the\nvalue, or using a backslash \\ before the character, By making the last character of a line a\n\\ a value string can be spread across multiple lines. In addition the sequences \\n, \\r, \\b\nand \\t are recognized.\n\nThe expansion and escape rules as described above that apply to value also apply to the\npathname of the .include directive.\n\n### OPENSSL LIBRARY CONFIGURATION\n\nThe sections below use the informal term module to refer to a part of the OpenSSL\nfunctionality. This is not the same as the formal term FIPS module, for example.\n\nThe OpenSSL configuration looks up the value of opensslconf in the default section and takes\nthat as the name of a section that specifies how to configure any modules in the library. It\nis not an error to leave any module in its default configuration. An application can specify\na different name by calling CONFmodulesloadfile(), for example, directly.\n\nOpenSSL also looks up the value of configdiagnostics.  If this exists and has a nonzero\nnumeric value, any error suppressing flags passed to CONFmodulesload() will be ignored.\nThis is useful for diagnosing misconfigurations but its use in production requires additional\nconsideration.  With this option enabled, a configuration error will completely prevent\naccess to a service.  Without this option and in the presence of a configuration error,\naccess will be allowed but the desired configuration will not be used.\n\n# These must be in the default section\nconfigdiagnostics = 1\nopensslconf = opensslinit\n\n[opensslinit]\noidsection = oids\nproviders = providers\nalgsection = evpproperties\nsslconf = sslconfiguration\nengines = engines\nrandom = random\n\n[oids]\n... new oids here ...\n\n[providers]\n... provider stuff here ...\n\n[evpproperties]\n... EVP properties here ...\n\n[sslconfiguration]\n... SSL/TLS configuration properties here ...\n\n[engines]\n... engine properties here ...\n\n[random]\n... random properties here ...\n\nThe semantics of each module are described below. The phrase \"in the initialization section\"\nrefers to the section identified by the opensslconf or other name (given as opensslinit in\nthe example above).  The examples below assume the configuration above is used to specify the\nindividual sections.\n\n#### ASN.1 Object Identifier Configuration\n\nThe name oidsection in the initialization section names the section containing name/value\npairs of OID's.  The name is the short name; the value is an optional long name followed by a\ncomma, and the numeric value.  While some OpenSSL commands have their own section for\nspecifying OID's, this section makes them available to all commands and applications.\n\n[oids]\nshortName = a very long OID name, 1.2.3.4\nnewoid1 = 1.2.3.4.1\nsomeotheroid = 1.2.3.5\n\nIf a full configuration with the above fragment is in the file example.cnf, then the\nfollowing command line:\n\nOPENSSLCONF=example.cnf openssl asn1parse -genstr OID:1.2.3.4.1\n\nwill output:\n\n0:d=0  hl=2 l=   4 prim: OBJECT            :newoid1\n\nshowing that the OID \"newoid1\" has been added as \"1.2.3.4.1\".\n\n#### Provider Configuration\n\nThe name providers in the initialization section names the section containing cryptographic\nprovider configuration. The name/value assignments in this section each name a provider, and\npoint to the configuration section for that provider. The provider-specific section is used\nto specify how to load the module, activate it, and set other parameters.\n\nWithin a provider section, the following names have meaning:\n\n#### identity\n\nThis is used to specify an alternate name, overriding the default name specified in the\nlist of providers.  For example:\n\n[providers]\nfoo = fooprovider\n\n[fooprovider]\nidentity = myfipsmodule\n\n#### module\n\nSpecifies the pathname of the module (typically a shared library) to load.\n\n#### activate\n\nIf present, the module is activated. The value assigned to this name is not significant.\n\nAll parameters in the section as well as sub-sections are made available to the provider.\n\nDefault provider and its activation\n\nIf no providers are activated explicitly, the default one is activated implicitly.  See\nOSSLPROVIDER-default(7) for more details.\n\nIf you add a section explicitly activating any other provider(s), you most probably need to\nexplicitly activate the default provider, otherwise it becomes unavailable in openssl. It may\nmake the system remotely unavailable.\n\n#### EVP Configuration\n\nThe name algsection in the initialization section names the section containing algorithmic\nproperties when using the EVP API.\n\nWithin the algorithm properties section, the following names have meaning:\n\ndefaultproperties\nThe value may be anything that is acceptable as a property query string for\nEVPsetdefaultproperties().\n\n#### fips___mode (deprecated)\n\nThe value is a boolean that can be yes or no.  If the value is yes, this is exactly\nequivalent to:\n\ndefaultproperties = fips=yes\n\nIf the value is no, nothing happens. Using this name is deprecated, and if used, it must\nbe the only name in the section.\n\n#### SSL Configuration\n\nThe name sslconf in the initialization section names the section containing the list of\nSSL/TLS configurations.  As with the providers, each name in this section identifies a\nsection with the configuration for that name. For example:\n\n[sslconfiguration]\nserver = servertlsconfig\nclient = clienttlsconfig\nsystemdefault = tlssystemdefault\n\n[servertlsconfig]\n... configuration for SSL/TLS servers ...\n\n[clienttlsconfig]\n... configuration for SSL/TLS clients ...\n\nThe configuration name systemdefault has a special meaning.  If it exists, it is applied\nwhenever an SSLCTX object is created.  For example, to impose system-wide minimum TLS and\nDTLS protocol versions:\n\n[tlssystemdefault]\nMinProtocol = TLSv1.2\nMinProtocol = DTLSv1.2\n\nThe minimum TLS protocol is applied to SSLCTX objects that are TLS-based, and the minimum\nDTLS protocol to those are DTLS-based.  The same applies also to maximum versions set with\nMaxProtocol.\n\nEach configuration section consists of name/value pairs that are parsed by SSLCONFcmd(3),\nwhich will be called by SSLCTXconfig() or SSLconfig(), appropriately.  Note that any\ncharacters before an initial dot in the configuration section are ignored, so that the same\ncommand can be used multiple times. This probably is most useful for loading different key\ntypes, as shown here:\n\n[servertlsconfig]\nRSA.Certificate = server-rsa.pem\nECDSA.Certificate = server-ecdsa.pem\n\n#### Engine Configuration\n\nThe name engines in the initialization section names the section containing the list of\nENGINE configurations.  As with the providers, each name in this section identifies an engine\nwith the configuration for that engine.  The engine-specific section is used to specify how\nto load the engine, activate it, and set other parameters.\n\nWithin an engine section, the following names have meaning:\n\nengineid\nThis is used to specify an alternate name, overriding the default name specified in the\nlist of engines. If present, it must be first.  For example:\n\n[engines]\nfoo = fooengine\n\n[fooengine]\nengineid = myfoo\n\ndynamicpath\nThis loads and adds an ENGINE from the given path. It is equivalent to sending the ctrls\nSOPATH with the path argument followed by LISTADD with value 2 and LOAD to the dynamic\nENGINE.  If this is not the required behaviour then alternative ctrls can be sent\ndirectly to the dynamic ENGINE using ctrl commands.\n\n#### init\n\nThis specifies whether to initialize the ENGINE. If the value is 0 the ENGINE will not be\ninitialized, if the value is 1 an attempt is made to initialize the ENGINE immediately.\nIf the init command is not present then an attempt will be made to initialize the ENGINE\nafter all commands in its section have been processed.\n\ndefaultalgorithms\nThis sets the default algorithms an ENGINE will supply using the function\nENGINEsetdefaultstring().\n\nAll other names are taken to be the name of a ctrl command that is sent to the ENGINE, and\nthe value is the argument passed with the command.  The special value EMPTY means no value is\nsent with the command.  For example:\n\n[engines]\nfoo = fooengine\n\n[fooengine]\ndynamicpath = /some/path/fooengine.so\nsomectrl = somevalue\ndefaultalgorithms = ALL\notherctrl = EMPTY\n\n#### Random Configuration\n\nThe name random in the initialization section names the section containing the random number\ngenerater settings.\n\nWithin the random section, the following names have meaning:\n\n#### random\n\nThis is used to specify the random bit generator.  For example:\n\n[random]\nrandom = CTR-DRBG\n\nThe available random bit generators are:\n\nCTR-DRBG\nHASH-DRBG\nHMAC-DRBG\n\n#### cipher\n\nThis specifies what cipher a CTR-DRBG random bit generator will use.  Other random bit\ngenerators ignore this name.  The default value is AES-256-CTR.\n\n#### digest\n\nThis specifies what digest the HASH-DRBG or HMAC-DRBG random bit generators will use.\nOther random bit generators ignore this name.\n\n#### properties\n\nThis sets the property query used when fetching the random bit generator and any\nunderlying algorithms.\n\n#### seed\n\nThis sets the randomness source that should be used.  By default SEED-SRC will be used\noutside of the FIPS provider.  The FIPS provider uses call backs to access the same\nrandomness sources from outside the validated boundary.\n\nseedproperties\nThis sets the property query used when fetching the randomness source.\n\n### EXAMPLES\n\nThis example shows how to use quoting and escaping.\n\n# This is the default section.\nHOME = /temp\nconfigdir = $ENV::HOME/config\n\n[ sectionone ]\n# Quotes permit leading and trailing whitespace\nany = \" any variable name \"\nother = A string that can \\\ncover several lines \\\nby including \\\\ characters\nmessage = Hello World\\n\n\n[ sectiontwo ]\ngreeting = $sectionone::message\n\nThis example shows how to expand environment variables safely.  In this example, the variable\ntempfile is intended to refer to a temporary file, and the environment variable TEMP or TMP,\nif present, specify the directory where the file should be put.  Since the default section is\nchecked if a variable does not exist, it is possible to set TMP to default to /tmp, and TEMP\nto default to TMP.\n\n# These two lines must be in the default section.\nTMP = /tmp\nTEMP = $ENV::TMP\n\n# This can be used anywhere\ntmpfile = ${ENV::TEMP}/tmp.filename\n\nThis example shows how to enforce FIPS mode for the application sample.\n\nsample = fipsconfig\n\n[fipsconfig]\nalgsection = evpproperties\n\n[evpproperties]\ndefaultproperties = \"fips=yes\"\n\n### ENVIRONMENT\n\nOPENSSLCONF\nThe path to the config file, or the empty string for none.  Ignored in set-user-ID and\nset-group-ID programs.\n\nOPENSSLENGINES\nThe path to the engines directory.  Ignored in set-user-ID and set-group-ID programs.\n\nOPENSSLMODULES\nThe path to the directory with OpenSSL modules, such as providers.  Ignored in set-user-\nID and set-group-ID programs.\n\nOPENSSLCONFINCLUDE\nThe optional path to prepend to all .include paths.\n\n### BUGS\n\nThere is no way to include characters using the octal \\nnn form. Strings are all null\nterminated so nulls cannot form part of the value.\n\nThe escaping isn't quite right: if you want to use sequences like \\n you can't use any quote\nescaping on the same line.\n\nThe limit that only one directory can be opened and read at a time can be considered a bug\nand should be fixed.\n\n### HISTORY\n\nAn undocumented API, NCONFWIN32(), used a slightly different set of parsing rules there were\nintended to be tailored to the Microsoft Windows platform.  Specifically, the backslash\ncharacter was not an escape character and could be used in pathnames, only the double-quote\ncharacter was recognized, and comments began with a semi-colon.  This function was deprecated\nin OpenSSL 3.0; applications with configuration files using that syntax will have to be\nmodified.\n\n### SEE ALSO\n\nopenssl-x509(1), openssl-req(1), openssl-ca(1), openssl-fipsinstall(1),\nASN1generatenconf(3), EVPsetdefaultproperties(3), CONFmodulesload(3),\nCONFmodulesloadfile(3), fipsconfig(5), and x509v3config(5).\n\n### COPYRIGHT\n\nCopyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved.\n\nLicensed under the Apache License 2.0 (the \"License\").  You may not use this file except in\ncompliance with the License.  You can obtain a copy in the file LICENSE in the source\ndistribution or at <https://www.openssl.org/source/license.html>.\n\n\n\n3.0.2                                        2026-04-07                                 CONFIG(5SSL)\n\n"
        }
    ],
    "structuredContent": {
        "command": "config",
        "section": "5",
        "mode": "man",
        "summary": "config - OpenSSL CONF library configuration files",
        "synopsis": null,
        "flags": [],
        "examples": [
            "This example shows how to use quoting and escaping.",
            "# This is the default section.",
            "HOME = /temp",
            "configdir = $ENV::HOME/config",
            "[ sectionone ]",
            "# Quotes permit leading and trailing whitespace",
            "any = \" any variable name \"",
            "other = A string that can \\",
            "cover several lines \\",
            "by including \\\\ characters",
            "message = Hello World\\n",
            "[ sectiontwo ]",
            "greeting = $sectionone::message",
            "This example shows how to expand environment variables safely.  In this example, the variable",
            "tempfile is intended to refer to a temporary file, and the environment variable TEMP or TMP,",
            "if present, specify the directory where the file should be put.  Since the default section is",
            "checked if a variable does not exist, it is possible to set TMP to default to /tmp, and TEMP",
            "to default to TMP.",
            "# These two lines must be in the default section.",
            "TMP = /tmp",
            "TEMP = $ENV::TMP",
            "# This can be used anywhere",
            "tmpfile = ${ENV::TEMP}/tmp.filename",
            "This example shows how to enforce FIPS mode for the application sample.",
            "sample = fipsconfig",
            "[fipsconfig]",
            "algsection = evpproperties",
            "[evpproperties]",
            "defaultproperties = \"fips=yes\""
        ],
        "see_also": [
            {
                "name": "openssl-x509",
                "section": "1",
                "url": "https://www.chedong.com/phpMan.php/man/openssl-x509/1/json"
            },
            {
                "name": "openssl-req",
                "section": "1",
                "url": "https://www.chedong.com/phpMan.php/man/openssl-req/1/json"
            },
            {
                "name": "openssl-ca",
                "section": "1",
                "url": "https://www.chedong.com/phpMan.php/man/openssl-ca/1/json"
            },
            {
                "name": "openssl-fipsinstall",
                "section": "1",
                "url": "https://www.chedong.com/phpMan.php/man/openssl-fipsinstall/1/json"
            },
            {
                "name": "ASN1generatenconf",
                "section": "3",
                "url": "https://www.chedong.com/phpMan.php/man/ASN1generatenconf/3/json"
            },
            {
                "name": "EVPsetdefaultproperties",
                "section": "3",
                "url": "https://www.chedong.com/phpMan.php/man/EVPsetdefaultproperties/3/json"
            },
            {
                "name": "CONFmodulesload",
                "section": "3",
                "url": "https://www.chedong.com/phpMan.php/man/CONFmodulesload/3/json"
            },
            {
                "name": "CONFmodulesloadfile",
                "section": "3",
                "url": "https://www.chedong.com/phpMan.php/man/CONFmodulesloadfile/3/json"
            },
            {
                "name": "fipsconfig",
                "section": "5",
                "url": "https://www.chedong.com/phpMan.php/man/fipsconfig/5/json"
            },
            {
                "name": "x509v3config",
                "section": "5",
                "url": "https://www.chedong.com/phpMan.php/man/x509v3config/5/json"
            }
        ],
        "section_outline": [
            {
                "name": "NAME",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "DESCRIPTION",
                "lines": 9,
                "subsections": []
            },
            {
                "name": "SYNTAX",
                "lines": 4,
                "subsections": [
                    {
                        "name": "Directives",
                        "lines": 47
                    },
                    {
                        "name": "Settings",
                        "lines": 59
                    }
                ]
            },
            {
                "name": "OPENSSL LIBRARY CONFIGURATION",
                "lines": 50,
                "subsections": [
                    {
                        "name": "ASN.1 Object Identifier Configuration",
                        "lines": 21
                    },
                    {
                        "name": "Provider Configuration",
                        "lines": 7
                    },
                    {
                        "name": "identity",
                        "lines": 9
                    },
                    {
                        "name": "module",
                        "lines": 2
                    },
                    {
                        "name": "activate",
                        "lines": 13
                    },
                    {
                        "name": "EVP Configuration",
                        "lines": 9
                    },
                    {
                        "name": "fips___mode (deprecated)",
                        "lines": 8
                    },
                    {
                        "name": "SSL Configuration",
                        "lines": 37
                    },
                    {
                        "name": "Engine Configuration",
                        "lines": 23
                    },
                    {
                        "name": "init",
                        "lines": 22
                    },
                    {
                        "name": "Random Configuration",
                        "lines": 5
                    },
                    {
                        "name": "random",
                        "lines": 10
                    },
                    {
                        "name": "cipher",
                        "lines": 3
                    },
                    {
                        "name": "digest",
                        "lines": 3
                    },
                    {
                        "name": "properties",
                        "lines": 3
                    },
                    {
                        "name": "seed",
                        "lines": 7
                    }
                ]
            },
            {
                "name": "EXAMPLES",
                "lines": 40,
                "subsections": []
            },
            {
                "name": "ENVIRONMENT",
                "lines": 14,
                "subsections": []
            },
            {
                "name": "BUGS",
                "lines": 9,
                "subsections": []
            },
            {
                "name": "HISTORY",
                "lines": 7,
                "subsections": []
            },
            {
                "name": "SEE ALSO",
                "lines": 4,
                "subsections": []
            },
            {
                "name": "COPYRIGHT",
                "lines": 9,
                "subsections": []
            }
        ]
    }
}