1*2175Sjp161948=pod 2*2175Sjp161948 3*2175Sjp161948=head1 NAME 4*2175Sjp161948 5*2175Sjp161948crypto - OpenSSL cryptographic library 6*2175Sjp161948 7*2175Sjp161948=head1 SYNOPSIS 8*2175Sjp161948 9*2175Sjp161948=head1 DESCRIPTION 10*2175Sjp161948 11*2175Sjp161948The OpenSSL B<crypto> library implements a wide range of cryptographic 12*2175Sjp161948algorithms used in various Internet standards. The services provided 13*2175Sjp161948by this library are used by the OpenSSL implementations of SSL, TLS 14*2175Sjp161948and S/MIME, and they have also been used to implement SSH, OpenPGP, and 15*2175Sjp161948other cryptographic standards. 16*2175Sjp161948 17*2175Sjp161948=head1 OVERVIEW 18*2175Sjp161948 19*2175Sjp161948B<libcrypto> consists of a number of sub-libraries that implement the 20*2175Sjp161948individual algorithms. 21*2175Sjp161948 22*2175Sjp161948The functionality includes symmetric encryption, public key 23*2175Sjp161948cryptography and key agreement, certificate handling, cryptographic 24*2175Sjp161948hash functions and a cryptographic pseudo-random number generator. 25*2175Sjp161948 26*2175Sjp161948=over 4 27*2175Sjp161948 28*2175Sjp161948=item SYMMETRIC CIPHERS 29*2175Sjp161948 30*2175Sjp161948L<blowfish(3)|blowfish(3)>, L<cast(3)|cast(3)>, L<des(3)|des(3)>, 31*2175Sjp161948L<idea(3)|idea(3)>, L<rc2(3)|rc2(3)>, L<rc4(3)|rc4(3)>, L<rc5(3)|rc5(3)> 32*2175Sjp161948 33*2175Sjp161948=item PUBLIC KEY CRYPTOGRAPHY AND KEY AGREEMENT 34*2175Sjp161948 35*2175Sjp161948L<dsa(3)|dsa(3)>, L<dh(3)|dh(3)>, L<rsa(3)|rsa(3)> 36*2175Sjp161948 37*2175Sjp161948=item CERTIFICATES 38*2175Sjp161948 39*2175Sjp161948L<x509(3)|x509(3)>, L<x509v3(3)|x509v3(3)> 40*2175Sjp161948 41*2175Sjp161948=item AUTHENTICATION CODES, HASH FUNCTIONS 42*2175Sjp161948 43*2175Sjp161948L<hmac(3)|hmac(3)>, L<md2(3)|md2(3)>, L<md4(3)|md4(3)>, 44*2175Sjp161948L<md5(3)|md5(3)>, L<mdc2(3)|mdc2(3)>, L<ripemd(3)|ripemd(3)>, 45*2175Sjp161948L<sha(3)|sha(3)> 46*2175Sjp161948 47*2175Sjp161948=item AUXILIARY FUNCTIONS 48*2175Sjp161948 49*2175Sjp161948L<err(3)|err(3)>, L<threads(3)|threads(3)>, L<rand(3)|rand(3)>, 50*2175Sjp161948L<OPENSSL_VERSION_NUMBER(3)|OPENSSL_VERSION_NUMBER(3)> 51*2175Sjp161948 52*2175Sjp161948=item INPUT/OUTPUT, DATA ENCODING 53*2175Sjp161948 54*2175Sjp161948L<asn1(3)|asn1(3)>, L<bio(3)|bio(3)>, L<evp(3)|evp(3)>, L<pem(3)|pem(3)>, 55*2175Sjp161948L<pkcs7(3)|pkcs7(3)>, L<pkcs12(3)|pkcs12(3)> 56*2175Sjp161948 57*2175Sjp161948=item INTERNAL FUNCTIONS 58*2175Sjp161948 59*2175Sjp161948L<bn(3)|bn(3)>, L<buffer(3)|buffer(3)>, L<lhash(3)|lhash(3)>, 60*2175Sjp161948L<objects(3)|objects(3)>, L<stack(3)|stack(3)>, 61*2175Sjp161948L<txt_db(3)|txt_db(3)> 62*2175Sjp161948 63*2175Sjp161948=back 64*2175Sjp161948 65*2175Sjp161948=head1 NOTES 66*2175Sjp161948 67*2175Sjp161948Some of the newer functions follow a naming convention using the numbers 68*2175Sjp161948B<0> and B<1>. For example the functions: 69*2175Sjp161948 70*2175Sjp161948 int X509_CRL_add0_revoked(X509_CRL *crl, X509_REVOKED *rev); 71*2175Sjp161948 int X509_add1_trust_object(X509 *x, ASN1_OBJECT *obj); 72*2175Sjp161948 73*2175Sjp161948The B<0> version uses the supplied structure pointer directly 74*2175Sjp161948in the parent and it will be freed up when the parent is freed. 75*2175Sjp161948In the above example B<crl> would be freed but B<rev> would not. 76*2175Sjp161948 77*2175Sjp161948The B<1> function uses a copy of the supplied structure pointer 78*2175Sjp161948(or in some cases increases its link count) in the parent and 79*2175Sjp161948so both (B<x> and B<obj> above) should be freed up. 80*2175Sjp161948 81*2175Sjp161948=head1 SEE ALSO 82*2175Sjp161948 83*2175Sjp161948L<openssl(1)|openssl(1)>, L<ssl(3)|ssl(3)> 84*2175Sjp161948 85*2175Sjp161948=cut 86