{
    "content": [
        {
            "type": "text",
            "text": "# openssl-core.h (man)\n\n## NAME\n\nopenssl/core.h - OpenSSL Core types\n\n## SYNOPSIS\n\n#include <openssl/core.h>\n\n## DESCRIPTION\n\nThe <openssl/core.h> header defines a number of public types that are used to communicate\nbetween the OpenSSL libraries and implementation providers.  These types are designed to\nminimise the need for intimate knowledge of internal structures between the OpenSSL libraries\nand the providers.\n\n## Sections\n\n- **NAME**\n- **SYNOPSIS**\n- **DESCRIPTION**\n- **SEE ALSO**\n- **HISTORY**\n- **COPYRIGHT**\n\nUse structuredContent.sections for detailed options, examples, and full documentation.\n"
        }
    ],
    "structuredContent": {
        "command": "openssl-core.h",
        "section": "",
        "mode": "man",
        "summary": "openssl/core.h - OpenSSL Core types",
        "synopsis": "#include <openssl/core.h>",
        "tldr_summary": null,
        "tldr_examples": [],
        "tldr_source": null,
        "flags": [],
        "examples": [],
        "see_also": [
            {
                "name": "openssl-coredispatch.h",
                "section": "7",
                "url": "https://www.chedong.com/phpMan.php/man/openssl-coredispatch.h/7/json"
            }
        ],
        "section_outline": [
            {
                "name": "NAME",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "SYNOPSIS",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "DESCRIPTION",
                "lines": 76,
                "subsections": []
            },
            {
                "name": "SEE ALSO",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "HISTORY",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "COPYRIGHT",
                "lines": 9,
                "subsections": []
            }
        ],
        "sections": {
            "NAME": {
                "content": "openssl/core.h - OpenSSL Core types\n",
                "subsections": []
            },
            "SYNOPSIS": {
                "content": "#include <openssl/core.h>\n",
                "subsections": []
            },
            "DESCRIPTION": {
                "content": "The <openssl/core.h> header defines a number of public types that are used to communicate\nbetween the OpenSSL libraries and implementation providers.  These types are designed to\nminimise the need for intimate knowledge of internal structures between the OpenSSL libraries\nand the providers.\n\nThe types are:\n\nOSSLDISPATCH\nThis type is a tuple of function identity and function pointer.  Arrays of this type are\npassed between the OpenSSL libraries and the providers to describe what functionality one\nside provides to the other.  Arrays of this type must be terminated with a tuple having\nfunction identity zero and function pointer NULL.\n\nThe available function identities and corresponding function signatures are defined in\nopenssl-coredispatch.h(7).\n\nAny function identity not recognised by the recipient of this type will be ignored.  This\nensures that providers built with one OpenSSL version in mind will work together with any\nother OpenSSL version that supports this mechanism.\n\nOSSLITEM\nThis type is a tuple of integer and pointer.  It's a generic type used as a generic\ndescriptor, its exact meaning being defined by how it's used.  Arrays of this type are\npassed between the OpenSSL libraries and the providers, and must be terminated with a\ntuple where the integer is zero and the pointer NULL.\n\nOSSLALGORITHM\nThis type is a tuple of an algorithm name (string), a property definition (string) and a\ndispatch table (array of OSSLDISPATCH).  Arrays of this type are passed on demand from\nthe providers to the OpenSSL libraries to describe what algorithms the providers provide\nimplementations of, and with what properties.  Arrays of this type must be terminated\nwith a tuple having function identity zero and function pointer NULL.\n\nThe algorithm names and property definitions are defined by the providers.\n\nThe OpenSSL libraries use the first of the algorithm names as the main or canonical name,\non a per algorithm implementation basis.\n\nOSSLPARAM\nThis type is a structure that allows passing arbitrary object data between two parties\nthat have no or very little shared knowledge about their respective internal structures\nfor that object.  It's normally passed in arrays, where the array is terminated with an\nelement where all fields are zero (for non-pointers) or NULL (for pointers).\n\nThese arrays can be used to set parameters for some object, to request parameters, and to\ndescribe parameters.\n\nOSSLPARAM is further described in OSSLPARAM(3)\n\nOSSLCALLBACK\nThis is a function type for a generic feedback callback function:\n\ntypedef int (OSSLCALLBACK)(const OSSLPARAM params[], void *arg);\n\nA function that takes a pointer of this type should also take a pointer to caller data.\nWhen calling this callback, the function is expected to build an OSSLPARAM array of data\nit wants or is expected to pass back, and pass that as params, as well as the caller data\npointer it received, as arg.\n\nOSSLPASSPHRASECALLBACK\nThis is a function type for a generic pass phrase callback function:\n\ntypedef int (OSSLPASSPHRASECALLBACK)(char *pass, sizet passsize,\nsizet *passlen,\nconst OSSLPARAM params[],\nvoid *arg);\n\nThis callback can be used to prompt the user for a passphrase.  When calling it, a buffer\nto store the pass phrase needs to be given with pass, and its size with passsize.  The\nlength of the prompted pass phrase will be given back in *passlen.\n\nAdditional parameters can be passed with the OSSLPARAM array params.\n\nA function that takes a pointer of this type should also take a pointer to caller data,\nwhich should be passed as arg to this callback.\n",
                "subsections": []
            },
            "SEE ALSO": {
                "content": "openssl-coredispatch.h(7)\n",
                "subsections": []
            },
            "HISTORY": {
                "content": "The types described here were added in OpenSSL 3.0.\n",
                "subsections": []
            },
            "COPYRIGHT": {
                "content": "Copyright 2019-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-04-07                         OPENSSL-CORE.H(7SSL)",
                "subsections": []
            }
        }
    }
}