{
    "content": [
        {
            "type": "text",
            "text": "# EVP_MD-SHAKE (man)\n\n## NAME\n\nEVPMD-SHAKE, EVPMD-KECCAK-KMAC - The SHAKE / KECCAK family EVPMD implementations\n\n## DESCRIPTION\n\nSupport for computing SHAKE or KECCAK-KMAC digests through the EVPMD API.\n\n## Sections\n\n- **NAME**\n- **DESCRIPTION** (3 subsections)\n- **SEE ALSO**\n- **COPYRIGHT**\n\nUse structuredContent.sections for detailed options, examples, and full documentation.\n"
        }
    ],
    "structuredContent": {
        "command": "EVP_MD-SHAKE",
        "section": "",
        "mode": "man",
        "summary": "EVPMD-SHAKE, EVPMD-KECCAK-KMAC - The SHAKE / KECCAK family EVPMD implementations",
        "synopsis": null,
        "tldr_summary": null,
        "tldr_examples": [],
        "tldr_source": null,
        "flags": [],
        "examples": [],
        "see_also": [
            {
                "name": "EVPMDCTXsetparams",
                "section": "3",
                "url": "https://www.chedong.com/phpMan.php/man/EVPMDCTXsetparams/3/json"
            },
            {
                "name": "provider-digest",
                "section": "7",
                "url": "https://www.chedong.com/phpMan.php/man/provider-digest/7/json"
            },
            {
                "name": "OSSLPROVIDER-default",
                "section": "7",
                "url": "https://www.chedong.com/phpMan.php/man/OSSLPROVIDER-default/7/json"
            }
        ],
        "section_outline": [
            {
                "name": "NAME",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "DESCRIPTION",
                "lines": 5,
                "subsections": [
                    {
                        "name": "Identities",
                        "lines": 21
                    },
                    {
                        "name": "Gettable Parameters",
                        "lines": 2
                    },
                    {
                        "name": "Settable Context Parameters",
                        "lines": 15
                    }
                ]
            },
            {
                "name": "SEE ALSO",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "COPYRIGHT",
                "lines": 7,
                "subsections": []
            }
        ],
        "sections": {
            "NAME": {
                "content": "EVPMD-SHAKE, EVPMD-KECCAK-KMAC - The SHAKE / KECCAK family EVPMD implementations\n",
                "subsections": []
            },
            "DESCRIPTION": {
                "content": "Support for computing SHAKE or KECCAK-KMAC digests through the EVPMD API.\n\nKECCAK-KMAC is an Extendable Output Function (XOF), with a definition similar to SHAKE, used\nby the KMAC EVPMAC implementation (see EVPMAC-KMAC(7)).\n",
                "subsections": [
                    {
                        "name": "Identities",
                        "content": "This implementation is available in the FIPS provider as well as the default provider, and\nincludes the following varieties:\n\nKECCAK-KMAC-128\nKnown   names   are   \"KECCAK-KMAC-128\"   and   \"KECCAK-KMAC128\".    This   is   used  by\nEVPMAC-KMAC128(7).  Using the notation  from  NIST  FIPS  202  (Section  6.2),  we  have\nKECCAK-KMAC-128(M, d)  =  KECCAK[256](M || 00, d)  (see  the  description  of  KMAC128 in\nAppendix A of NIST SP 800-185).\n\nKECCAK-KMAC-256\nKnown  names   are   \"KECCAK-KMAC-256\"   and   \"KECCAK-KMAC256\".    This   is   used   by\nEVPMAC-KMAC256(7).   Using  the  notation  from  NIST  FIPS  202  (Section 6.2), we have\nKECCAK-KMAC-256(M, d) =  KECCAK[512](M || 00, d)  (see  the  description  of  KMAC256  in\nAppendix A of NIST SP 800-185).\n\nSHAKE-128\nKnown names are \"SHAKE-128\" and \"SHAKE128\".\n\nSHAKE-256\nKnown names are \"SHAKE-256\" and \"SHAKE256\".\n"
                    },
                    {
                        "name": "Gettable Parameters",
                        "content": "This implementation supports the common gettable parameters described in EVPMD-common(7).\n"
                    },
                    {
                        "name": "Settable Context Parameters",
                        "content": "These implementations support the following OSSLPARAM(3) entries, settable for an EVPMDCTX\nwith EVPMDCTXsetparams(3):\n\n\"xoflen\" (OSSLDIGESTPARAMXOFLEN) <unsigned integer>\nSets  the  digest  length  for  extendable  output functions.  The length of the \"xoflen\"\nparameter should not exceed that of a sizet.\n\nFor backwards compatibility reasons the default xoflen length for SHAKE-128 is 16 (bytes)\nwhich results in a security strength of only 64 bits.  To  ensure  the  maximum  security\nstrength of 128 bits, the xoflen should be set to at least 32.\n\nFor backwards compatibility reasons the default xoflen length for SHAKE-256 is 32 (bytes)\nwhich  results  in  a  security strength of only 128 bits. To ensure the maximum security\nstrength of 256 bits, the xoflen should be set to at least 64.\n"
                    }
                ]
            },
            "SEE ALSO": {
                "content": "EVPMDCTXsetparams(3), provider-digest(7), OSSLPROVIDER-default(7)\n",
                "subsections": []
            },
            "COPYRIGHT": {
                "content": "Copyright 2020-2022 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\n3.0.13                                       2026-07-29                           EVPMD-SHAKE(7SSL)",
                "subsections": []
            }
        }
    }
}