=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<openssl_blowfish(3)|openssl_blowfish(3)>, L<cast(3)|cast(3)>, L<openssl_des(3)|openssl_des(3)>, L<idea(3)|idea(3)>, L<rc2(3)|rc2(3)>, L<openssl_rc4(3)|openssl_rc4(3)>, L<rc5(3)|rc5(3)> =item PUBLIC KEY CRYPTOGRAPHY AND KEY AGREEMENT L<openssl_dsa(3)|openssl_dsa(3)>, L<openssl_dh(3)|openssl_dh(3)>, L<openssl_rsa(3)|openssl_rsa(3)> =item CERTIFICATES L<openssl_x509(3)|openssl_x509(3)>, L<x509v3(3)|x509v3(3)> =item AUTHENTICATION CODES, HASH FUNCTIONS L<openssl_hmac(3)|openssl_hmac(3)>, L<md2(3)|md2(3)>, L<md4(3)|md4(3)>, L<openssl_md5(3)|openssl_md5(3)>, L<openssl_mdc2(3)|openssl_mdc2(3)>, L<openssl_ripemd(3)|openssl_ripemd(3)>, L<openssl_sha(3)|openssl_sha(3)> =item AUXILIARY FUNCTIONS L<openssl_err(3)|openssl_err(3)>, L<openssl_threads(3)|openssl_threads(3)>, L<openssl_rand(3)|openssl_rand(3)>, L<OPENSSL_VERSION_NUMBER(3)|OPENSSL_VERSION_NUMBER(3)> =item INPUT/OUTPUT, DATA ENCODING L<asn1(3)|asn1(3)>, L<openssl_bio(3)|openssl_bio(3)>, L<openssl_evp(3)|openssl_evp(3)>, L<openssl_pem(3)|openssl_pem(3)>, L<openssl_pkcs7(3)|openssl_pkcs7(3)>, L<openssl_pkcs12(3)|openssl_pkcs12(3)> =item INTERNAL FUNCTIONS L<openssl_bn(3)|openssl_bn(3)>, L<openssl_buffer(3)|openssl_buffer(3)>, L<openssl_lhash(3)|openssl_lhash(3)>, L<objects(3)|objects(3)>, L<stack(3)|stack(3)>, L<txt_db(3)|txt_db(3)> =back =head1 NOTES Some of the newer functions follow a naming convention using the numbers B<0> and B<1>. For example the functions: int X509_CRL_add0_revoked(X509_CRL *crl, X509_REVOKED *rev); int X509_add1_trust_object(X509 *x, ASN1_OBJECT *obj); The B<0> version uses the supplied structure pointer directly in the parent and it will be freed up when the parent is freed. In the above example B<crl> would be freed but B<rev> would not. The B<1> function uses a copy of the supplied structure pointer (or in some cases increases its link count) in the parent and so both (B<x> and B<obj> above) should be freed up. =head1 SEE ALSO L<openssl(1)|openssl(1)>, L<ssl(3)|ssl(3)> =cut