config is Unix specific.
[openssl.git] / README
1
2  OpenSSL 0.9.2b 22-Mar-1999
3
4  Copyright (c) 1998-1999 The OpenSSL Project
5  Copyright (c) 1995-1998 Eric A. Young, Tim J. Hudson
6  All rights reserved.
7
8  DESCRIPTION
9  -----------
10
11  The OpenSSL Project is a collaborative effort to develop a robust,
12  commercial-grade, fully featured, and Open Source toolkit implementing the
13  Secure Sockets Layer (SSL v2/v3) and Transport Layer Security (TLS v1)
14  protocols with full-strength cryptography world-wide. The project is managed
15  by a worldwide community of volunteers that use the Internet to communicate,
16  plan, and develop the OpenSSL tookit and its related documentation. 
17
18  OpenSSL is based on the excellent SSLeay library developed from Eric A. Young
19  and Tim J. Hudson.  The OpenSSL toolkit is licensed under a dual-license (the
20  OpenSSL license plus the SSLeay license) situation, which basically means
21  that you are free to get and use it for commercial and non-commercial
22  purposes as long as you fullfill the conditions of both licenses. 
23
24  OVERVIEW
25  --------
26
27  The OpenSSL toolkit includes:
28
29  libssl.a:
30      Implementation of SSLv2, SSLv3, TLSv1 and the required code to support
31      both SSLv2, SSLv3 and TLSv1 in the one server and client.
32
33  libcrypto.a:
34      General encryption and X.509 v1/v3 stuff needed by SSL/TLS but not
35      actually logically part of it. It includes routines for the following:
36
37      Ciphers
38         libdes - EAY's libdes DES encryption package which has been floating
39                  around the net for a few years.  It includes 15
40                  'modes/variations' of DES (1, 2 and 3 key versions of ecb,
41                  cbc, cfb and ofb; pcbc and a more general form of cfb and
42                  ofb) including desx in cbc mode, a fast crypt(3), and
43                  routines to read passwords from the keyboard.
44         RC4 encryption,
45         RC2 encryption      - 4 different modes, ecb, cbc, cfb and ofb.
46         Blowfish encryption - 4 different modes, ecb, cbc, cfb and ofb.
47         IDEA encryption     - 4 different modes, ecb, cbc, cfb and ofb.
48
49      Digests
50         MD5 and MD2 message digest algorithms, fast implementations,
51         SHA (SHA-0) and SHA-1 message digest algorithms,
52         MDC2 message digest. A DES based hash that is polular on smart cards.
53
54      Public Key
55         RSA encryption/decryption/generation.  
56             There is no limit on the number of bits.
57         DSA encryption/decryption/generation.   
58             There is no limit on the number of bits.
59         Diffie-Hellman key-exchange/key generation.  
60             There is no limit on the number of bits.
61
62      X.509v3 certificates
63         X509 encoding/decoding into/from binary ASN1 and a PEM
64              based ascii-binary encoding which supports encryption with a
65              private key.  Program to generate RSA and DSA certificate
66              requests and to generate RSA and DSA certificates.
67
68      Systems
69         The normal digital envelope routines and base64 encoding.  Higher
70         level access to ciphers and digests by name.  New ciphers can be
71         loaded at run time.  The BIO io system which is a simple non-blocking
72         IO abstraction.  Current methods supported are file descriptors,
73         sockets, socket accept, socket connect, memory buffer, buffering, SSL
74         client/server, file pointer, encryption, digest, non-blocking testing
75         and null.
76
77      Data structures
78         A dynamically growing hashing system
79         A simple stack.
80         A Configuration loader that uses a format similar to MS .ini files.
81
82  openssl: 
83      A command line tool which provides the following functions:
84
85      enc     - a general encryption program that can encrypt/decrypt using
86                one of 17 different cipher/mode combinations.  The
87                input/output can also be converted to/from base64
88                ascii encoding.
89      dgst    - a generate message digesting program that will generate
90                message digests for any of md2, md5, sha (sha-0 or sha-1)
91                or mdc2.
92      asn1parse - parse and display the structure of an asn1 encoded
93                binary file.
94      rsa     - Manipulate RSA private keys.
95      dsa     - Manipulate DSA private keys.
96      dh      - Manipulate Diffie-Hellman parameter files.
97      dsaparam- Manipulate and generate DSA parameter files.
98      crl     - Manipulate certificate revocation lists.
99      crt2pkcs7- Generate a pkcs7 object containing a crl and a certificate.
100      x509    - Manipulate x509 certificates, self-sign certificates.
101      req     - Manipulate PKCS#10 certificate requests and also
102                generate certificate requests.
103      genrsa  - Generates an arbitrary sized RSA private key.
104      gendsa  - Generates DSA parameters.
105      gendh   - Generates a set of Diffie-Hellman parameters, the prime
106                will be a strong prime.
107      ca      - Create certificates from PKCS#10 certificate requests.
108                This program also maintains a database of certificates
109                issued.
110      verify  - Check x509 certificate signatures.
111      speed   - Benchmark OpenSSL's ciphers.
112      s_server- A test SSL server.
113      s_client- A test SSL client.
114      s_time  - Benchmark SSL performance of SSL server programs.
115      errstr  - Convert from OpenSSL hex error codes to a readable form.
116      nseq    - Netscape certificate sequence utility
117         
118  PATENTS
119  -------
120
121  Various companies hold various patents for various algorithms in various
122  locations around the world. _YOU_ are responsible for ensuring that your use
123  of any algorithms is legel by checking if there are any patents in your
124  country.  The file contains some of the patents that we know about or are
125  rumoured to exist. This is not a definitive list.
126
127  RSA Data Security holds software patents on the RSA and RC5 algorithms.  If
128  their ciphers are used used inside the USA (and Japan?), you must contact RSA
129  Data Security for licencing conditions. Their web page is
130  http://www.rsa.com/.
131
132  RC4 is a trademark of RSA Data Security, so use of this label should perhaps
133  only be used with RSA Data Security's permission. 
134
135  The IDEA algorithm is patented by Ascom in Austria, France, Germany, Italy,
136  Japan, Netherlands, Spain, Sweden, Switzerland, UK and the USA.  They should
137  be contacted if that algorithm is to be used, their web page is
138  http://www.ascom.ch/.
139
140  INSTALLATION
141  ------------
142
143  To install this package under a Unix derivative, read the INSTALL file.  For
144  a Win32 platform, read the INSTALL.W32 file.
145
146  For people in the USA, it is possible to compile OpenSSL to use RSA Inc.'s
147  public key library, RSAREF, by configuring OpenSSL with the option "rsaref".
148
149  Read the documentation in the doc/ directory.  It is quite rough, but it
150  lists the functions, you will probably have to look at the code to work out
151  how to used them. Look at the example programs.
152
153  SUPPORT 
154  -------
155
156  If you have any problems with OpenSSL then please take the following steps
157  first:
158
159     - Remove ASM versions of libraries
160     - Remove compiler optimisation flags 
161     - Add compiler debug flags (if using gcc then remove -fomit-frame-pointer
162       before you try to debug things)
163
164  If you wish to report a bug then please include the following information in
165  any bug report:
166
167     OpenSSL Details
168     - Version, most of these details can be got from the
169       'openssl version -a' command.
170     Operating System Details
171     - On Unix systems: Output of './config -t'
172     - OS Name, Version
173     - Hardware platform
174     Compiler Details
175     - Name
176     - Version
177     Application Details 
178     - Name 
179     - Version 
180     Problem Description
181     - include steps that will reproduce the problem (if known)
182     Stack Traceback (if the application dumps core)
183
184  Report the bug to the OpenSSL project at:
185
186     openssl-bugs@openssl.org
187
188  HOW TO CONTRIBUTE TO OpenSSL
189  ----------------------------
190
191  Development is coordinated on the openssl-dev mailing list (see
192  http://www.openssl.org for information on subscribing). If you
193  would like to submit a patch, send it to openssl-dev@openssl.org.
194  Please be sure to include a textual explanation of what your patch
195  does.
196
197  The preferred format for changes is "diff -u" output. You might
198  generate it like this:
199
200  # cd openssl-work
201  # [your changes]
202  # ./Configure dist; make clean
203  # cd ..
204  # diff -urN openssl-orig openssl-work > mydiffs.patch