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