EVP(3)
π 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:
- For key agreement, see
EVP_PKEY_derive(3). π€ - For signing and verifying, see
EVP_PKEY_sign(3),EVP_PKEY_verify(3), andEVP_PKEY_verify_recover(3). However, note that these functions do not perform a digest of the data to be signed. Therefore, normally you would use theEVP_DigestSignInit(3)functions for this purpose. π - For encryption and decryption see
EVP_PKEY_encrypt(3)andEVP_PKEY_decrypt(3), respectively. However, note that these functions perform encryption and decryption only. As public key encryption is an expensive operation, normally you would wrap an encrypted message in a digital envelope using theEVP_SealInit(3)andEVP_OpenInit(3)functions. πΈ
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:
ASN1_item_digest(3),ASN1_item_sign(3),BIO_f_cipher(3),BIO_f_md(3),CMAC_Init(3),CMS_encrypt(3),CMS_sign(3),crypto(3),d2i_PKCS8PrivateKey_bio(3),d2i_PrivateKey(3),EVP_AEAD_CTX_init(3),EVP_aes_128_cbc(3),EVP_BytesToKey(3),EVP_camellia_128_cbc(3),EVP_chacha20(3),EVP_CIPHER_CTX_ctrl(3),EVP_CIPHER_CTX_get_cipher_data(3),EVP_CIPHER_CTX_init(3),EVP_CIPHER_CTX_set_flags(3),EVP_CIPHER_do_all(3),EVP_CIPHER_meth_new(3),EVP_CIPHER_nid(3),EVP_des_cbc(3),EVP_DigestInit(3),EVP_DigestSignInit(3),EVP_DigestVerifyInit(3),EVP_EncodeInit(3),EVP_EncryptInit(3),EVP_MD_CTX_ctrl(3),EVP_MD_nid(3),EVP_OpenInit(3),EVP_PKCS82PKEY(3),EVP_PKEY_asn1_get_count(3),EVP_PKEY_cmp(3),EVP_PKEY_CTX_ctrl(3),EVP_PKEY_CTX_get_operation(3),EVP_PKEY_CTX_new(3),EVP_PKEY_CTX_set_hkdf_md(3),EVP_PKEY_decrypt(3),EVP_PKEY_derive(3),EVP_PKEY_encrypt(3),EVP_PKEY_get_default_digest_nid(3),EVP_PKEY_keygen(3),EVP_PKEY_new(3),EVP_PKEY_print_private(3),EVP_PKEY_set1_RSA(3),EVP_PKEY_sign(3),EVP_PKEY_size(3),EVP_PKEY_verify(3),EVP_PKEY_verify_recover(3),EVP_rc4(3),EVP_SealInit(3),EVP_sha1(3),EVP_sha3_224(3),EVP_SignInit(3),EVP_sm3(3),EVP_sm4_cbc(3),EVP_VerifyInit(3),HMAC(3),OCSP_basic_sign(3),OCSP_request_sign(3),PEM_get_EVP_CIPHER_INFO(3),PEM_read_bio_PrivateKey(3),PKCS12_create(3),PKCS5_PBKDF2_HMAC(3),PKCS7_encrypt(3),PKCS7_sign(3),RSA_pkey_ctx_ctrl(3),SSL_CTX_set_tlsext_ticket_key_cb(3),X509_ALGOR_set0(3),X509_check_private_key(3),X509_digest(3),X509_get_pubkey(3),X509_PUBKEY_set(3),X509_sign(3),X509_to_X509_REQ(3). π«Ά
signing off with Debian energy, dated June 11, 2025, on the EVP(3) page β slay and stay cryptographic ππ«Ά
π¦ where this page comes from
- alpine 3.24: libressl-doc 4.3.1-r0 Β· custom
- arch rolling: libressl 4.4.0-1 Β· ISC AND custom:OpenSSL
- Copyright (c) 2000, 2002, 2006, 2013, 2016 The OpenSSL Project
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms