{
    "content": [
        {
            "type": "text",
            "text": "# life_cycle-kdf (man)\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) go through a number of\nstages in their life-cycle:\n\n## Sections\n\n- **NAME**\n- **DESCRIPTION** (2 subsections)\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": "man",
        "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": 17,
                "subsections": [
                    {
                        "name": "State Transition Diagram",
                        "lines": 25
                    },
                    {
                        "name": "Formal State Transitions",
                        "lines": 12
                    }
                ]
            },
            {
                "name": "NOTES",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "SEE ALSO",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "HISTORY",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "COPYRIGHT",
                "lines": 9,
                "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) go through a number of\nstages in their life-cycle:\n\nstart\nThis state represents the KDF/PRF before it has been allocated.  It is the starting state\nfor 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 generating output.\n\nfreed\nThis state is entered when the KDF/PRF is freed.  It is the terminal state for all life-\ncycle transitions.\n",
                "subsections": [
                    {
                        "name": "State Transition Diagram",
                        "content": "The 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"
                    },
                    {
                        "name": "Formal State Transitions",
                        "content": "This section defines all of the legal state transitions.  This is the canonical list.\nFunction Call                   ------------- Current State -------------\nstart       newed       deriving    freed\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"
                    }
                ]
            },
            "NOTES": {
                "content": "At some point the EVP layer will begin enforcing the transitions described 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 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-06-02                         LIFECYCLE-KDF(7SSL)",
                "subsections": []
            }
        }
    }
}