xref: /onnv-gate/usr/src/common/openssl/README (revision 2139:6243c3338933)
10Sstevel@tonic-gate
2*2139Sjp161948 OpenSSL 0.9.8a 11 Oct 2005
30Sstevel@tonic-gate
4*2139Sjp161948 Copyright (c) 1998-2005 The OpenSSL Project
50Sstevel@tonic-gate Copyright (c) 1995-1998 Eric A. Young, Tim J. Hudson
60Sstevel@tonic-gate All rights reserved.
70Sstevel@tonic-gate
80Sstevel@tonic-gate DESCRIPTION
90Sstevel@tonic-gate -----------
100Sstevel@tonic-gate
110Sstevel@tonic-gate The OpenSSL Project is a collaborative effort to develop a robust,
120Sstevel@tonic-gate commercial-grade, fully featured, and Open Source toolkit implementing the
130Sstevel@tonic-gate Secure Sockets Layer (SSL v2/v3) and Transport Layer Security (TLS v1)
140Sstevel@tonic-gate protocols as well as a full-strength general purpose cryptography library.
150Sstevel@tonic-gate The project is managed by a worldwide community of volunteers that use the
160Sstevel@tonic-gate Internet to communicate, plan, and develop the OpenSSL toolkit and its
17*2139Sjp161948 related documentation.
180Sstevel@tonic-gate
190Sstevel@tonic-gate OpenSSL is based on the excellent SSLeay library developed from Eric A. Young
200Sstevel@tonic-gate and Tim J. Hudson.  The OpenSSL toolkit is licensed under a dual-license (the
210Sstevel@tonic-gate OpenSSL license plus the SSLeay license) situation, which basically means
220Sstevel@tonic-gate that you are free to get and use it for commercial and non-commercial
23*2139Sjp161948 purposes as long as you fulfill the conditions of both licenses.
240Sstevel@tonic-gate
250Sstevel@tonic-gate OVERVIEW
260Sstevel@tonic-gate --------
270Sstevel@tonic-gate
280Sstevel@tonic-gate The OpenSSL toolkit includes:
290Sstevel@tonic-gate
300Sstevel@tonic-gate libssl.a:
310Sstevel@tonic-gate     Implementation of SSLv2, SSLv3, TLSv1 and the required code to support
320Sstevel@tonic-gate     both SSLv2, SSLv3 and TLSv1 in the one server and client.
330Sstevel@tonic-gate
340Sstevel@tonic-gate libcrypto.a:
350Sstevel@tonic-gate     General encryption and X.509 v1/v3 stuff needed by SSL/TLS but not
360Sstevel@tonic-gate     actually logically part of it. It includes routines for the following:
370Sstevel@tonic-gate
380Sstevel@tonic-gate     Ciphers
390Sstevel@tonic-gate        libdes - EAY's libdes DES encryption package which has been floating
400Sstevel@tonic-gate                 around the net for a few years.  It includes 15
410Sstevel@tonic-gate                 'modes/variations' of DES (1, 2 and 3 key versions of ecb,
420Sstevel@tonic-gate                 cbc, cfb and ofb; pcbc and a more general form of cfb and
430Sstevel@tonic-gate                 ofb) including desx in cbc mode, a fast crypt(3), and
440Sstevel@tonic-gate                 routines to read passwords from the keyboard.
450Sstevel@tonic-gate        RC4 encryption,
460Sstevel@tonic-gate        RC2 encryption      - 4 different modes, ecb, cbc, cfb and ofb.
470Sstevel@tonic-gate        Blowfish encryption - 4 different modes, ecb, cbc, cfb and ofb.
480Sstevel@tonic-gate        IDEA encryption     - 4 different modes, ecb, cbc, cfb and ofb.
490Sstevel@tonic-gate
500Sstevel@tonic-gate     Digests
510Sstevel@tonic-gate        MD5 and MD2 message digest algorithms, fast implementations,
520Sstevel@tonic-gate        SHA (SHA-0) and SHA-1 message digest algorithms,
530Sstevel@tonic-gate        MDC2 message digest. A DES based hash that is popular on smart cards.
540Sstevel@tonic-gate
550Sstevel@tonic-gate     Public Key
56*2139Sjp161948        RSA encryption/decryption/generation.
570Sstevel@tonic-gate            There is no limit on the number of bits.
58*2139Sjp161948        DSA encryption/decryption/generation.
590Sstevel@tonic-gate            There is no limit on the number of bits.
60*2139Sjp161948        Diffie-Hellman key-exchange/key generation.
610Sstevel@tonic-gate            There is no limit on the number of bits.
620Sstevel@tonic-gate
630Sstevel@tonic-gate     X.509v3 certificates
640Sstevel@tonic-gate        X509 encoding/decoding into/from binary ASN1 and a PEM
650Sstevel@tonic-gate             based ASCII-binary encoding which supports encryption with a
660Sstevel@tonic-gate             private key.  Program to generate RSA and DSA certificate
670Sstevel@tonic-gate             requests and to generate RSA and DSA certificates.
680Sstevel@tonic-gate
690Sstevel@tonic-gate     Systems
700Sstevel@tonic-gate        The normal digital envelope routines and base64 encoding.  Higher
710Sstevel@tonic-gate        level access to ciphers and digests by name.  New ciphers can be
720Sstevel@tonic-gate        loaded at run time.  The BIO io system which is a simple non-blocking
730Sstevel@tonic-gate        IO abstraction.  Current methods supported are file descriptors,
740Sstevel@tonic-gate        sockets, socket accept, socket connect, memory buffer, buffering, SSL
750Sstevel@tonic-gate        client/server, file pointer, encryption, digest, non-blocking testing
760Sstevel@tonic-gate        and null.
770Sstevel@tonic-gate
780Sstevel@tonic-gate     Data structures
790Sstevel@tonic-gate        A dynamically growing hashing system
800Sstevel@tonic-gate        A simple stack.
810Sstevel@tonic-gate        A Configuration loader that uses a format similar to MS .ini files.
820Sstevel@tonic-gate
83*2139Sjp161948 openssl:
840Sstevel@tonic-gate     A command line tool that can be used for:
850Sstevel@tonic-gate        Creation of RSA, DH and DSA key parameters
86*2139Sjp161948        Creation of X.509 certificates, CSRs and CRLs
870Sstevel@tonic-gate        Calculation of Message Digests
880Sstevel@tonic-gate        Encryption and Decryption with Ciphers
890Sstevel@tonic-gate        SSL/TLS Client and Server Tests
900Sstevel@tonic-gate        Handling of S/MIME signed or encrypted mail
910Sstevel@tonic-gate
92*2139Sjp161948
930Sstevel@tonic-gate PATENTS
940Sstevel@tonic-gate -------
950Sstevel@tonic-gate
960Sstevel@tonic-gate Various companies hold various patents for various algorithms in various
970Sstevel@tonic-gate locations around the world. _YOU_ are responsible for ensuring that your use
980Sstevel@tonic-gate of any algorithms is legal by checking if there are any patents in your
990Sstevel@tonic-gate country.  The file contains some of the patents that we know about or are
1000Sstevel@tonic-gate rumored to exist. This is not a definitive list.
1010Sstevel@tonic-gate
1020Sstevel@tonic-gate RSA Security holds software patents on the RC5 algorithm.  If you
1030Sstevel@tonic-gate intend to use this cipher, you must contact RSA Security for
1040Sstevel@tonic-gate licensing conditions. Their web page is http://www.rsasecurity.com/.
1050Sstevel@tonic-gate
1060Sstevel@tonic-gate RC4 is a trademark of RSA Security, so use of this label should perhaps
107*2139Sjp161948 only be used with RSA Security's permission.
1080Sstevel@tonic-gate
1090Sstevel@tonic-gate The IDEA algorithm is patented by Ascom in Austria, France, Germany, Italy,
1100Sstevel@tonic-gate Japan, the Netherlands, Spain, Sweden, Switzerland, UK and the USA.  They
1110Sstevel@tonic-gate should be contacted if that algorithm is to be used; their web page is
1120Sstevel@tonic-gate http://www.ascom.ch/.
1130Sstevel@tonic-gate
114*2139Sjp161948 The MDC2 algorithm is patented by IBM.
115*2139Sjp161948
1160Sstevel@tonic-gate INSTALLATION
1170Sstevel@tonic-gate ------------
1180Sstevel@tonic-gate
1190Sstevel@tonic-gate To install this package under a Unix derivative, read the INSTALL file.  For
1200Sstevel@tonic-gate a Win32 platform, read the INSTALL.W32 file.  For OpenVMS systems, read
1210Sstevel@tonic-gate INSTALL.VMS.
1220Sstevel@tonic-gate
1230Sstevel@tonic-gate Read the documentation in the doc/ directory.  It is quite rough, but it
1240Sstevel@tonic-gate lists the functions; you will probably have to look at the code to work out
1250Sstevel@tonic-gate how to use them. Look at the example programs.
1260Sstevel@tonic-gate
1270Sstevel@tonic-gate PROBLEMS
1280Sstevel@tonic-gate --------
1290Sstevel@tonic-gate
1300Sstevel@tonic-gate For some platforms, there are some known problems that may affect the user
1310Sstevel@tonic-gate or application author.  We try to collect those in doc/PROBLEMS, with current
1320Sstevel@tonic-gate thoughts on how they should be solved in a future of OpenSSL.
1330Sstevel@tonic-gate
134*2139Sjp161948 SUPPORT
1350Sstevel@tonic-gate -------
1360Sstevel@tonic-gate
1370Sstevel@tonic-gate If you have any problems with OpenSSL then please take the following steps
1380Sstevel@tonic-gate first:
1390Sstevel@tonic-gate
1400Sstevel@tonic-gate    - Download the current snapshot from ftp://ftp.openssl.org/snapshot/
1410Sstevel@tonic-gate      to see if the problem has already been addressed
1420Sstevel@tonic-gate    - Remove ASM versions of libraries
143*2139Sjp161948    - Remove compiler optimisation flags
1440Sstevel@tonic-gate
1450Sstevel@tonic-gate If you wish to report a bug then please include the following information in
1460Sstevel@tonic-gate any bug report:
1470Sstevel@tonic-gate
1480Sstevel@tonic-gate    - On Unix systems:
1490Sstevel@tonic-gate        Self-test report generated by 'make report'
1500Sstevel@tonic-gate    - On other systems:
1510Sstevel@tonic-gate        OpenSSL version: output of 'openssl version -a'
1520Sstevel@tonic-gate        OS Name, Version, Hardware platform
1530Sstevel@tonic-gate        Compiler Details (name, version)
1540Sstevel@tonic-gate    - Application Details (name, version)
1550Sstevel@tonic-gate    - Problem Description (steps that will reproduce the problem, if known)
1560Sstevel@tonic-gate    - Stack Traceback (if the application dumps core)
1570Sstevel@tonic-gate
1580Sstevel@tonic-gate Report the bug to the OpenSSL project via the Request Tracker
1590Sstevel@tonic-gate (http://www.openssl.org/support/rt2.html) by mail to:
1600Sstevel@tonic-gate
1610Sstevel@tonic-gate    openssl-bugs@openssl.org
1620Sstevel@tonic-gate
1630Sstevel@tonic-gate Note that mail to openssl-bugs@openssl.org is recorded in the publicly
1640Sstevel@tonic-gate readable request tracker database and is forwarded to a public
1650Sstevel@tonic-gate mailing list. Confidential mail may be sent to openssl-security@openssl.org
1660Sstevel@tonic-gate (PGP key available from the key servers).
1670Sstevel@tonic-gate
1680Sstevel@tonic-gate HOW TO CONTRIBUTE TO OpenSSL
1690Sstevel@tonic-gate ----------------------------
1700Sstevel@tonic-gate
1710Sstevel@tonic-gate Development is coordinated on the openssl-dev mailing list (see
1720Sstevel@tonic-gate http://www.openssl.org for information on subscribing). If you
1730Sstevel@tonic-gate would like to submit a patch, send it to openssl-dev@openssl.org with
1740Sstevel@tonic-gate the string "[PATCH]" in the subject. Please be sure to include a
1750Sstevel@tonic-gate textual explanation of what your patch does.
1760Sstevel@tonic-gate
1770Sstevel@tonic-gate Note: For legal reasons, contributions from the US can be accepted only
178*2139Sjp161948 if a TSU notification and a copy of the patch are sent to crypt@bis.doc.gov
179*2139Sjp161948 (formerly BXA) with a copy to the ENC Encryption Request Coordinator;
180*2139Sjp161948 please take some time to look at
181*2139Sjp161948    http://www.bis.doc.gov/Encryption/PubAvailEncSourceCodeNofify.html [sic]
182*2139Sjp161948 and
183*2139Sjp161948    http://w3.access.gpo.gov/bis/ear/pdf/740.pdf (EAR Section 740.13(e))
184*2139Sjp161948 for the details. If "your encryption source code is too large to serve as
185*2139Sjp161948 an email attachment", they are glad to receive it by fax instead; hope you
186*2139Sjp161948 have a cheap long-distance plan.
1870Sstevel@tonic-gate
188*2139Sjp161948 Our preferred format for changes is "diff -u" output. You might
1890Sstevel@tonic-gate generate it like this:
1900Sstevel@tonic-gate
1910Sstevel@tonic-gate # cd openssl-work
1920Sstevel@tonic-gate # [your changes]
1930Sstevel@tonic-gate # ./Configure dist; make clean
1940Sstevel@tonic-gate # cd ..
1950Sstevel@tonic-gate # diff -ur openssl-orig openssl-work > mydiffs.patch
196*2139Sjp161948
197