EVP(3)

πŸ“¦ version 4.4.0, in alpine 3.24, arch rolling

πŸ’– NAME πŸ’–

okay so bestie, this is the EVP(3) manual page for EVP β€” high-level cryptographic functions from the libcrypto library. It’s giving β€œone wrapper to rule them all,” and honestly? iconic. πŸ’…

✨ SYNOPSIS ✨

the synopsis is literally this:

library β€œlibcrypto” #include <openssl/evp.h>

🌸 DESCRIPTION 🌸

The EVP library provides a high-level interface to cryptographic functions. The abbreviation β€œEVP” is intended to mean β€œEnVeloPe” in the sense of β€œwrapper library”. Important vibe check: it is not related to the technical meaning of the term β€œenvelope” in contexts like CMS_encrypt(3), EVP_SealInit(3), PKCS7_encrypt(3), or SMIME_write_PKCS7(3). πŸ’€

EVP_SealInit(3) and EVP_OpenInit(3) provide public key encryption and decryption to implement digital "envelopes". πŸŽ€

The EVP_DigestSignInit(3) and EVP_DigestVerifyInit(3) functions implement digital signatures and Message Authentication Codes (MACs). Also see the older EVP_SignInit(3) and EVP_VerifyInit(3) functions. πŸ‘‘

Symmetric encryption is available with the EVP_EncryptInit(3) functions. The EVP_DigestInit(3) functions provide message digests. ✨

Authenticated encryption with additional data (AEAD) is available with the EVP_AEAD_CTX_init(3) functions. πŸ¦‹

The EVP_PKEY_*() functions provide a high-level interface to asymmetric algorithms. To create a new EVP_PKEY, see EVP_PKEY_new(3). EVP_PKEYs can be associated with a private key of a particular algorithm by using the functions described in the EVP_PKEY_set1_RSA(3) page, or new keys can be generated using EVP_PKEY_keygen(3). EVP_PKEYs can be compared using EVP_PKEY_cmp(3) or printed using EVP_PKEY_print_private(3). πŸ’œ

The EVP_PKEY_*() functions support the full range of asymmetric algorithm operations:

The EVP_BytesToKey(3) function provides some limited support for password based encryption. Careful selection of the parameters will provide a PKCS#5 PBKDF1 compatible implementation. However, new applications should typically not use this (preferring, for example, PBKDF2 from PCKS#5). 🫢

The EVP_EncodeInit(3) family of functions provides base64 encoding and decoding. πŸŽ€

🌈 SEE ALSO 🌈

bestie, the link-up list is long and iconic β€” go read:


signing off with Debian energy, dated June 11, 2025, on the EVP(3) page β€” slay and stay cryptographic πŸ’œπŸ«Ά

πŸ“¦ where this page comes from