From 99ed6788b27c6bfa26ca3c5b38c4050e6de2eecd Mon Sep 17 00:00:00 2001
From: Paul Bakker
Date: Wed, 5 Jan 2011 14:48:42 +0000
Subject: [PATCH] - Changed line endings and encodings to unix and utf-8
---
ChangeLog | 620 ++++++++++++++++++++++++-------------------------
LICENSE | 678 +++++++++++++++++++++++++++---------------------------
2 files changed, 649 insertions(+), 649 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 240e2fe71..d061dba4a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,310 +1,310 @@
-PolarSSL ChangeLog
-
-= Version 0.14.0 released on 2010-08-16
-Features
- * Added support for SSL_EDH_RSA_AES_128_SHA and
- SSL_EDH_RSA_CAMELLIA_128_SHA ciphersuites
- * Added compile-time and run-time version information
- * Expanded ssl_client2 arguments for more flexibility
- * Added support for TLS v1.1
-
-Changes
- * Made Makefile cleaner
- * Removed dependency on rand() in rsa_pkcs1_encrypt().
- Now using random fuction provided to function and
- changed the prototype of rsa_pkcs1_encrypt(),
- rsa_init() and rsa_gen_key().
- * Some SSL defines were renamed in order to avoid
- future confusion
-
-Bug fixes
- * Fixed CMake out of source build for tests (found by
- kkert)
- * rsa_check_private() now supports PKCS1v2 keys as well
- * Fixed deadlock in rsa_pkcs1_encrypt() on failing random
- generator
-
-= Version 0.13.1 released on 2010-03-24
-Bug fixes
- * Fixed Makefile in library that was mistakenly merged
- * Added missing const string fixes
-
-= Version 0.13.0 released on 2010-03-21
-Features
- * Added option parsing for host and port selection to
- ssl_client2
- * Added support for GeneralizedTime in X509 parsing
- * Added cert_app program to allow easy reading and
- printing of X509 certificates from file or SSL
- connection.
-
-Changes
- * Added const correctness for main code base
- * X509 signature algorithm determination is now
- in a function to allow easy future expansion
- * Changed symmetric cipher functions to
- identical interface (returning int result values)
- * Changed ARC4 to use seperate input/output buffer
- * Added reset function for HMAC context as speed-up
- for specific use-cases
-
-Bug fixes
- * Fixed bug resulting in failure to send the last
- certificate in the chain in ssl_write_certificate() and
- ssl_write_certificate_request() (found by fatbob)
- * Added small fixes for compiler warnings on a Mac
- (found by Frank de Brabander)
- * Fixed algorithmic bug in mpi_is_prime() (found by
- Smbat Tonoyan)
-
-= Version 0.12.1 released on 2009-10-04
-Changes
- * Coverage test definitions now support 'depends_on'
- tagging system.
- * Tests requiring specific hashing algorithms now honor
- the defines.
-
-Bug fixes
- * Changed typo in #ifdef in x509parse.c (found
- by Eduardo)
-
-= Version 0.12.0 released on 2009-07-28
-Features
- * Added CMake makefiles as alternative to regular Makefiles.
- * Added preliminary Code Coverage tests for AES, ARC4,
- Base64, MPI, SHA-family, MD-family, HMAC-SHA-family,
- Camellia, DES, 3-DES, RSA PKCS#1, XTEA, Diffie-Hellman
- and X509parse.
-
-Changes
- * Error codes are not (necessarily) negative. Keep
- this is mind when checking for errors.
- * RSA_RAW renamed to SIG_RSA_RAW for consistency.
- * Fixed typo in name of POLARSSL_ERR_RSA_OUTPUT_TOO_LARGE.
- * Changed interface for AES and Camellia setkey functions
- to indicate invalid key lengths.
-
-Bug fixes
- * Fixed include location of endian.h on FreeBSD (found by
- Gabriel)
- * Fixed include location of endian.h and name clash on
- Apples (found by Martin van Hensbergen)
- * Fixed HMAC-MD2 by modifying md2_starts(), so that the
- required HMAC ipad and opad variables are not cleared.
- (found by code coverage tests)
- * Prevented use of long long in bignum if
- POLARSSL_HAVE_LONGLONG not defined (found by Giles
- Bathgate).
- * Fixed incorrect handling of negative strings in
- mpi_read_string() (found by code coverage tests).
- * Fixed segfault on handling empty rsa_context in
- rsa_check_pubkey() and rsa_check_privkey() (found by
- code coverage tests).
- * Fixed incorrect handling of one single negative input
- value in mpi_add_abs() (found by code coverage tests).
- * Fixed incorrect handling of negative first input
- value in mpi_sub_abs() (found by code coverage tests).
- * Fixed incorrect handling of negative first input
- value in mpi_mod_mpi() and mpi_mod_int(). Resulting
- change also affects mpi_write_string() (found by code
- coverage tests).
- * Corrected is_prime() results for 0, 1 and 2 (found by
- code coverage tests).
- * Fixed Camellia and XTEA for 64-bit Windows systems.
-
-= Version 0.11.1 released on 2009-05-17
- * Fixed missing functionality for SHA-224, SHA-256, SHA384,
- SHA-512 in rsa_pkcs1_sign()
-
-= Version 0.11.0 released on 2009-05-03
- * Fixed a bug in mpi_gcd() so that it also works when both
- input numbers are even and added testcases to check
- (found by Pierre Habouzit).
- * Added support for SHA-224, SHA-256, SHA-384 and SHA-512
- one way hash functions with the PKCS#1 v1.5 signing and
- verification.
- * Fixed minor bug regarding mpi_gcd located within the
- POLARSSL_GENPRIME block.
- * Fixed minor memory leak in x509parse_crt() and added better
- handling of 'full' certificate chains (found by Mathias
- Olsson).
- * Centralized file opening and reading for x509 files into
- load_file()
- * Made definition of net_htons() endian-clean for big endian
- systems (Found by Gernot).
- * Undefining POLARSSL_HAVE_ASM now also handles prevents asm in
- padlock and timing code.
- * Fixed an off-by-one buffer allocation in ssl_set_hostname()
- responsible for crashes and unwanted behaviour.
- * Added support for Certificate Revocation List (CRL) parsing.
- * Added support for CRL revocation to x509parse_verify() and
- SSL/TLS code.
- * Fixed compatibility of XTEA and Camellia on a 64-bit system
- (found by Felix von Leitner).
-
-= Version 0.10.0 released on 2009-01-12
- * Migrated XySSL to PolarSSL
- * Added XTEA symmetric cipher
- * Added Camellia symmetric cipher
- * Added support for ciphersuites: SSL_RSA_CAMELLIA_128_SHA,
- SSL_RSA_CAMELLIA_256_SHA and SSL_EDH_RSA_CAMELLIA_256_SHA
- * Fixed dangerous bug that can cause a heap overflow in
- rsa_pkcs1_decrypt (found by Christophe Devine)
-
-================================================================
-XySSL ChangeLog
-
-= Version 0.9 released on 2008-03-16
-
- * Added support for ciphersuite: SSL_RSA_AES_128_SHA
- * Enabled support for large files by default in aescrypt2.c
- * Preliminary openssl wrapper contributed by David Barrett
- * Fixed a bug in ssl_write() that caused the same payload to
- be sent twice in non-blocking mode when send returns EAGAIN
- * Fixed ssl_parse_client_hello(): session id and challenge must
- not be swapped in the SSLv2 ClientHello (found by Greg Robson)
- * Added user-defined callback debug function (Krystian Kolodziej)
- * Before freeing a certificate, properly zero out all cert. data
- * Fixed the "mode" parameter so that encryption/decryption are
- not swapped on PadLock; also fixed compilation on older versions
- of gcc (bug reported by David Barrett)
- * Correctly handle the case in padlock_xcryptcbc() when input or
- ouput data is non-aligned by falling back to the software
- implementation, as VIA Nehemiah cannot handle non-aligned buffers
- * Fixed a memory leak in x509parse_crt() which was reported by Greg
- Robson-Garth; some x509write.c fixes by Pascal Vizeli, thanks to
- Matthew Page who reported several bugs
- * Fixed x509_get_ext() to accept some rare certificates which have
- an INTEGER instead of a BOOLEAN for BasicConstraints::cA.
- * Added support on the client side for the TLS "hostname" extension
- (patch contributed by David Patino)
- * Make x509parse_verify() return BADCERT_CN_MISMATCH when an empty
- string is passed as the CN (bug reported by spoofy)
- * Added an option to enable/disable the BN assembly code
- * Updated rsa_check_privkey() to verify that (D*E) = 1 % (P-1)*(Q-1)
- * Disabled obsolete hash functions by default (MD2, MD4); updated
- selftest and benchmark to not test ciphers that have been disabled
- * Updated x509parse_cert_info() to correctly display byte 0 of the
- serial number, setup correct server port in the ssl client example
- * Fixed a critical denial-of-service with X.509 cert. verification:
- peer may cause xyssl to loop indefinitely by sending a certificate
- for which the RSA signature check fails (bug reported by Benoit)
- * Added test vectors for: AES-CBC, AES-CFB, DES-CBC and 3DES-CBC,
- HMAC-MD5, HMAC-SHA1, HMAC-SHA-256, HMAC-SHA-384, and HMAC-SHA-512
- * Fixed HMAC-SHA-384 and HMAC-SHA-512 (thanks to Josh Sinykin)
- * Modified ssl_parse_client_key_exchange() to protect against
- Daniel Bleichenbacher attack on PKCS#1 v1.5 padding, as well
- as the Klima-Pokorny-Rosa extension of Bleichenbacher's attack
- * Updated rsa_gen_key() so that ctx->N is always nbits in size
- * Fixed assembly PPC compilation errors on Mac OS X, thanks to
- David Barrett and Dusan Semen
-
-= Version 0.8 released on 2007-10-20
-
- * Modified the HMAC functions to handle keys larger
- than 64 bytes, thanks to Stephane Desneux and gary ng
- * Fixed ssl_read_record() to properly update the handshake
- message digests, which fixes IE6/IE7 client authentication
- * Cleaned up the XYSSL* #defines, suggested by Azriel Fasten
- * Fixed net_recv(), thanks to Lorenz Schori and Egon Kocjan
- * Added user-defined callbacks for handling I/O and sessions
- * Added lots of debugging output in the SSL/TLS functions
- * Added preliminary X.509 cert. writing by Pascal Vizeli
- * Added preliminary support for the VIA PadLock routines
- * Added AES-CFB mode of operation, contributed by chmike
- * Added an SSL/TLS stress testing program (ssl_test.c)
- * Updated the RSA PKCS#1 code to allow choosing between
- RSA_PUBLIC and RSA_PRIVATE, as suggested by David Barrett
- * Updated ssl_read() to skip 0-length records from OpenSSL
- * Fixed the make install target to comply with *BSD make
- * Fixed a bug in mpi_read_binary() on 64-bit platforms
- * mpi_is_prime() speedups, thanks to Kevin McLaughlin
- * Fixed a long standing memory leak in mpi_is_prime()
- * Replaced realloc with malloc in mpi_grow(), and set
- the sign of zero as positive in mpi_init() (reported
- by Jonathan M. McCune)
-
-= Version 0.7 released on 2007-07-07
-
- * Added support for the MicroBlaze soft-core processor
- * Fixed a bug in ssl_tls.c which sometimes prevented SSL
- connections from being established with non-blocking I/O
- * Fixed a couple bugs in the VS6 and UNIX Makefiles
- * Fixed the "PIC register ebx clobbered in asm" bug
- * Added HMAC starts/update/finish support functions
- * Added the SHA-224, SHA-384 and SHA-512 hash functions
- * Fixed the net_set_*block routines, thanks to Andreas
- * Added a few demonstration programs: md5sum, sha1sum,
- dh_client, dh_server, rsa_genkey, rsa_sign, rsa_verify
- * Added new bignum import and export helper functions
- * Rewrote README.txt in program/ssl/ca to better explain
- how to create a test PKI
-
-= Version 0.6 released on 2007-04-01
-
- * Ciphers used in SSL/TLS can now be disabled at compile
- time, to reduce the memory footprint on embedded systems
- * Added multiply assembly code for the TriCore and modified
- havege_struct for this processor, thanks to David Patiño
- * Added multiply assembly code for 64-bit PowerPCs,
- thanks to Peking University and the OSU Open Source Lab
- * Added experimental support of Quantum Cryptography
- * Added support for autoconf, contributed by Arnaud Cornet
- * Fixed "long long" compilation issues on IA-64 and PPC64
- * Fixed a bug introduced in xyssl-0.5/timing.c: hardclock
- was not being correctly defined on ARM and MIPS
-
-= Version 0.5 released on 2007-03-01
-
- * Added multiply assembly code for SPARC and Alpha
- * Added (beta) support for non-blocking I/O operations
- * Implemented session resuming and client authentication
- * Fixed some portability issues on WinCE, MINIX 3, Plan9
- (thanks to Benjamin Newman), HP-UX, FreeBSD and Solaris
- * Improved the performance of the EDH key exchange
- * Fixed a bug that caused valid packets with a payload
- size of 16384 bytes to be rejected
-
-= Version 0.4 released on 2007-02-01
-
- * Added support for Ephemeral Diffie-Hellman key exchange
- * Added multiply asm code for SSE2, ARM, PPC, MIPS and M68K
- * Various improvement to the modular exponentiation code
- * Rewrote the headers to generate the API docs with doxygen
- * Fixed a bug in ssl_encrypt_buf (incorrect padding was
- generated) and in ssl_parse_client_hello (max. client
- version was not properly set), thanks to Didier Rebeix
- * Fixed another bug in ssl_parse_client_hello: clients with
- cipherlists larger than 96 bytes were incorrectly rejected
- * Fixed a couple memory leak in x509_read.c
-
-= Version 0.3 released on 2007-01-01
-
- * Added server-side SSLv3 and TLSv1.0 support
- * Multiple fixes to enhance the compatibility with g++,
- thanks to Xosé Antón Otero Ferreira
- * Fixed a bug in the CBC code, thanks to dowst; also,
- the bignum code is no longer dependant on long long
- * Updated rsa_pkcs1_sign to handle arbitrary large inputs
- * Updated timing.c for improved compatibility with i386
- and 486 processors, thanks to Arnaud Cornet
-
-= Version 0.2 released on 2006-12-01
-
- * Updated timing.c to support ARM and MIPS arch
- * Updated the MPI code to support 8086 on MSVC 1.5
- * Added the copyright notice at the top of havege.h
- * Fixed a bug in sha2_hmac, thanks to newsoft/Wenfang Zhang
- * Fixed a bug reported by Adrian Rüegsegger in x509_read_key
- * Fixed a bug reported by Torsten Lauter in ssl_read_record
- * Fixed a bug in rsa_check_privkey that would wrongly cause
- valid RSA keys to be dismissed (thanks to oldwolf)
- * Fixed a bug in mpi_is_prime that caused some primes to fail
- the Miller-Rabin primality test
-
- I'd also like to thank Younès Hafri for the CRUX linux port,
- Khalil Petit who added XySSL into pkgsrc and Arnaud Cornet
- who maintains the Debian package :-)
-
-= Version 0.1 released on 2006-11-01
-
+PolarSSL ChangeLog
+
+= Version 0.14.0 released on 2010-08-16
+Features
+ * Added support for SSL_EDH_RSA_AES_128_SHA and
+ SSL_EDH_RSA_CAMELLIA_128_SHA ciphersuites
+ * Added compile-time and run-time version information
+ * Expanded ssl_client2 arguments for more flexibility
+ * Added support for TLS v1.1
+
+Changes
+ * Made Makefile cleaner
+ * Removed dependency on rand() in rsa_pkcs1_encrypt().
+ Now using random fuction provided to function and
+ changed the prototype of rsa_pkcs1_encrypt(),
+ rsa_init() and rsa_gen_key().
+ * Some SSL defines were renamed in order to avoid
+ future confusion
+
+Bug fixes
+ * Fixed CMake out of source build for tests (found by
+ kkert)
+ * rsa_check_private() now supports PKCS1v2 keys as well
+ * Fixed deadlock in rsa_pkcs1_encrypt() on failing random
+ generator
+
+= Version 0.13.1 released on 2010-03-24
+Bug fixes
+ * Fixed Makefile in library that was mistakenly merged
+ * Added missing const string fixes
+
+= Version 0.13.0 released on 2010-03-21
+Features
+ * Added option parsing for host and port selection to
+ ssl_client2
+ * Added support for GeneralizedTime in X509 parsing
+ * Added cert_app program to allow easy reading and
+ printing of X509 certificates from file or SSL
+ connection.
+
+Changes
+ * Added const correctness for main code base
+ * X509 signature algorithm determination is now
+ in a function to allow easy future expansion
+ * Changed symmetric cipher functions to
+ identical interface (returning int result values)
+ * Changed ARC4 to use seperate input/output buffer
+ * Added reset function for HMAC context as speed-up
+ for specific use-cases
+
+Bug fixes
+ * Fixed bug resulting in failure to send the last
+ certificate in the chain in ssl_write_certificate() and
+ ssl_write_certificate_request() (found by fatbob)
+ * Added small fixes for compiler warnings on a Mac
+ (found by Frank de Brabander)
+ * Fixed algorithmic bug in mpi_is_prime() (found by
+ Smbat Tonoyan)
+
+= Version 0.12.1 released on 2009-10-04
+Changes
+ * Coverage test definitions now support 'depends_on'
+ tagging system.
+ * Tests requiring specific hashing algorithms now honor
+ the defines.
+
+Bug fixes
+ * Changed typo in #ifdef in x509parse.c (found
+ by Eduardo)
+
+= Version 0.12.0 released on 2009-07-28
+Features
+ * Added CMake makefiles as alternative to regular Makefiles.
+ * Added preliminary Code Coverage tests for AES, ARC4,
+ Base64, MPI, SHA-family, MD-family, HMAC-SHA-family,
+ Camellia, DES, 3-DES, RSA PKCS#1, XTEA, Diffie-Hellman
+ and X509parse.
+
+Changes
+ * Error codes are not (necessarily) negative. Keep
+ this is mind when checking for errors.
+ * RSA_RAW renamed to SIG_RSA_RAW for consistency.
+ * Fixed typo in name of POLARSSL_ERR_RSA_OUTPUT_TOO_LARGE.
+ * Changed interface for AES and Camellia setkey functions
+ to indicate invalid key lengths.
+
+Bug fixes
+ * Fixed include location of endian.h on FreeBSD (found by
+ Gabriel)
+ * Fixed include location of endian.h and name clash on
+ Apples (found by Martin van Hensbergen)
+ * Fixed HMAC-MD2 by modifying md2_starts(), so that the
+ required HMAC ipad and opad variables are not cleared.
+ (found by code coverage tests)
+ * Prevented use of long long in bignum if
+ POLARSSL_HAVE_LONGLONG not defined (found by Giles
+ Bathgate).
+ * Fixed incorrect handling of negative strings in
+ mpi_read_string() (found by code coverage tests).
+ * Fixed segfault on handling empty rsa_context in
+ rsa_check_pubkey() and rsa_check_privkey() (found by
+ code coverage tests).
+ * Fixed incorrect handling of one single negative input
+ value in mpi_add_abs() (found by code coverage tests).
+ * Fixed incorrect handling of negative first input
+ value in mpi_sub_abs() (found by code coverage tests).
+ * Fixed incorrect handling of negative first input
+ value in mpi_mod_mpi() and mpi_mod_int(). Resulting
+ change also affects mpi_write_string() (found by code
+ coverage tests).
+ * Corrected is_prime() results for 0, 1 and 2 (found by
+ code coverage tests).
+ * Fixed Camellia and XTEA for 64-bit Windows systems.
+
+= Version 0.11.1 released on 2009-05-17
+ * Fixed missing functionality for SHA-224, SHA-256, SHA384,
+ SHA-512 in rsa_pkcs1_sign()
+
+= Version 0.11.0 released on 2009-05-03
+ * Fixed a bug in mpi_gcd() so that it also works when both
+ input numbers are even and added testcases to check
+ (found by Pierre Habouzit).
+ * Added support for SHA-224, SHA-256, SHA-384 and SHA-512
+ one way hash functions with the PKCS#1 v1.5 signing and
+ verification.
+ * Fixed minor bug regarding mpi_gcd located within the
+ POLARSSL_GENPRIME block.
+ * Fixed minor memory leak in x509parse_crt() and added better
+ handling of 'full' certificate chains (found by Mathias
+ Olsson).
+ * Centralized file opening and reading for x509 files into
+ load_file()
+ * Made definition of net_htons() endian-clean for big endian
+ systems (Found by Gernot).
+ * Undefining POLARSSL_HAVE_ASM now also handles prevents asm in
+ padlock and timing code.
+ * Fixed an off-by-one buffer allocation in ssl_set_hostname()
+ responsible for crashes and unwanted behaviour.
+ * Added support for Certificate Revocation List (CRL) parsing.
+ * Added support for CRL revocation to x509parse_verify() and
+ SSL/TLS code.
+ * Fixed compatibility of XTEA and Camellia on a 64-bit system
+ (found by Felix von Leitner).
+
+= Version 0.10.0 released on 2009-01-12
+ * Migrated XySSL to PolarSSL
+ * Added XTEA symmetric cipher
+ * Added Camellia symmetric cipher
+ * Added support for ciphersuites: SSL_RSA_CAMELLIA_128_SHA,
+ SSL_RSA_CAMELLIA_256_SHA and SSL_EDH_RSA_CAMELLIA_256_SHA
+ * Fixed dangerous bug that can cause a heap overflow in
+ rsa_pkcs1_decrypt (found by Christophe Devine)
+
+================================================================
+XySSL ChangeLog
+
+= Version 0.9 released on 2008-03-16
+
+ * Added support for ciphersuite: SSL_RSA_AES_128_SHA
+ * Enabled support for large files by default in aescrypt2.c
+ * Preliminary openssl wrapper contributed by David Barrett
+ * Fixed a bug in ssl_write() that caused the same payload to
+ be sent twice in non-blocking mode when send returns EAGAIN
+ * Fixed ssl_parse_client_hello(): session id and challenge must
+ not be swapped in the SSLv2 ClientHello (found by Greg Robson)
+ * Added user-defined callback debug function (Krystian Kolodziej)
+ * Before freeing a certificate, properly zero out all cert. data
+ * Fixed the "mode" parameter so that encryption/decryption are
+ not swapped on PadLock; also fixed compilation on older versions
+ of gcc (bug reported by David Barrett)
+ * Correctly handle the case in padlock_xcryptcbc() when input or
+ ouput data is non-aligned by falling back to the software
+ implementation, as VIA Nehemiah cannot handle non-aligned buffers
+ * Fixed a memory leak in x509parse_crt() which was reported by Greg
+ Robson-Garth; some x509write.c fixes by Pascal Vizeli, thanks to
+ Matthew Page who reported several bugs
+ * Fixed x509_get_ext() to accept some rare certificates which have
+ an INTEGER instead of a BOOLEAN for BasicConstraints::cA.
+ * Added support on the client side for the TLS "hostname" extension
+ (patch contributed by David Patino)
+ * Make x509parse_verify() return BADCERT_CN_MISMATCH when an empty
+ string is passed as the CN (bug reported by spoofy)
+ * Added an option to enable/disable the BN assembly code
+ * Updated rsa_check_privkey() to verify that (D*E) = 1 % (P-1)*(Q-1)
+ * Disabled obsolete hash functions by default (MD2, MD4); updated
+ selftest and benchmark to not test ciphers that have been disabled
+ * Updated x509parse_cert_info() to correctly display byte 0 of the
+ serial number, setup correct server port in the ssl client example
+ * Fixed a critical denial-of-service with X.509 cert. verification:
+ peer may cause xyssl to loop indefinitely by sending a certificate
+ for which the RSA signature check fails (bug reported by Benoit)
+ * Added test vectors for: AES-CBC, AES-CFB, DES-CBC and 3DES-CBC,
+ HMAC-MD5, HMAC-SHA1, HMAC-SHA-256, HMAC-SHA-384, and HMAC-SHA-512
+ * Fixed HMAC-SHA-384 and HMAC-SHA-512 (thanks to Josh Sinykin)
+ * Modified ssl_parse_client_key_exchange() to protect against
+ Daniel Bleichenbacher attack on PKCS#1 v1.5 padding, as well
+ as the Klima-Pokorny-Rosa extension of Bleichenbacher's attack
+ * Updated rsa_gen_key() so that ctx->N is always nbits in size
+ * Fixed assembly PPC compilation errors on Mac OS X, thanks to
+ David Barrett and Dusan Semen
+
+= Version 0.8 released on 2007-10-20
+
+ * Modified the HMAC functions to handle keys larger
+ than 64 bytes, thanks to Stephane Desneux and gary ng
+ * Fixed ssl_read_record() to properly update the handshake
+ message digests, which fixes IE6/IE7 client authentication
+ * Cleaned up the XYSSL* #defines, suggested by Azriel Fasten
+ * Fixed net_recv(), thanks to Lorenz Schori and Egon Kocjan
+ * Added user-defined callbacks for handling I/O and sessions
+ * Added lots of debugging output in the SSL/TLS functions
+ * Added preliminary X.509 cert. writing by Pascal Vizeli
+ * Added preliminary support for the VIA PadLock routines
+ * Added AES-CFB mode of operation, contributed by chmike
+ * Added an SSL/TLS stress testing program (ssl_test.c)
+ * Updated the RSA PKCS#1 code to allow choosing between
+ RSA_PUBLIC and RSA_PRIVATE, as suggested by David Barrett
+ * Updated ssl_read() to skip 0-length records from OpenSSL
+ * Fixed the make install target to comply with *BSD make
+ * Fixed a bug in mpi_read_binary() on 64-bit platforms
+ * mpi_is_prime() speedups, thanks to Kevin McLaughlin
+ * Fixed a long standing memory leak in mpi_is_prime()
+ * Replaced realloc with malloc in mpi_grow(), and set
+ the sign of zero as positive in mpi_init() (reported
+ by Jonathan M. McCune)
+
+= Version 0.7 released on 2007-07-07
+
+ * Added support for the MicroBlaze soft-core processor
+ * Fixed a bug in ssl_tls.c which sometimes prevented SSL
+ connections from being established with non-blocking I/O
+ * Fixed a couple bugs in the VS6 and UNIX Makefiles
+ * Fixed the "PIC register ebx clobbered in asm" bug
+ * Added HMAC starts/update/finish support functions
+ * Added the SHA-224, SHA-384 and SHA-512 hash functions
+ * Fixed the net_set_*block routines, thanks to Andreas
+ * Added a few demonstration programs: md5sum, sha1sum,
+ dh_client, dh_server, rsa_genkey, rsa_sign, rsa_verify
+ * Added new bignum import and export helper functions
+ * Rewrote README.txt in program/ssl/ca to better explain
+ how to create a test PKI
+
+= Version 0.6 released on 2007-04-01
+
+ * Ciphers used in SSL/TLS can now be disabled at compile
+ time, to reduce the memory footprint on embedded systems
+ * Added multiply assembly code for the TriCore and modified
+ havege_struct for this processor, thanks to David Patiño
+ * Added multiply assembly code for 64-bit PowerPCs,
+ thanks to Peking University and the OSU Open Source Lab
+ * Added experimental support of Quantum Cryptography
+ * Added support for autoconf, contributed by Arnaud Cornet
+ * Fixed "long long" compilation issues on IA-64 and PPC64
+ * Fixed a bug introduced in xyssl-0.5/timing.c: hardclock
+ was not being correctly defined on ARM and MIPS
+
+= Version 0.5 released on 2007-03-01
+
+ * Added multiply assembly code for SPARC and Alpha
+ * Added (beta) support for non-blocking I/O operations
+ * Implemented session resuming and client authentication
+ * Fixed some portability issues on WinCE, MINIX 3, Plan9
+ (thanks to Benjamin Newman), HP-UX, FreeBSD and Solaris
+ * Improved the performance of the EDH key exchange
+ * Fixed a bug that caused valid packets with a payload
+ size of 16384 bytes to be rejected
+
+= Version 0.4 released on 2007-02-01
+
+ * Added support for Ephemeral Diffie-Hellman key exchange
+ * Added multiply asm code for SSE2, ARM, PPC, MIPS and M68K
+ * Various improvement to the modular exponentiation code
+ * Rewrote the headers to generate the API docs with doxygen
+ * Fixed a bug in ssl_encrypt_buf (incorrect padding was
+ generated) and in ssl_parse_client_hello (max. client
+ version was not properly set), thanks to Didier Rebeix
+ * Fixed another bug in ssl_parse_client_hello: clients with
+ cipherlists larger than 96 bytes were incorrectly rejected
+ * Fixed a couple memory leak in x509_read.c
+
+= Version 0.3 released on 2007-01-01
+
+ * Added server-side SSLv3 and TLSv1.0 support
+ * Multiple fixes to enhance the compatibility with g++,
+ thanks to Xosé Antón Otero Ferreira
+ * Fixed a bug in the CBC code, thanks to dowst; also,
+ the bignum code is no longer dependant on long long
+ * Updated rsa_pkcs1_sign to handle arbitrary large inputs
+ * Updated timing.c for improved compatibility with i386
+ and 486 processors, thanks to Arnaud Cornet
+
+= Version 0.2 released on 2006-12-01
+
+ * Updated timing.c to support ARM and MIPS arch
+ * Updated the MPI code to support 8086 on MSVC 1.5
+ * Added the copyright notice at the top of havege.h
+ * Fixed a bug in sha2_hmac, thanks to newsoft/Wenfang Zhang
+ * Fixed a bug reported by Adrian Rüegsegger in x509_read_key
+ * Fixed a bug reported by Torsten Lauter in ssl_read_record
+ * Fixed a bug in rsa_check_privkey that would wrongly cause
+ valid RSA keys to be dismissed (thanks to oldwolf)
+ * Fixed a bug in mpi_is_prime that caused some primes to fail
+ the Miller-Rabin primality test
+
+ I'd also like to thank Younès Hafri for the CRUX linux port,
+ Khalil Petit who added XySSL into pkgsrc and Arnaud Cornet
+ who maintains the Debian package :-)
+
+= Version 0.1 released on 2006-11-01
+
diff --git a/LICENSE b/LICENSE
index 82fa1daad..d511905c1 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,339 +1,339 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Lesser General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-
- Copyright (C)
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License along
- with this program; if not, write to the Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) year name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- , 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Lesser General
-Public License instead of this License.
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+
+ Copyright (C)
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ , 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.