The OpenSSL 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.
OVERVIEW
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.
Some of the newer functions follow a naming convention using the numbers
0 and 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 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 crl would be freed but rev would not.
The 1 function uses a copy of the supplied structure pointer
(or in some cases increases its link count) in the parent and
so both (x and obj above) should be freed up.