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.