{
    "content": [
        {
            "type": "text",
            "text": "# LIFE_CYCLE-KDF (info)\n\n## NAME\n\nlifecycle-kdf - The KDF algorithm life-cycle\n\n## DESCRIPTION\n\nAll key derivation functions (KDFs) and pseudo random functions (PRFs)\ngo through a number of stages in their life-cycle:\n\n## Sections\n\n- **NAME**\n- **DESCRIPTION**\n- **NOTES**\n- **SEE ALSO**\n- **HISTORY**\n- **COPYRIGHT**\n\nUse structuredContent.sections for detailed options, examples, and full documentation.\n"
        }
    ],
    "structuredContent": {
        "command": "LIFE_CYCLE-KDF",
        "section": "",
        "mode": "info",
        "summary": "lifecycle-kdf - The KDF algorithm life-cycle",
        "synopsis": null,
        "tldr_summary": null,
        "tldr_examples": [],
        "tldr_source": null,
        "flags": [],
        "examples": [],
        "see_also": [
            {
                "name": "provider-kdf",
                "section": "7",
                "url": "https://www.chedong.com/phpMan.php/man/provider-kdf/7/json"
            },
            {
                "name": "EVPKDF",
                "section": "3",
                "url": "https://www.chedong.com/phpMan.php/man/EVPKDF/3/json"
            }
        ],
        "section_outline": [
            {
                "name": "NAME",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "DESCRIPTION",
                "lines": 58,
                "subsections": []
            },
            {
                "name": "NOTES",
                "lines": 3,
                "subsections": []
            },
            {
                "name": "SEE ALSO",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "HISTORY",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "COPYRIGHT",
                "lines": 8,
                "subsections": []
            }
        ],
        "sections": {
            "NAME": {
                "content": "lifecycle-kdf - The KDF algorithm life-cycle\n",
                "subsections": []
            },
            "DESCRIPTION": {
                "content": "All key derivation functions (KDFs) and pseudo random functions (PRFs)\ngo through a number of stages in their life-cycle:\n\nstart\nThis state represents the KDF/PRF before it has been allocated.  It\nis the starting state for any life-cycle transitions.\n\nnewed\nThis state represents the KDF/PRF after it has been allocated.\n\nderiving\nThis state represents the KDF/PRF when it is set up and capable of\ngenerating output.\n\nfreed\nThis state is entered when the KDF/PRF is freed.  It is the\nterminal state for all life-cycle transitions.\n\nState Transition Diagram\nThe usual life-cycle of a KDF/PRF is illustrated:\n+-------------------+\n|       start       |\n+-------------------+\n|\n| EVPKDFCTXnew\nv\n+-------------------+\n|       newed       | <+\n+-------------------+  |\n|                    |\n| EVPKDFderive     |\nv                    | EVPKDFCTXreset\nEVPKDFderive   +-------------------+  |\n+ - - - - - - - -  |                   |  |\n'                  |     deriving      |  |\n+ - - - - - - - -> |                   | -+\n+-------------------+\n|\n| EVPKDFCTXfree\nv\n+-------------------+\n|       freed       |\n+-------------------+\n\nFormal State Transitions\nThis section defines all of the legal state transitions.  This is the\ncanonical list.\nstart       newed       deriving\nfreed\nEVPKDFCTXnew                 newed\nEVPKDFderive                             deriving     deriving\nEVPKDFCTXfree                freed       freed        freed\nEVPKDFCTXreset                           newed        newed\nEVPKDFCTXgetparams                      newed       deriving\nEVPKDFCTXsetparams                      newed       deriving\nEVPKDFCTXgettableparams                 newed       deriving\nEVPKDFCTXsettableparams                 newed       deriving\n",
                "subsections": []
            },
            "NOTES": {
                "content": "At some point the EVP layer will begin enforcing the transitions\ndescribed herein.\n",
                "subsections": []
            },
            "SEE ALSO": {
                "content": "provider-kdf(7), EVPKDF(3).\n",
                "subsections": []
            },
            "HISTORY": {
                "content": "The provider KDF interface was introduced in OpenSSL 3.0.\n",
                "subsections": []
            },
            "COPYRIGHT": {
                "content": "Copyright 2021 The OpenSSL Project Authors. All Rights Reserved.\n\nLicensed under the Apache License 2.0 (the \"License\").  You may not use\nthis file except in compliance with the License.  You can obtain a copy\nin the file LICENSE in the source distribution or at\n<https://www.openssl.org/source/license.html>.\n\n3.0.2                             2026-06-02              LIFECYCLE-KDF(7SSL)",
                "subsections": []
            }
        }
    }
}