{
    "content": [
        {
            "type": "text",
            "text": "# LIFE_CYCLE-MAC (info)\n\n## NAME\n\nlifecycle-mac - The MAC algorithm life-cycle\n\n## DESCRIPTION\n\nAll message authentication codes (MACs) go through a number of stages\nin 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-MAC",
        "section": "",
        "mode": "info",
        "summary": "lifecycle-mac - The MAC algorithm life-cycle",
        "synopsis": null,
        "tldr_summary": null,
        "tldr_examples": [],
        "tldr_source": null,
        "flags": [],
        "examples": [],
        "see_also": [
            {
                "name": "provider-mac",
                "section": "7",
                "url": "https://www.chedong.com/phpMan.php/man/provider-mac/7/json"
            },
            {
                "name": "EVPMAC",
                "section": "3",
                "url": "https://www.chedong.com/phpMan.php/man/EVPMAC/3/json"
            }
        ],
        "section_outline": [
            {
                "name": "NAME",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "DESCRIPTION",
                "lines": 79,
                "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-mac - The MAC algorithm life-cycle\n",
                "subsections": []
            },
            "DESCRIPTION": {
                "content": "All message authentication codes (MACs) go through a number of stages\nin their life-cycle:\n\nstart\nThis state represents the MAC before it has been allocated.  It is\nthe starting state for any life-cycle transitions.\n\nnewed\nThis state represents the MAC after it has been allocated.\n\ninitialised\nThis state represents the MAC when it is set up and capable of\nprocessing input.\n\nupdated\nThis state represents the MAC when it is set up and capable of\nprocessing additional input or generating output.\n\nfinaled\nThis state represents the MAC when it has generated output.\n\nfreed\nThis state is entered when the MAC is freed.  It is the terminal\nstate for all life-cycle transitions.\n\nState Transition Diagram\nThe usual life-cycle of a MAC is illustrated:\n+-------------------+\n|       start       |\n+-------------------+\n|\n| EVPMACCTXnew\nv\n+-------------------+\n|       newed       |\n+-------------------+\n|\n| EVPMACinit\nv\n+-------------------+\n+> |    initialised    | <+\n|  +-------------------+  |\n|    |                    |\n|    | EVPMACupdate     | EVPMACinit\n|    v                    |\nEVPMACinit |  +-------------------+  |\n|  |      updated      | -+\n|  +-------------------+\n|    |               |\n|    | EVPMACfinal | EVPMACfinalXOF\n|    v               v\n|  +-------------------+\n+- |      finaled      |\n+-------------------+\n|\n| EVPMACCTXfree\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    initialised   updated\nfinaled   freed\nEVPMACCTXnew                 newed\nEVPMACinit                         initialised initialised\ninitialised initialised\nEVPMACupdate                                     updated     updated\nEVPMACfinal                                                  finaled\nEVPMACfinalXOF                                               finaled\nEVPMACCTXfree                freed   freed       freed       freed\nfreed\nEVPMACCTXgetparams                  newed    initialised   updated\nEVPMACCTXsetparams                  newed    initialised   updated\nEVPMACCTXgettableparams             newed    initialised   updated\nEVPMACCTXsettableparams             newed    initialised   updated\n",
                "subsections": []
            },
            "NOTES": {
                "content": "At some point the EVP layer will begin enforcing the transitions\ndescribed herein.\n",
                "subsections": []
            },
            "SEE ALSO": {
                "content": "provider-mac(7), EVPMAC(3).\n",
                "subsections": []
            },
            "HISTORY": {
                "content": "The provider MAC 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-MAC(7SSL)",
                "subsections": []
            }
        }
    }
}