{
    "content": [
        {
            "type": "text",
            "text": "# EVP (info)\n\n## NAME\n\nevp - high-level cryptographic functions\n\n## SYNOPSIS\n\n#include <openssl/evp.h>\n\n## DESCRIPTION\n\nThe EVP library provides a high-level interface to cryptographic\nfunctions.\n\n## Sections\n\n- **NAME**\n- **SYNOPSIS**\n- **DESCRIPTION**\n- **SEE ALSO**\n- **COPYRIGHT**\n\nUse structuredContent.sections for detailed options, examples, and full documentation.\n"
        }
    ],
    "structuredContent": {
        "command": "EVP",
        "section": "",
        "mode": "info",
        "summary": "evp - high-level cryptographic functions",
        "synopsis": "#include <openssl/evp.h>",
        "tldr_summary": null,
        "tldr_examples": [],
        "tldr_source": null,
        "flags": [],
        "examples": [],
        "see_also": [
            {
                "name": "EVPDigestInit",
                "section": "3",
                "url": "https://www.chedong.com/phpMan.php/man/EVPDigestInit/3/json"
            },
            {
                "name": "EVPEncryptInit",
                "section": "3",
                "url": "https://www.chedong.com/phpMan.php/man/EVPEncryptInit/3/json"
            },
            {
                "name": "EVPOpenInit",
                "section": "3",
                "url": "https://www.chedong.com/phpMan.php/man/EVPOpenInit/3/json"
            },
            {
                "name": "EVPSealInit",
                "section": "3",
                "url": "https://www.chedong.com/phpMan.php/man/EVPSealInit/3/json"
            },
            {
                "name": "EVPDigestSignInit",
                "section": "3",
                "url": "https://www.chedong.com/phpMan.php/man/EVPDigestSignInit/3/json"
            },
            {
                "name": "EVPSignInit",
                "section": "3",
                "url": "https://www.chedong.com/phpMan.php/man/EVPSignInit/3/json"
            },
            {
                "name": "EVPVerifyInit",
                "section": "3",
                "url": "https://www.chedong.com/phpMan.php/man/EVPVerifyInit/3/json"
            },
            {
                "name": "EVPEncodeInit",
                "section": "3",
                "url": "https://www.chedong.com/phpMan.php/man/EVPEncodeInit/3/json"
            },
            {
                "name": "EVPPKEYnew",
                "section": "3",
                "url": "https://www.chedong.com/phpMan.php/man/EVPPKEYnew/3/json"
            },
            {
                "name": "EVPPKEYfromdata",
                "section": "3",
                "url": "https://www.chedong.com/phpMan.php/man/EVPPKEYfromdata/3/json"
            },
            {
                "name": "EVPPKEYtodata",
                "section": "3",
                "url": "https://www.chedong.com/phpMan.php/man/EVPPKEYtodata/3/json"
            },
            {
                "name": "EVPPKEYkeygen",
                "section": "3",
                "url": "https://www.chedong.com/phpMan.php/man/EVPPKEYkeygen/3/json"
            },
            {
                "name": "EVPPKEYprintprivate",
                "section": "3",
                "url": "https://www.chedong.com/phpMan.php/man/EVPPKEYprintprivate/3/json"
            },
            {
                "name": "EVPPKEYdecrypt",
                "section": "3",
                "url": "https://www.chedong.com/phpMan.php/man/EVPPKEYdecrypt/3/json"
            },
            {
                "name": "EVPPKEYencrypt",
                "section": "3",
                "url": "https://www.chedong.com/phpMan.php/man/EVPPKEYencrypt/3/json"
            },
            {
                "name": "EVPPKEYsign",
                "section": "3",
                "url": "https://www.chedong.com/phpMan.php/man/EVPPKEYsign/3/json"
            },
            {
                "name": "EVPPKEYverify",
                "section": "3",
                "url": "https://www.chedong.com/phpMan.php/man/EVPPKEYverify/3/json"
            },
            {
                "name": "EVPPKEYverifyrecover",
                "section": "3",
                "url": "https://www.chedong.com/phpMan.php/man/EVPPKEYverifyrecover/3/json"
            },
            {
                "name": "EVPPKEYderive",
                "section": "3",
                "url": "https://www.chedong.com/phpMan.php/man/EVPPKEYderive/3/json"
            },
            {
                "name": "EVPBytesToKey",
                "section": "3",
                "url": "https://www.chedong.com/phpMan.php/man/EVPBytesToKey/3/json"
            },
            {
                "name": "ENGINEbyid",
                "section": "3",
                "url": "https://www.chedong.com/phpMan.php/man/ENGINEbyid/3/json"
            }
        ],
        "section_outline": [
            {
                "name": "NAME",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "SYNOPSIS",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "DESCRIPTION",
                "lines": 61,
                "subsections": []
            },
            {
                "name": "SEE ALSO",
                "lines": 8,
                "subsections": []
            },
            {
                "name": "COPYRIGHT",
                "lines": 8,
                "subsections": []
            }
        ],
        "sections": {
            "NAME": {
                "content": "evp - high-level cryptographic functions\n",
                "subsections": []
            },
            "SYNOPSIS": {
                "content": "#include <openssl/evp.h>\n",
                "subsections": []
            },
            "DESCRIPTION": {
                "content": "The EVP library provides a high-level interface to cryptographic\nfunctions.\n\nThe EVPSealXXX and EVPOpenXXX functions provide public key encryption\nand decryption to implement digital \"envelopes\".\n\nThe EVPDigestSignXXX and EVPDigestVerifyXXX functions implement\ndigital signatures and Message Authentication Codes (MACs). Also see\nthe older EVPSignXXX and EVPVerifyXXX functions.\n\nSymmetric encryption is available with the EVPEncryptXXX functions.\nThe EVPDigestXXX functions provide message digests.\n\nThe EVPPKEYXXX functions provide a high-level interface to asymmetric\nalgorithms. To create a new EVPPKEY see EVPPKEYnew(3). EVPPKEYs can\nbe associated with a private key of a particular algorithm by using the\nfunctions described on the EVPPKEYfromdata(3) page, or new keys can\nbe generated using EVPPKEYkeygen(3).  EVPPKEYs can be compared using\nEVPPKEYeq(3), or printed using EVPPKEYprintprivate(3).\nEVPPKEYtodata(3) can be used to convert a key back into an\nOSSLPARAM(3) array.\n\nThe EVPPKEY functions support the full range of asymmetric algorithm\noperations:\n\nFor key agreement see EVPPKEYderive(3)\nFor signing and verifying see EVPPKEYsign(3), EVPPKEYverify(3) and\nEVPPKEYverifyrecover(3). However, note that these functions do not\nperform a digest of the data to be signed. Therefore, normally you\nwould use the EVPDigestSignInit(3) functions for this purpose.\nFor encryption and decryption see EVPPKEYencrypt(3) and\nEVPPKEYdecrypt(3) respectively. However, note that these functions\nperform encryption and decryption only. As public key encryption is an\nexpensive operation, normally you would wrap an encrypted message in a\n\"digital envelope\" using the EVPSealInit(3) and EVPOpenInit(3)\nfunctions.\n\nThe EVPBytesToKey(3) function provides some limited support for\npassword based encryption. Careful selection of the parameters will\nprovide a PKCS#5 PBKDF1 compatible implementation. However, new\napplications should not typically use this (preferring, for example,\nPBKDF2 from PCKS#5).\n\nThe EVPEncodeXXX and EVPDecodeXXX functions implement base 64\nencoding and decoding.\n\nAll the symmetric algorithms (ciphers), digests and asymmetric\nalgorithms (public key algorithms) can be replaced by ENGINE modules\nproviding alternative implementations. If ENGINE implementations of\nciphers or digests are registered as defaults, then the various EVP\nfunctions will automatically use those implementations automatically in\npreference to built in software implementations. For more information,\nconsult the engine(3) man page.\n\nAlthough low-level algorithm specific functions exist for many\nalgorithms their use is discouraged. They cannot be used with an ENGINE\nand ENGINE versions of new algorithms cannot be accessed using the low-\nlevel functions.  Also makes code harder to adapt to new algorithms and\nsome options are not cleanly supported at the low-level and some\noperations are more efficient using the high-level interface.\n",
                "subsections": []
            },
            "SEE ALSO": {
                "content": "EVPDigestInit(3), EVPEncryptInit(3), EVPOpenInit(3),\nEVPSealInit(3), EVPDigestSignInit(3), EVPSignInit(3),\nEVPVerifyInit(3), EVPEncodeInit(3), EVPPKEYnew(3),\nEVPPKEYfromdata(3), EVPPKEYtodata(3), EVPPKEYkeygen(3),\nEVPPKEYprintprivate(3), EVPPKEYdecrypt(3), EVPPKEYencrypt(3),\nEVPPKEYsign(3), EVPPKEYverify(3), EVPPKEYverifyrecover(3),\nEVPPKEYderive(3), EVPBytesToKey(3), ENGINEbyid(3)\n",
                "subsections": []
            },
            "COPYRIGHT": {
                "content": "Copyright 2000-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                         EVP(7SSL)",
                "subsections": []
            }
        }
    }
}