{
    "content": [
        {
            "type": "text",
            "text": "# evp(7) (man)\n\n**Summary:** evp - high-level cryptographic functions\n\n**Synopsis:** #include <openssl/evp.h>\n\n## See Also\n\n- EVPDigestInit(3)\n- EVPEncryptInit(3)\n- EVPOpenInit(3)\n- EVPSealInit(3)\n- EVPDigestSignInit(3)\n- EVPSignInit(3)\n- EVPVerifyInit(3)\n- EVPEncodeInit(3)\n- EVPPKEYnew(3)\n- EVPPKEYfromdata(3)\n- EVPPKEYtodata(3)\n- EVPPKEYkeygen(3)\n- EVPPKEYprintprivate(3)\n- EVPPKEYdecrypt(3)\n- EVPPKEYencrypt(3)\n- EVPPKEYsign(3)\n- EVPPKEYverify(3)\n- EVPPKEYverifyrecover(3)\n- EVPPKEYderive(3)\n- EVPBytesToKey(3)\n- ENGINEbyid(3)\n\n## Section Outline\n\n- **NAME** (2 lines)\n- **SYNOPSIS** (2 lines)\n- **DESCRIPTION** (50 lines)\n- **SEE ALSO** (7 lines)\n- **COPYRIGHT** (9 lines)\n\n## Full Content\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 functions.\n\nThe EVPSealXXX and EVPOpenXXX functions provide public key encryption and decryption to\nimplement digital \"envelopes\".\n\nThe EVPDigestSignXXX and EVPDigestVerifyXXX functions implement digital signatures and\nMessage Authentication Codes (MACs). Also see the older EVPSignXXX and EVPVerifyXXX\nfunctions.\n\nSymmetric encryption is available with the EVPEncryptXXX functions.  The EVPDigestXXX\nfunctions provide message digests.\n\nThe EVPPKEYXXX functions provide a high-level interface to asymmetric algorithms. To create\na new EVPPKEY see EVPPKEYnew(3). EVPPKEYs can be associated with a private key of a\nparticular algorithm by using the functions described on the EVPPKEYfromdata(3) page, or\nnew keys can be generated using EVPPKEYkeygen(3).  EVPPKEYs can be compared using\nEVPPKEYeq(3), or printed using EVPPKEYprintprivate(3). EVPPKEYtodata(3) can be used to\nconvert a key back into an OSSLPARAM(3) array.\n\nThe EVPPKEY functions support the full range of asymmetric algorithm operations:\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 perform a digest of the\ndata to be signed. Therefore, normally you would use the EVPDigestSignInit(3) functions for\nthis purpose.\nFor encryption and decryption see EVPPKEYencrypt(3) and EVPPKEYdecrypt(3) respectively.\nHowever, note that these functions perform encryption and decryption only. As public key\nencryption is an expensive operation, normally you would wrap an encrypted message in a\n\"digital envelope\" using the EVPSealInit(3) and EVPOpenInit(3) functions.\n\nThe EVPBytesToKey(3) function provides some limited support for password based encryption.\nCareful selection of the parameters will provide a PKCS#5 PBKDF1 compatible implementation.\nHowever, new applications should not typically use this (preferring, for example, PBKDF2 from\nPCKS#5).\n\nThe EVPEncodeXXX and EVPDecodeXXX functions implement base 64 encoding and decoding.\n\nAll the symmetric algorithms (ciphers), digests and asymmetric algorithms (public key\nalgorithms) can be replaced by ENGINE modules providing alternative implementations. If\nENGINE implementations of ciphers or digests are registered as defaults, then the various EVP\nfunctions will automatically use those implementations automatically in preference to built\nin software implementations. For more information, consult the engine(3) man page.\n\nAlthough low-level algorithm specific functions exist for many algorithms their use is\ndiscouraged. They cannot be used with an ENGINE and ENGINE versions of new algorithms cannot\nbe accessed using the low-level functions.  Also makes code harder to adapt to new algorithms\nand some options are not cleanly supported at the low-level and some operations are more\nefficient using the high-level interface.\n\n### SEE ALSO\n\nEVPDigestInit(3), EVPEncryptInit(3), EVPOpenInit(3), EVPSealInit(3),\nEVPDigestSignInit(3), EVPSignInit(3), EVPVerifyInit(3), EVPEncodeInit(3),\nEVPPKEYnew(3), EVPPKEYfromdata(3), EVPPKEYtodata(3), EVPPKEYkeygen(3),\nEVPPKEYprintprivate(3), EVPPKEYdecrypt(3), EVPPKEYencrypt(3), EVPPKEYsign(3),\nEVPPKEYverify(3), EVPPKEYverifyrecover(3), EVPPKEYderive(3), EVPBytesToKey(3),\nENGINEbyid(3)\n\n### COPYRIGHT\n\nCopyright 2000-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                                    EVP(7SSL)\n\n"
        }
    ],
    "structuredContent": {
        "command": "evp",
        "section": "7",
        "mode": "man",
        "summary": "evp - high-level cryptographic functions",
        "synopsis": "#include <openssl/evp.h>",
        "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": 50,
                "subsections": []
            },
            {
                "name": "SEE ALSO",
                "lines": 7,
                "subsections": []
            },
            {
                "name": "COPYRIGHT",
                "lines": 9,
                "subsections": []
            }
        ]
    }
}