# info > EVP

---
type: CommandReference
command: evp
mode: man
section: 7SSL
source: man-pages
---

## Quick Reference

- `EVP_EncryptInit` — symmetric encryption/decryption
- `EVP_DigestInit` — compute message digests (e.g., SHA-256)
- `EVP_DigestSignInit` / `EVP_DigestVerifyInit` — digital signatures and MACs
- `EVP_SealInit` / `EVP_OpenInit` — public-key encryption envelopes
- `EVP_PKEY_keygen` — generate asymmetric key pairs
- `EVP_PKEY_derive` — key agreement (e.g., Diffie-Hellman)
- `EVP_EncodeInit` / `EVP_DecodeInit` — base64 encoding/decoding
- `EVP_BytesToKey` — password-based key derivation (PBKDF1-compatible)

## Name

EVP library — high-level interface to cryptographic functions.

## Synopsis

c
#include <openssl/evp.h>
## Key Function Families

- **Symmetric encryption** — `EVP_Encrypt*` functions
- **Message digests** — `EVP_Digest*` functions
- **Public-key encryption envelopes** — `EVP_Seal*` and `EVP_Open*` functions
- **Digital signatures and MACs** — `EVP_DigestSign*` and `EVP_DigestVerify*` (also older `EVP_Sign*`, `EVP_Verify*`)
- **Asymmetric operations** — `EVP_PKEY*` functions:
  - Create/manipulate keys: `EVP_PKEY_new`, `EVP_PKEY_fromdata`, `EVP_PKEY_todata`, `EVP_PKEY_keygen`, `EVP_PKEY_eq`, `EVP_PKEY_print_private`
  - Sign/verify: `EVP_PKEY_sign`, `EVP_PKEY_verify`, `EVP_PKEY_verify_recover`
  - Encrypt/decrypt: `EVP_PKEY_encrypt`, `EVP_PKEY_decrypt`
  - Key agreement: `EVP_PKEY_derive`
- **Base64 encoding** — `EVP_Encode*` and `EVP_Decode*` functions
- **Password-based key derivation** — `EVP_BytesToKey` (PKCS#5 PBKDF1 compatible; prefer PBKDF2 for new work)

**Important:** All symmetric ciphers, digests, and asymmetric algorithms can be replaced by ENGINE modules. When ENGINE implementations are registered as defaults, EVP functions automatically use them in preference to built-in software. Low-level algorithm-specific functions are discouraged; they cannot use ENGINE, hinder adaptation to new algorithms, and some operations are less efficient.

## See Also

- `EVP_DigestInit(3)`
- `EVP_EncryptInit(3)`
- `EVP_OpenInit(3)`
- `EVP_SealInit(3)`
- `EVP_DigestSignInit(3)`
- `EVP_SignInit(3)`
- `EVP_VerifyInit(3)`
- `EVP_EncodeInit(3)`
- `EVP_PKEY_new(3)`
- `EVP_PKEY_fromdata(3)`
- `EVP_PKEY_todata(3)`
- `EVP_PKEY_keygen(3)`
- `EVP_PKEY_print_private(3)`
- `EVP_PKEY_decrypt(3)`
- `EVP_PKEY_encrypt(3)`
- `EVP_PKEY_sign(3)`
- `EVP_PKEY_verify(3)`
- `EVP_PKEY_verify_recover(3)`
- `EVP_PKEY_derive(3)`
- `EVP_BytesToKey(3)`
- `ENGINE_by_id(3)`