{
    "content": [
        {
            "type": "text",
            "text": "# EVP_KDF-TLS13_KDF (man)\n\n## NAME\n\nEVPKDF-TLS13KDF - The TLS 1.3 EVPKDF implementation\n\n## DESCRIPTION\n\nSupport for computing the TLS 1.3 version of the HKDF KDF through the EVPKDF API.\n\n## Sections\n\n- **NAME**\n- **DESCRIPTION** (2 subsections)\n- **NOTES**\n- **CONFORMING TO**\n- **SEE ALSO**\n- **HISTORY**\n- **COPYRIGHT**\n\nUse structuredContent.sections for detailed options, examples, and full documentation.\n"
        }
    ],
    "structuredContent": {
        "command": "EVP_KDF-TLS13_KDF",
        "section": "",
        "mode": "man",
        "summary": "EVPKDF-TLS13KDF - The TLS 1.3 EVPKDF implementation",
        "synopsis": null,
        "tldr_summary": null,
        "tldr_examples": [],
        "tldr_source": null,
        "flags": [],
        "examples": [],
        "see_also": [
            {
                "name": "EVPKDF",
                "section": "3",
                "url": "https://www.chedong.com/phpMan.php/man/EVPKDF/3/json"
            },
            {
                "name": "EVPKDFCTXnew",
                "section": "3",
                "url": "https://www.chedong.com/phpMan.php/man/EVPKDFCTXnew/3/json"
            },
            {
                "name": "EVPKDFCTXfree",
                "section": "3",
                "url": "https://www.chedong.com/phpMan.php/man/EVPKDFCTXfree/3/json"
            },
            {
                "name": "EVPKDFCTXgetkdfsize",
                "section": "3",
                "url": "https://www.chedong.com/phpMan.php/man/EVPKDFCTXgetkdfsize/3/json"
            },
            {
                "name": "EVPKDFCTXsetparams",
                "section": "3",
                "url": "https://www.chedong.com/phpMan.php/man/EVPKDFCTXsetparams/3/json"
            },
            {
                "name": "EVPKDFderive",
                "section": "3",
                "url": "https://www.chedong.com/phpMan.php/man/EVPKDFderive/3/json"
            },
            {
                "name": "EVPKDF",
                "section": "3",
                "url": "https://www.chedong.com/phpMan.php/man/EVPKDF/3/json"
            },
            {
                "name": "EVPKDF-HKDF",
                "section": "7",
                "url": "https://www.chedong.com/phpMan.php/man/EVPKDF-HKDF/7/json"
            }
        ],
        "section_outline": [
            {
                "name": "NAME",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "DESCRIPTION",
                "lines": 5,
                "subsections": [
                    {
                        "name": "Identity",
                        "lines": 3
                    },
                    {
                        "name": "Supported parameters",
                        "lines": 42
                    }
                ]
            },
            {
                "name": "NOTES",
                "lines": 18,
                "subsections": []
            },
            {
                "name": "CONFORMING TO",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "SEE ALSO",
                "lines": 3,
                "subsections": []
            },
            {
                "name": "HISTORY",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "COPYRIGHT",
                "lines": 7,
                "subsections": []
            }
        ],
        "sections": {
            "NAME": {
                "content": "EVPKDF-TLS13KDF - The TLS 1.3 EVPKDF implementation\n",
                "subsections": []
            },
            "DESCRIPTION": {
                "content": "Support for computing the TLS 1.3 version of the HKDF KDF through the EVPKDF API.\n\nThe EVPKDF-TLS13KDF algorithm implements the HKDF key derivation function as used by TLS\n1.3.\n",
                "subsections": [
                    {
                        "name": "Identity",
                        "content": "\"TLS13-KDF\" is the name for this implementation; it can be used with the EVPKDFfetch()\nfunction.\n"
                    },
                    {
                        "name": "Supported parameters",
                        "content": "The supported parameters are:\n\n\"properties\" (OSSLKDFPARAMPROPERTIES) <UTF8 string>\n\"digest\" (OSSLKDFPARAMDIGEST) <UTF8 string>\n\"key\" (OSSLKDFPARAMKEY) <octet string>\n\"salt\" (OSSLKDFPARAMSALT) <octet string>\nThese parameters work as described in \"PARAMETERS\" in EVPKDF(3).\n\n\"prefix\" (OSSLKDFPARAMPREFIX) <octet string>\nThis  parameter  sets the label prefix on the specified TLS 1.3 KDF context.  For TLS 1.3\nthis should be set to the ASCII string \"tls13 \" without a trailing zero byte.   Refer  to\nRFC 8446 section 7.1 \"Key Schedule\" for details.\n\n\"label\" (OSSLKDFPARAMLABEL) <octet string>\nThis  parameter  sets  the label on the specified TLS 1.3 KDF context.  Refer to RFC 8446\nsection 7.1 \"Key Schedule\" for details.\n\n\"data\" (OSSLKDFPARAMDATA) <octet string>\nThis parameter sets the context data on the specified TLS 1.3 KDF context.  Refer to  RFC\n8446 section 7.1 \"Key Schedule\" for details.\n\n\"mode\" (OSSLKDFPARAMMODE) <UTF8 string> or <integer>\nThis parameter sets the mode for the TLS 1.3 KDF operation.  There are two modes that are\ncurrently defined:\n\n\"EXTRACTONLY\" or EVPKDFHKDFMODEEXTRACTONLY\nIn  this  mode calling EVPKDFderive(3) will just perform the extract operation. The\nvalue returned will be the intermediate fixed-length pseudorandom key K.  The  keylen\nparameter   must   match   the  size  of  K,  which  can  be  looked  up  by  calling\nEVPKDFCTXgetkdfsize() after setting the mode and digest.\n\nThe digest, key and salt values must be set before a  key  is  derived  otherwise  an\nerror will occur.\n\n\"EXPANDONLY\" or EVPKDFHKDFMODEEXPANDONLY\nIn  this  mode  calling EVPKDFderive(3) will just perform the expand operation. The\ninput key should be set to the intermediate fixed-length pseudorandom key K  returned\nfrom a previous extract operation.\n\nThe  digest,  key  and  info  values must be set before a key is derived otherwise an\nerror will occur.\n"
                    }
                ]
            },
            "NOTES": {
                "content": "This KDF is intended for use by the TLS 1.3 implementation in libssl.  It  does  not  support\nall the options and capabilities that HKDF does.\n\nThe  OSSLPARAM  array  passed to EVPKDFderive(3) or EVPKDFCTXsetparams(3) must specify\nall of the parameters required.  This KDF does not support a piecemeal approach to  providing\nthese.\n\nA context for a TLS 1.3 KDF can be obtained by calling:\n\nEVPKDF *kdf = EVPKDFfetch(NULL, \"TLS13-KDF\", NULL);\nEVPKDFCTX *kctx = EVPKDFCTXnew(kdf);\n\nThe  output length of a TLS 1.3 KDF expand operation is specified via the keylen parameter to\nthe  EVPKDFderive(3)  function.   When  using  EVPKDFHKDFMODEEXTRACTONLY  the   keylen\nparameter  must equal the size of the intermediate fixed-length pseudorandom key otherwise an\nerror will occur.  For that mode,  the  fixed  output  size  can  be  looked  up  by  calling\nEVPKDFCTXgetkdfsize() after setting the mode and digest on the EVPKDFCTX.\n",
                "subsections": []
            },
            "CONFORMING TO": {
                "content": "RFC 8446\n",
                "subsections": []
            },
            "SEE ALSO": {
                "content": "EVPKDF(3),     EVPKDFCTXnew(3),     EVPKDFCTXfree(3),     EVPKDFCTXgetkdfsize(3),\nEVPKDFCTXsetparams(3), EVPKDFderive(3), \"PARAMETERS\" in EVPKDF(3), EVPKDF-HKDF(7)\n",
                "subsections": []
            },
            "HISTORY": {
                "content": "This functionality was added 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\n3.0.13                                       2026-07-29                      EVPKDF-TLS13KDF(7SSL)",
                "subsections": []
            }
        }
    }
}