Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
EVP(3)		       FreeBSD Library Functions Manual			EVP(3)

     evp -- high level cryptographic functions

     #include <openssl/evp.h>

     The EVP library provides a	high level interface to	cryptographic func-

     EVP_SealInit(3) and EVP_OpenInit(3) provide public	key encryption and de-
     cryption 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

     +o	 For key agreement, see	EVP_PKEY_derive(3).

     +o	 For signing and verifying, see	EVP_PKEY_sign(3), EVP_PKEY_verify(3),
	 and EVP_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 the EVP_DigestSignInit(3) functions for this purpose.

     +o	 For encryption	and decryption see EVP_PKEY_encrypt(3) and
	 EVP_PKEY_decrypt(3), respectively.  However, note that	these func-
	 tions perform encryption and decryption only.	As public key encryp-
	 tion is an expensive operation, normally you would wrap an encrypted
	 message in a digital envelope using the EVP_SealInit(3) and
	 EVP_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

     The EVP_EncodeInit(3) family of functions provides	base64 encoding	and

     All the symmetric algorithms (ciphers), digests and asymmetric algorithms
     (public key algorithms) can be replaced by	ENGINE modules providing al-
     ternative implementations;	see ENGINE_register_RSA(3) and the related
     manual pages for more information.	 If ENGINE implementations of ciphers
     or	digests	are registered as defaults, then the various EVP functions
     will automatically	use those implementations in preference	to built in
     software implementations.

     Although low level	algorithm specific functions exist for many algo-
     rithms, their use is discouraged.	They cannot be used with an ENGINE,
     and ENGINE	versions of new	algorithms cannot be accessed using the	low
     level functions.  Using them also makes code harder to adapt to new algo-
     rithms, some options are not cleanly supported at the low level, and some
     operations	are more efficient using the high level	interfaces.

     crypto(3),	ENGINE_register_RSA(3),	EVP_AEAD_CTX_init(3),
     EVP_aes_128_cbc(3), EVP_BytesToKey(3), EVP_camellia_128_cbc(3),
     EVP_des_cbc(3), EVP_DigestInit(3),	EVP_DigestSignInit(3),
     EVP_EncodeInit(3),	EVP_EncryptInit(3), EVP_OpenInit(3),
     EVP_PKEY_decrypt(3), EVP_PKEY_derive(3), EVP_PKEY_encrypt(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_verify(3),
     EVP_PKEY_verify_recover(3), EVP_rc4(3), EVP_SealInit(3), EVP_SignInit(3),
     EVP_sm3(3), EVP_sm4_cbc(3), EVP_VerifyInit(3), EVP_whirlpool(3)

FreeBSD	13.0			August 25, 2019			  FreeBSD 13.0


Want to link to this manual page? Use this URL:

home | help