=pod

=head1 NAME

evp - high-level cryptographic functions

=head1 SYNOPSIS

 #include <openssl/evp.h>

=head1 DESCRIPTION

The EVP library provides a high-level interface to cryptographic
functions.

B<EVP_Seal>I<...> and B<EVP_Open>I<...> provide public key encryption
and decryption to implement digital "envelopes".

The B<EVP_Sign>I<...> and B<EVP_Verify>I<...> functions implement
digital signatures.

Symmetric encryption is available with the B<EVP_Encrypt>I<...>
functions.  The B<EVP_Digest>I<...> functions provide message digests.

Algorithms are loaded with OpenSSL_add_all_algorithms(3).

All the symmetric algorithms (ciphers) and digests can be replaced by ENGINE
modules providing alternative implementations. If ENGINE implementations of
ciphers or digests are registered as defaults, then the various EVP functions
will automatically use those implementations automatically in preference to
built in software implementations. For more information, consult the engine(3)
man page.

=head1 SEE ALSO

L<EVP_DigestInit(3)|EVP_DigestInit(3)>,
L<EVP_EncryptInit(3)|EVP_EncryptInit(3)>,
L<EVP_OpenInit(3)|EVP_OpenInit(3)>,
L<EVP_SealInit(3)|EVP_SealInit(3)>,
L<EVP_SignInit(3)|EVP_SignInit(3)>,
L<EVP_VerifyInit(3)|EVP_VerifyInit(3)>,
L<OpenSSL_add_all_algorithms(3)|OpenSSL_add_all_algorithms(3)>,
L<engine(3)|engine(3)>

=cut
