=pod

=head1 NAME

crypto - OpenSSL cryptographic library

=head1 SYNOPSIS

=head1 DESCRIPTION

The OpenSSL B<crypto> library implements a wide range of cryptographic
algorithms used in various Internet standards. The services provided
by this library are used by the OpenSSL implementations of SSL, TLS
and S/MIME, and they have also been used to implement SSH, OpenPGP, and
other cryptographic standards.

=head1 OVERVIEW

B<libcrypto> consists of a number of sub-libraries that implement the
individual algorithms.

The functionality includes symmetric encryption, public key
cryptography and key agreement, certificate handling, cryptographic
hash functions and a cryptographic pseudo-random number generator.

=over 4

=item SYMMETRIC CIPHERS

L<blowfish(3)|blowfish(3)>, L<cast(3)|cast(3)>, L<des(3)|des(3)>,
L<idea(3)|idea(3)>, L<rc2(3)|rc2(3)>, L<rc4(3)|rc4(3)>, L<rc5(3)|rc5(3)> 

=item PUBLIC KEY CRYPTOGRAPHY AND KEY AGREEMENT

L<dsa(3)|dsa(3)>, L<dh(3)|dh(3)>, L<rsa(3)|rsa(3)>

=item CERTIFICATES

L<x509(3)|x509(3)>, L<x509v3(3)|x509v3(3)>

=item AUTHENTICATION CODES, HASH FUNCTIONS

L<hmac(3)|hmac(3)>, L<md2(3)|md2(3)>, L<md4(3)|md4(3)>,
L<md5(3)|md5(3)>, L<mdc2(3)|mdc2(3)>, L<ripemd(3)|ripemd(3)>,
L<sha(3)|sha(3)>

=item AUXILIARY FUNCTIONS

L<err(3)|err(3)>, L<threads(3)|threads(3)>, L<rand(3)|rand(3)>

=item INPUT/OUTPUT, DATA ENCODING

L<asn1(3)|asn1(3)>, L<bio(3)|bio(3)>, L<evp(3)|evp(3)>, L<pem(3)|pem(3)>,
L<pkcs7(3)|pkcs7(3)>, L<pkcs12(3)|pkcs12(3)> 

=item INTERNAL FUNCTIONS

L<bn(3)|bn(3)>, L<buffer(3)|buffer(3)>, L<lhash(3)|lhash(3)>,
L<objects(3)|objects(3)>, L<stack(3)|stack(3)>,
L<txt_db(3)|txt_db(3)> 

=back

=head1 SEE ALSO

L<openssl(1)|openssl(1)>, L<ssl(3)|ssl(3)>

=cut
