Add information on 0.9.6a (in a form such that the list can be

verified by looking at 'diff -u ../openssl-0.9.6a/CHANGES CHANGES')
This commit is contained in:
Bodo Möller 2001-04-11 10:35:38 +00:00
parent c3bdbcf639
commit a9d2bc4902

290
CHANGES
View file

@ -2,9 +2,16 @@
OpenSSL CHANGES OpenSSL CHANGES
_______________ _______________
Changes between 0.9.6 and 0.9.7 [xx XXX 2000] Changes between 0.9.6 and 0.9.7 [xx XXX 2001]
*) Implement binary inversion algorithm for BN_mod_inverse in addition Both OpenSSL0.9.6a (bugfix release, 5 Apr 2001) and OpenSSL 0.9.7
are based on OpenSSL 0.9.6.
Change log entries are tagged as follows:
-) applies to 0.9.6a only
*) applies to 0.9.6a and 0.9.7
+) applies to 0.9.7 only
+) Implement binary inversion algorithm for BN_mod_inverse in addition
to the algorithm using long divison. The binary algorithm can be to the algorithm using long divison. The binary algorithm can be
used only if the modulus is odd. On 32-bit systems, it is faster used only if the modulus is odd. On 32-bit systems, it is faster
only for relatively small moduli (roughly 20-30% for 128-bit moduli, only for relatively small moduli (roughly 20-30% for 128-bit moduli,
@ -14,10 +21,12 @@
for moduli up to 2048 bits. for moduli up to 2048 bits.
[Bodo Moeller] [Bodo Moeller]
*) Change bctest again: '-x' expressions are not available in all +) Change bctest again: '-x' expressions are not available in all
versions of 'test'. versions of 'test'.
[Bodo Moeller] [Bodo Moeller]
-) OpenSSL 0.9.6a released [5 Apr 2001]
*) Fix a couple of memory leaks in PKCS7_dataDecode() *) Fix a couple of memory leaks in PKCS7_dataDecode()
[Steve Henson, reported by Heyun Zheng <hzheng@atdsprint.com>] [Steve Henson, reported by Heyun Zheng <hzheng@atdsprint.com>]
@ -28,10 +37,16 @@
CygWin. CygWin.
[Richard Levitte] [Richard Levitte]
*) Rewrite CHOICE field setting in ASN1_item_ex_d2i(). The old code +) Rewrite CHOICE field setting in ASN1_item_ex_d2i(). The old code
could not support the combine flag in choice fields. could not support the combine flag in choice fields.
[Steve Henson] [Steve Henson]
-) Fix for asn1_GetSequence() for indefinite length constructed data.
If SEQUENCE is length is indefinite just set c->slen to the total
amount of data available.
[Steve Henson, reported by shige@FreeBSD.org]
[This change does not apply to 0.9.7.]
*) Change bctest to avoid here-documents inside command substitution *) Change bctest to avoid here-documents inside command substitution
(workaround for FreeBSD /bin/sh bug). (workaround for FreeBSD /bin/sh bug).
For compatibility with Ultrix, avoid shell functions (introduced For compatibility with Ultrix, avoid shell functions (introduced
@ -55,6 +70,11 @@
*) Disabled incorrect Alpha assembler code. *) Disabled incorrect Alpha assembler code.
[Richard Levitte] [Richard Levitte]
-) Fix PKCS#7 decode routines so they correctly update the length
after reading an EOC for the EXPLICIT tag.
[Steve Henson]
[This change does not apply to 0.9.7.]
*) Fix bug in PKCS#12 key generation routines. This was triggered *) Fix bug in PKCS#12 key generation routines. This was triggered
if a 3DES key was generated with a 0 initial byte. Include if a 3DES key was generated with a 0 initial byte. Include
PKCS12_BROKEN_KEYGEN compilation option to retain the old PKCS12_BROKEN_KEYGEN compilation option to retain the old
@ -65,11 +85,11 @@
it when found. it when found.
[Tim Rice <tim@multitalents.net> via Richard Levitte] [Tim Rice <tim@multitalents.net> via Richard Levitte]
*) Add a 'copy_extensions' option to the 'ca' utility. This copies +) Add a 'copy_extensions' option to the 'ca' utility. This copies
extensions from a certificate request to the certificate. extensions from a certificate request to the certificate.
[Steve Henson] [Steve Henson]
*) Allow multiple 'certopt' and 'nameopt' options to be separated +) Allow multiple 'certopt' and 'nameopt' options to be separated
by commas. Add 'namopt' and 'certopt' options to the 'ca' config by commas. Add 'namopt' and 'certopt' options to the 'ca' config
file: this allows the display of the certificate about to be file: this allows the display of the certificate about to be
signed to be customised, to allow certain fields to be included signed to be customised, to allow certain fields to be included
@ -82,7 +102,7 @@
don't write to the wrong index in ERR_set_error_data. don't write to the wrong index in ERR_set_error_data.
[Bodo Moeller] [Bodo Moeller]
*) Function EC_POINTs_mul for simultaneous scalar multiplication +) Function EC_POINTs_mul for simultaneous scalar multiplication
of an arbitrary number of elliptic curve points, optionally of an arbitrary number of elliptic curve points, optionally
including the generator defined for the EC_GROUP. including the generator defined for the EC_GROUP.
EC_POINT_mul is a simple wrapper function for the typical case EC_POINT_mul is a simple wrapper function for the typical case
@ -90,7 +110,7 @@
generator). generator).
[Bodo Moeller] [Bodo Moeller]
*) First EC_METHODs for curves over GF(p): +) First EC_METHODs for curves over GF(p):
EC_GFp_simple_method() uses the basic BN_mod_mul and BN_mod_sqr EC_GFp_simple_method() uses the basic BN_mod_mul and BN_mod_sqr
operations and provides various method functions that can also operations and provides various method functions that can also
@ -103,7 +123,7 @@
implementation directly derived from source code provided by implementation directly derived from source code provided by
Lenka Fibikova <fibikova@exp-math.uni-essen.de>] Lenka Fibikova <fibikova@exp-math.uni-essen.de>]
*) Framework for elliptic curves (crypto/ec/ec.h, crypto/ec/ec_lcl.h, +) Framework for elliptic curves (crypto/ec/ec.h, crypto/ec/ec_lcl.h,
crypto/ec/ec_lib.c): crypto/ec/ec_lib.c):
Curves are EC_GROUP objects (with an optional group generator) Curves are EC_GROUP objects (with an optional group generator)
@ -116,18 +136,18 @@
than GF(p), some functions are limited to that for now. than GF(p), some functions are limited to that for now.
[Bodo Moeller] [Bodo Moeller]
*) Add the -HTTP option to s_server. It is similar to -WWW, but requires +) Add the -HTTP option to s_server. It is similar to -WWW, but requires
that the file contains a complete HTTP response. that the file contains a complete HTTP response.
[Richard Levitte] [Richard Levitte]
*) Add the ec directory to mkdef.pl and mkfiles.pl. In mkdef.pl +) Add the ec directory to mkdef.pl and mkfiles.pl. In mkdef.pl
change the def and num file printf format specifier from "%-40sXXX" change the def and num file printf format specifier from "%-40sXXX"
to "%-39s XXX". The latter will always guarantee a space after the to "%-39s XXX". The latter will always guarantee a space after the
field while the former will cause them to run together if the field field while the former will cause them to run together if the field
is 40 of more characters long. is 40 of more characters long.
[Steve Henson] [Steve Henson]
*) Constify the cipher and digest 'method' functions and structures +) Constify the cipher and digest 'method' functions and structures
and modify related functions to take constant EVP_MD and EVP_CIPHER and modify related functions to take constant EVP_MD and EVP_CIPHER
pointers. pointers.
[Steve Henson] [Steve Henson]
@ -139,16 +159,16 @@
*) Replace rdtsc with _emit statements for VC++ version 5. *) Replace rdtsc with _emit statements for VC++ version 5.
[Jeremy Cooper <jeremy@baymoo.org>] [Jeremy Cooper <jeremy@baymoo.org>]
*) Hide BN_CTX structure details in bn_lcl.h instead of publishing them +) Hide BN_CTX structure details in bn_lcl.h instead of publishing them
in <openssl/bn.h>. Also further increase BN_CTX_NUM to 32. in <openssl/bn.h>. Also further increase BN_CTX_NUM to 32.
[Bodo Moeller] [Bodo Moeller]
*) Modify EVP_Digest*() routines so they now return values. Although the +) Modify EVP_Digest*() routines so they now return values. Although the
internal software routines can never fail additional hardware versions internal software routines can never fail additional hardware versions
might. might.
[Steve Henson] [Steve Henson]
*) Clean up crypto/err/err.h and change some error codes to avoid conflicts: +) Clean up crypto/err/err.h and change some error codes to avoid conflicts:
Previously ERR_R_FATAL was too small and coincided with ERR_LIB_PKCS7 Previously ERR_R_FATAL was too small and coincided with ERR_LIB_PKCS7
(= ERR_R_PKCS7_LIB); it is now 64 instead of 32. (= ERR_R_PKCS7_LIB); it is now 64 instead of 32.
@ -166,11 +186,11 @@
Add new error code 'ERR_R_INTERNAL_ERROR'. Add new error code 'ERR_R_INTERNAL_ERROR'.
[Bodo Moeller] [Bodo Moeller]
*) Don't overuse locks in crypto/err/err.c: For data retrieval, CRYPTO_r_lock +) Don't overuse locks in crypto/err/err.c: For data retrieval, CRYPTO_r_lock
suffices. suffices.
[Bodo Moeller] [Bodo Moeller]
*) New option '-subj arg' for 'openssl req' and 'openssl ca'. This +) New option '-subj arg' for 'openssl req' and 'openssl ca'. This
sets the subject name for a new request or supersedes the sets the subject name for a new request or supersedes the
subject name in a given request. Formats that can be parsed are subject name in a given request. Formats that can be parsed are
'CN=Some Name, OU=myOU, C=IT' 'CN=Some Name, OU=myOU, C=IT'
@ -183,7 +203,7 @@
*) Make it possible to reuse SSLv2 sessions. *) Make it possible to reuse SSLv2 sessions.
[Richard Levitte] [Richard Levitte]
*) Introduce the possibility to access global variables through +) Introduce the possibility to access global variables through
functions on platform were that's the best way to handle exporting functions on platform were that's the best way to handle exporting
global variables in shared libraries. To enable this functionality, global variables in shared libraries. To enable this functionality,
one must configure with "EXPORT_VAR_AS_FN" or defined the C macro one must configure with "EXPORT_VAR_AS_FN" or defined the C macro
@ -221,19 +241,19 @@
X509_NAME_get_index_by_NID() since 0 is a valid index. X509_NAME_get_index_by_NID() since 0 is a valid index.
[Steve Henson reported by Massimiliano Pala <madwolf@opensca.org>] [Steve Henson reported by Massimiliano Pala <madwolf@opensca.org>]
*) In BN_div() keep a copy of the sign of 'num' before writing the +) In BN_div() keep a copy of the sign of 'num' before writing the
result to 'rm' because if rm==num the value will be overwritten result to 'rm' because if rm==num the value will be overwritten
and produce the wrong result if 'num' is negative: this caused and produce the wrong result if 'num' is negative: this caused
problems with BN_mod() and BN_nnmod(). problems with BN_mod() and BN_nnmod().
[Steve Henson] [Steve Henson]
*) Function OCSP_request_verify(). This checks the signature on an +) Function OCSP_request_verify(). This checks the signature on an
OCSP request and verifies the signer certificate. The signer OCSP request and verifies the signer certificate. The signer
certificate is just checked for a generic purpose and OCSP request certificate is just checked for a generic purpose and OCSP request
trust settings. trust settings.
[Steve Henson] [Steve Henson]
*) Add OCSP_check_validity() function to check the validity of OCSP +) Add OCSP_check_validity() function to check the validity of OCSP
responses. OCSP responses are prepared in real time and may only responses. OCSP responses are prepared in real time and may only
be a few seconds old. Simply checking that the current time lies be a few seconds old. Simply checking that the current time lies
between thisUpdate and nextUpdate max reject otherwise valid responses between thisUpdate and nextUpdate max reject otherwise valid responses
@ -244,7 +264,7 @@
ocsp utility. ocsp utility.
[Steve Henson] [Steve Henson]
*) If signature or public key algorithm is unrecognized print out its +) If signature or public key algorithm is unrecognized print out its
OID rather that just UNKOWN. OID rather that just UNKOWN.
[Steve Henson] [Steve Henson]
@ -253,13 +273,13 @@
PKCS7_verify() fails with non detached data. PKCS7_verify() fails with non detached data.
[Steve Henson] [Steve Henson]
*) Change OCSP_cert_to_id() to tolerate a NULL subject certificate and +) Change OCSP_cert_to_id() to tolerate a NULL subject certificate and
OCSP_cert_id_new() a NULL serialNumber. This allows a partial certificate OCSP_cert_id_new() a NULL serialNumber. This allows a partial certificate
ID to be generated from the issuer certificate alone which can then be ID to be generated from the issuer certificate alone which can then be
passed to OCSP_id_issuer_cmp(). passed to OCSP_id_issuer_cmp().
[Steve Henson] [Steve Henson]
*) New compilation option ASN1_ITEM_FUNCTIONS. This causes the new +) New compilation option ASN1_ITEM_FUNCTIONS. This causes the new
ASN1 modules to export functions returning ASN1_ITEM pointers ASN1 modules to export functions returning ASN1_ITEM pointers
instead of the ASN1_ITEM structures themselves. This adds several instead of the ASN1_ITEM structures themselves. This adds several
new macros which allow the underlying ASN1 function/structure to new macros which allow the underlying ASN1 function/structure to
@ -271,7 +291,7 @@
functions returning pointers to structures is not. functions returning pointers to structures is not.
[Steve Henson] [Steve Henson]
*) Add support for overriding the generation of SSL/TLS session IDs. +) Add support for overriding the generation of SSL/TLS session IDs.
These callbacks can be registered either in an SSL_CTX or per SSL. These callbacks can be registered either in an SSL_CTX or per SSL.
The purpose of this is to allow applications to control, if they wish, The purpose of this is to allow applications to control, if they wish,
the arbitrary values chosen for use as session IDs, particularly as it the arbitrary values chosen for use as session IDs, particularly as it
@ -280,7 +300,7 @@
to use such a feature) has been added to "s_server". to use such a feature) has been added to "s_server".
[Geoff Thorpe, Lutz Jaenicke] [Geoff Thorpe, Lutz Jaenicke]
*) Modify mkdef.pl to recognise and parse prprocessor conditionals +) Modify mkdef.pl to recognise and parse prprocessor conditionals
of the form '#if defined(...) || defined(...) || ...' and of the form '#if defined(...) || defined(...) || ...' and
'#if !defined(...) && !defined(...) && ...'. This also avoids '#if !defined(...) && !defined(...) && ...'. This also avoids
the growing number of special cases it was previously handling. the growing number of special cases it was previously handling.
@ -290,7 +310,7 @@
New function OPENSSL_issetugid(). New function OPENSSL_issetugid().
[Ulf Moeller] [Ulf Moeller]
*) Make all configuration macros available for application by making +) Make all configuration macros available for application by making
sure they are available in opensslconf.h, by giving them names starting sure they are available in opensslconf.h, by giving them names starting
with "OPENSSL_" to avoid conflicts with other packages and by making with "OPENSSL_" to avoid conflicts with other packages and by making
sure e_os2.h will cover all platform-specific cases together with sure e_os2.h will cover all platform-specific cases together with
@ -303,7 +323,7 @@
what is available. what is available.
[Richard Levitte] [Richard Levitte]
*) New option -set_serial to 'req' and 'x509' this allows the serial +) New option -set_serial to 'req' and 'x509' this allows the serial
number to use to be specified on the command line. Previously self number to use to be specified on the command line. Previously self
signed certificates were hard coded with serial number 0 and the signed certificates were hard coded with serial number 0 and the
CA options of 'x509' had to use a serial number in a file which was CA options of 'x509' had to use a serial number in a file which was
@ -323,7 +343,7 @@
assumption that thread ID 0 is impossible). assumption that thread ID 0 is impossible).
[Bodo Moeller] [Bodo Moeller]
*) New options to 'ca' utility to support V2 CRL entry extensions. +) New options to 'ca' utility to support V2 CRL entry extensions.
Currently CRL reason, invalidity date and hold instruction are Currently CRL reason, invalidity date and hold instruction are
supported. Add new CRL extensions to V3 code and some new objects. supported. Add new CRL extensions to V3 code and some new objects.
[Steve Henson] [Steve Henson]
@ -331,26 +351,26 @@
*) Add "-rand" option also to s_client and s_server. *) Add "-rand" option also to s_client and s_server.
[Lutz Jaenicke] [Lutz Jaenicke]
*) New function EVP_CIPHER_CTX_set_padding() this is used to +) New function EVP_CIPHER_CTX_set_padding() this is used to
disable standard block padding (aka PKCS#5 padding) in the EVP disable standard block padding (aka PKCS#5 padding) in the EVP
API, which was previously mandatory. This means that the data is API, which was previously mandatory. This means that the data is
not padded in any way and so the total length much be a multiple not padded in any way and so the total length much be a multiple
of the block size, otherwise an error occurs. of the block size, otherwise an error occurs.
[Steve Henson] [Steve Henson]
*) Initial (incomplete) OCSP SSL support. +) Initial (incomplete) OCSP SSL support.
[Steve Henson] [Steve Henson]
*) Fix CPU detection on Irix 6.x. *) Fix CPU detection on Irix 6.x.
[Kurt Hockenbury <khockenb@stevens-tech.edu> and [Kurt Hockenbury <khockenb@stevens-tech.edu> and
"Bruce W. Forsberg" <bruce.forsberg@baesystems.com>] "Bruce W. Forsberg" <bruce.forsberg@baesystems.com>]
*) New function OCSP_parse_url(). This splits up a URL into its host, +) New function OCSP_parse_url(). This splits up a URL into its host,
port and path components: primarily to parse OCSP URLs. New -url port and path components: primarily to parse OCSP URLs. New -url
option to ocsp utility. option to ocsp utility.
[Steve Henson] [Steve Henson]
*) New nonce behavior. The return value of OCSP_check_nonce() now +) New nonce behavior. The return value of OCSP_check_nonce() now
reflects the various checks performed. Applications can decide reflects the various checks performed. Applications can decide
whether to tolerate certain situations such as an absent nonce whether to tolerate certain situations such as an absent nonce
in a response when one was present in a request: the ocsp application in a response when one was present in a request: the ocsp application
@ -359,37 +379,41 @@
the request is nonce-less. the request is nonce-less.
[Steve Henson] [Steve Henson]
*) Fix X509_NAME bug which produced incorrect encoding if X509_NAME
was empty.
[This change does not apply to 0.9.7.]
*) Use the cached encoding of an X509_NAME structure rather than *) Use the cached encoding of an X509_NAME structure rather than
copying it. This is apparently the reason for the libsafe "errors" copying it. This is apparently the reason for the libsafe "errors"
but the code is actually correct. but the code is actually correct.
[Steve Henson] [Steve Henson]
*) Disable stdin buffering in load_cert (apps/apps.c) so that no certs are +) Disable stdin buffering in load_cert (apps/apps.c) so that no certs are
skipped when using openssl x509 multiple times on a single input file, skipped when using openssl x509 multiple times on a single input file,
e.g. "(openssl x509 -out cert1; openssl x509 -out cert2) <certs". e.g. "(openssl x509 -out cert1; openssl x509 -out cert2) <certs".
[Bodo Moeller] [Bodo Moeller]
*) Make ASN1_UTCTIME_set_string() and ASN1_GENERALIZEDTIME_set_string() +) Make ASN1_UTCTIME_set_string() and ASN1_GENERALIZEDTIME_set_string()
set string type: to handle setting ASN1_TIME structures. Fix ca set string type: to handle setting ASN1_TIME structures. Fix ca
utility to correctly initialize revocation date of CRLs. utility to correctly initialize revocation date of CRLs.
[Steve Henson] [Steve Henson]
*) New option SSL_OP_CIPHER_SERVER_PREFERENCE allows the server to override +) New option SSL_OP_CIPHER_SERVER_PREFERENCE allows the server to override
the clients preferred ciphersuites and rather use its own preferences. the clients preferred ciphersuites and rather use its own preferences.
Should help to work around M$ SGC (Server Gated Cryptography) bug in Should help to work around M$ SGC (Server Gated Cryptography) bug in
Internet Explorer by ensuring unchanged hash method during stepup. Internet Explorer by ensuring unchanged hash method during stepup.
[Lutz Jaenicke] [Lutz Jaenicke]
*) Make mkdef.pl recognise all DECLARE_ASN1 macros, change rijndael +) Make mkdef.pl recognise all DECLARE_ASN1 macros, change rijndael
to aes and add a new 'exist' option to print out symbols that don't to aes and add a new 'exist' option to print out symbols that don't
appear to exist. appear to exist.
[Steve Henson] [Steve Henson]
*) Additional options to ocsp utility to allow flags to be set and +) Additional options to ocsp utility to allow flags to be set and
additional certificates supplied. additional certificates supplied.
[Steve Henson] [Steve Henson]
*) Add the option -VAfile to 'openssl ocsp', so the user can give the +) Add the option -VAfile to 'openssl ocsp', so the user can give the
OCSP client a number of certificate to only verify the response OCSP client a number of certificate to only verify the response
signature against. signature against.
[Richard Levitte] [Richard Levitte]
@ -401,7 +425,7 @@
and leaves the highest bit random. and leaves the highest bit random.
[Ulf Moeller, Bodo Moeller] [Ulf Moeller, Bodo Moeller]
*) Update Rijndael code to version 3.0 and change EVP AES ciphers to +) Update Rijndael code to version 3.0 and change EVP AES ciphers to
handle the new API. Currently only ECB, CBC modes supported. Add new handle the new API. Currently only ECB, CBC modes supported. Add new
AES OIDs. Add TLS AES ciphersuites as described in the "AES Ciphersuites AES OIDs. Add TLS AES ciphersuites as described in the "AES Ciphersuites
for TLS" draft-ietf-tls-ciphersuite-03.txt. for TLS" draft-ietf-tls-ciphersuite-03.txt.
@ -419,11 +443,11 @@
*) Fix potential buffer overrun for EBCDIC. *) Fix potential buffer overrun for EBCDIC.
[Ulf Moeller] [Ulf Moeller]
*) New function OCSP_copy_nonce() to copy nonce value (if present) from +) New function OCSP_copy_nonce() to copy nonce value (if present) from
request to response. request to response.
[Steve Henson] [Steve Henson]
*) Functions for OCSP responders. OCSP_request_onereq_count(), +) Functions for OCSP responders. OCSP_request_onereq_count(),
OCSP_request_onereq_get0(), OCSP_onereq_get0_id() and OCSP_id_get0_info() OCSP_request_onereq_get0(), OCSP_onereq_get0_id() and OCSP_id_get0_info()
extract information from a certificate request. OCSP_response_create() extract information from a certificate request. OCSP_response_create()
creates a response and optionally adds a basic response structure. creates a response and optionally adds a basic response structure.
@ -436,7 +460,7 @@
(converts ASN1_TIME to GeneralizedTime). (converts ASN1_TIME to GeneralizedTime).
[Steve Henson] [Steve Henson]
*) Various new functions. EVP_Digest() combines EVP_Digest{Init,Update,Final}() +) Various new functions. EVP_Digest() combines EVP_Digest{Init,Update,Final}()
in a single operation. X509_get0_pubkey_bitstr() extracts the public_key in a single operation. X509_get0_pubkey_bitstr() extracts the public_key
structure from a certificate. X509_pubkey_digest() digests tha public_key structure from a certificate. X509_pubkey_digest() digests tha public_key
contents: this is used in various key identifiers. contents: this is used in various key identifiers.
@ -453,25 +477,31 @@
headers. headers.
[Richard Levitte] [Richard Levitte]
*) Make sk_sort() tolerate a NULL argument. +) Make sk_sort() tolerate a NULL argument.
[Steve Henson reported by Massimiliano Pala <madwolf@comune.modena.it>] [Steve Henson reported by Massimiliano Pala <madwolf@comune.modena.it>]
*) New OCSP verify flag OCSP_TRUSTOTHER. When set the "other" certificates +) New OCSP verify flag OCSP_TRUSTOTHER. When set the "other" certificates
passed by the function are trusted implicitly. If any of them signed the passed by the function are trusted implicitly. If any of them signed the
reponse then it is assumed to be valid and is not verified. reponse then it is assumed to be valid and is not verified.
[Steve Henson] [Steve Henson]
-) Make the CRL encoding routines work with empty SEQUENCE OF. The
macros previously used would not encode an empty SEQUENCE OF
and break the signature.
[Steve Henson]
[This change does not apply to 0.9.7.]
*) Zero the premaster secret after deriving the master secret in *) Zero the premaster secret after deriving the master secret in
DH ciphersuites. DH ciphersuites.
[Steve Henson] [Steve Henson]
*) In PKCS7_set_type() initialise content_type in PKCS7_ENC_CONTENT +) In PKCS7_set_type() initialise content_type in PKCS7_ENC_CONTENT
to data. This was previously part of the PKCS7 ASN1 code. This to data. This was previously part of the PKCS7 ASN1 code. This
was causing problems with OpenSSL created PKCS#12 and PKCS#7 structures. was causing problems with OpenSSL created PKCS#12 and PKCS#7 structures.
[Steve Henson, reported by Kenneth R. Robinette [Steve Henson, reported by Kenneth R. Robinette
<support@securenetterm.com>] <support@securenetterm.com>]
*) Add CRYPTO_push_info() and CRYPTO_pop_info() calls to new ASN1 +) Add CRYPTO_push_info() and CRYPTO_pop_info() calls to new ASN1
routines: without these tracing memory leaks is very painful. routines: without these tracing memory leaks is very painful.
Fix leaks in PKCS12 and PKCS7 routines. Fix leaks in PKCS12 and PKCS7 routines.
[Steve Henson] [Steve Henson]
@ -489,7 +519,7 @@
*) ./config script fixes. *) ./config script fixes.
[Ulf Moeller, Richard Levitte] [Ulf Moeller, Richard Levitte]
*) Make X509_time_adj() cope with the new behaviour of ASN1_TIME_new(). +) Make X509_time_adj() cope with the new behaviour of ASN1_TIME_new().
Previously it initialised the 'type' argument to V_ASN1_UTCTIME which Previously it initialised the 'type' argument to V_ASN1_UTCTIME which
effectively meant GeneralizedTime would never be used. Now it effectively meant GeneralizedTime would never be used. Now it
is initialised to -1 but X509_time_adj() now has to check the value is initialised to -1 but X509_time_adj() now has to check the value
@ -498,7 +528,7 @@
[Steve Henson, reported by Kenneth R. Robinette [Steve Henson, reported by Kenneth R. Robinette
<support@securenetterm.com>] <support@securenetterm.com>]
*) Fixes to BN_to_ASN1_INTEGER when bn is zero. This would previously +) Fixes to BN_to_ASN1_INTEGER when bn is zero. This would previously
result in a zero length in the ASN1_INTEGER structure which was result in a zero length in the ASN1_INTEGER structure which was
not consistent with the structure when d2i_ASN1_INTEGER() was used not consistent with the structure when d2i_ASN1_INTEGER() was used
and would cause ASN1_INTEGER_cmp() to fail. Enhance s2i_ASN1_INTEGER() and would cause ASN1_INTEGER_cmp() to fail. Enhance s2i_ASN1_INTEGER()
@ -509,7 +539,7 @@
*) Fix 'openssl passwd -1'. *) Fix 'openssl passwd -1'.
[Bodo Moeller] [Bodo Moeller]
*) Add summary printout to ocsp utility. The various functions which +) Add summary printout to ocsp utility. The various functions which
convert status values to strings have been renamed to: convert status values to strings have been renamed to:
OCSP_response_status_str(), OCSP_cert_status_str() and OCSP_response_status_str(), OCSP_cert_status_str() and
OCSP_crl_reason_str() and are no longer static. New options OCSP_crl_reason_str() and are no longer static. New options
@ -517,7 +547,7 @@
printout format cleaned up. printout format cleaned up.
[Steve Henson] [Steve Henson]
*) Add additional OCSP certificate checks. These are those specified +) Add additional OCSP certificate checks. These are those specified
in RFC2560. This consists of two separate checks: the CA of the in RFC2560. This consists of two separate checks: the CA of the
certificate being checked must either be the OCSP signer certificate certificate being checked must either be the OCSP signer certificate
or the issuer of the OCSP signer certificate. In the latter case the or the issuer of the OCSP signer certificate. In the latter case the
@ -527,7 +557,7 @@
in the OCSP_CERTID structures of the response. in the OCSP_CERTID structures of the response.
[Steve Henson] [Steve Henson]
*) Initial OCSP certificate verification added to OCSP_basic_verify() +) Initial OCSP certificate verification added to OCSP_basic_verify()
and related routines. This uses the standard OpenSSL certificate and related routines. This uses the standard OpenSSL certificate
verify routines to perform initial checks (just CA validity) and verify routines to perform initial checks (just CA validity) and
to obtain the certificate chain. Then additional checks will be to obtain the certificate chain. Then additional checks will be
@ -537,7 +567,7 @@
chains to that CA is an acceptable OCSP signing certificate. chains to that CA is an acceptable OCSP signing certificate.
[Steve Henson] [Steve Henson]
*) New '-extfile ...' option to 'openssl ca' for reading X.509v3 +) New '-extfile ...' option to 'openssl ca' for reading X.509v3
extensions from a separate configuration file. extensions from a separate configuration file.
As when reading extensions from the main configuration file, As when reading extensions from the main configuration file,
the '-extensions ...' option may be used for specifying the the '-extensions ...' option may be used for specifying the
@ -550,33 +580,33 @@
by adding an extra length parameter to asc2uni(). by adding an extra length parameter to asc2uni().
[Steve Henson, reported by <oddissey@samsung.co.kr>] [Steve Henson, reported by <oddissey@samsung.co.kr>]
*) New OCSP utility. Allows OCSP requests to be generated or +) New OCSP utility. Allows OCSP requests to be generated or
read. The request can be sent to a responder and the output read. The request can be sent to a responder and the output
parsed, outputed or printed in text form. Not complete yet: parsed, outputed or printed in text form. Not complete yet:
still needs to check the OCSP response validity. still needs to check the OCSP response validity.
[Steve Henson] [Steve Henson]
*) New subcommands for 'openssl ca': +) New subcommands for 'openssl ca':
'openssl ca -status <serial>' prints the status of the cert with 'openssl ca -status <serial>' prints the status of the cert with
the given serial number (according to the index file). the given serial number (according to the index file).
'openssl ca -updatedb' updates the expiry status of certificates 'openssl ca -updatedb' updates the expiry status of certificates
in the index file. in the index file.
[Massimiliano Pala <madwolf@comune.modena.it>] [Massimiliano Pala <madwolf@comune.modena.it>]
*) New '-newreq-nodes' command option to CA.pl. This is like +) New '-newreq-nodes' command option to CA.pl. This is like
'-newreq', but calls 'openssl req' with the '-nodes' option '-newreq', but calls 'openssl req' with the '-nodes' option
so that the resulting key is not encrypted. so that the resulting key is not encrypted.
[Damien Miller <djm@mindrot.org>] [Damien Miller <djm@mindrot.org>]
*) New configuration for the GNU Hurd. +) New configuration for the GNU Hurd.
[Jonathan Bartlett <johnnyb@wolfram.com> via Richard Levitte] [Jonathan Bartlett <johnnyb@wolfram.com> via Richard Levitte]
*) Initial code to implement OCSP basic response verify. This +) Initial code to implement OCSP basic response verify. This
is currently incomplete. Currently just finds the signer's is currently incomplete. Currently just finds the signer's
certificate and verifies the signature on the response. certificate and verifies the signature on the response.
[Steve Henson] [Steve Henson]
*) New SSLeay_version code SSLEAY_DIR to determine the compiled-in +) New SSLeay_version code SSLEAY_DIR to determine the compiled-in
value of OPENSSLDIR. This is available via the new '-d' option value of OPENSSLDIR. This is available via the new '-d' option
to 'openssl version', and is also included in 'openssl version -a'. to 'openssl version', and is also included in 'openssl version -a'.
[Bodo Moeller] [Bodo Moeller]
@ -585,7 +615,7 @@
call failed, free the DSA structure. call failed, free the DSA structure.
[Bodo Moeller] [Bodo Moeller]
*) Allowing defining memory allocation callbacks that will be given +) Allowing defining memory allocation callbacks that will be given
file name and line number information in additional arguments file name and line number information in additional arguments
(a const char* and an int). The basic functionality remains, as (a const char* and an int). The basic functionality remains, as
well as the original possibility to just replace malloc(), well as the original possibility to just replace malloc(),
@ -610,20 +640,20 @@
These are present in some PKCS#12 files. These are present in some PKCS#12 files.
[Steve Henson] [Steve Henson]
*) Finish off removing the remaining LHASH function pointer casts. +) Finish off removing the remaining LHASH function pointer casts.
There should no longer be any prototype-casting required when using There should no longer be any prototype-casting required when using
the LHASH abstraction, and any casts that remain are "bugs". See the LHASH abstraction, and any casts that remain are "bugs". See
the callback types and macros at the head of lhash.h for details the callback types and macros at the head of lhash.h for details
(and "OBJ_cleanup" in crypto/objects/obj_dat.c as an example). (and "OBJ_cleanup" in crypto/objects/obj_dat.c as an example).
[Geoff Thorpe] [Geoff Thorpe]
*) Add automatic query of EGD sockets in RAND_poll() for the unix variant. +) Add automatic query of EGD sockets in RAND_poll() for the unix variant.
If an EGD or PRNGD is running and enough entropy is returned, automatic If an EGD or PRNGD is running and enough entropy is returned, automatic
seeding like with /dev/[u]random will be performed. seeding like with /dev/[u]random will be performed.
Positions tried are: /etc/entropy, /var/run/egd-pool. Positions tried are: /etc/entropy, /var/run/egd-pool.
[Lutz Jaenicke] [Lutz Jaenicke]
*) Change the Unix RAND_poll() variant to be able to poll several +) Change the Unix RAND_poll() variant to be able to poll several
random devices, as specified by DEVRANDOM, until a sufficient amount random devices, as specified by DEVRANDOM, until a sufficient amount
of data has been collected. We spend at most 10 ms on each file of data has been collected. We spend at most 10 ms on each file
(select timeout) and read in non-blocking mode. DEVRANDOM now (select timeout) and read in non-blocking mode. DEVRANDOM now
@ -634,7 +664,7 @@
For VMS, there's a currently-empty rand_vms.c. For VMS, there's a currently-empty rand_vms.c.
[Richard Levitte] [Richard Levitte]
*) Move OCSP client related routines to ocsp_cl.c. These +) Move OCSP client related routines to ocsp_cl.c. These
provide utility functions which an application needing provide utility functions which an application needing
to issue a request to an OCSP responder and analyse the to issue a request to an OCSP responder and analyse the
response will typically need: as opposed to those which an response will typically need: as opposed to those which an
@ -656,7 +686,7 @@
validity of the nonce in an OCSP response. validity of the nonce in an OCSP response.
[Steve Henson] [Steve Henson]
*) Change function OCSP_request_add() to OCSP_request_add0_id(). +) Change function OCSP_request_add() to OCSP_request_add0_id().
This doesn't copy the supplied OCSP_CERTID and avoids the This doesn't copy the supplied OCSP_CERTID and avoids the
need to free up the newly created id. Change return type need to free up the newly created id. Change return type
to OCSP_ONEREQ to return the internal OCSP_ONEREQ structure. to OCSP_ONEREQ to return the internal OCSP_ONEREQ structure.
@ -667,13 +697,13 @@
will be added elsewhere. will be added elsewhere.
[Steve Henson] [Steve Henson]
*) Update OCSP API. Remove obsolete extensions argument from +) Update OCSP API. Remove obsolete extensions argument from
various functions. Extensions are now handled using the new various functions. Extensions are now handled using the new
OCSP extension code. New simple OCSP HTTP function which OCSP extension code. New simple OCSP HTTP function which
can be used to send requests and parse the response. can be used to send requests and parse the response.
[Steve Henson] [Steve Henson]
*) Fix the PKCS#7 (S/MIME) code to work with new ASN1. Two new +) Fix the PKCS#7 (S/MIME) code to work with new ASN1. Two new
ASN1_ITEM structures help with sign and verify. PKCS7_ATTR_SIGN ASN1_ITEM structures help with sign and verify. PKCS7_ATTR_SIGN
uses the special reorder version of SET OF to sort the attributes uses the special reorder version of SET OF to sort the attributes
and reorder them to match the encoded order. This resolves a long and reorder them to match the encoded order. This resolves a long
@ -686,12 +716,12 @@
to produce the required SET OF. to produce the required SET OF.
[Steve Henson] [Steve Henson]
*) Have mk1mf.pl generate the macros OPENSSL_BUILD_SHLIBCRYPTO and +) Have mk1mf.pl generate the macros OPENSSL_BUILD_SHLIBCRYPTO and
OPENSSL_BUILD_SHLIBSSL and use them appropriately in the header OPENSSL_BUILD_SHLIBSSL and use them appropriately in the header
files to get correct declarations of the ASN.1 item variables. files to get correct declarations of the ASN.1 item variables.
[Richard Levitte] [Richard Levitte]
*) Rewrite of PKCS#12 code to use new ASN1 functionality. Replace many +) Rewrite of PKCS#12 code to use new ASN1 functionality. Replace many
PKCS#12 macros with real functions. Fix two unrelated ASN1 bugs: PKCS#12 macros with real functions. Fix two unrelated ASN1 bugs:
asn1_check_tlen() would sometimes attempt to use 'ctx' when it was asn1_check_tlen() would sometimes attempt to use 'ctx' when it was
NULL and ASN1_TYPE was not dereferenced properly in asn1_ex_c2i(). NULL and ASN1_TYPE was not dereferenced properly in asn1_ex_c2i().
@ -699,34 +729,34 @@
ASN1_ITEM and no wrapper functions. ASN1_ITEM and no wrapper functions.
[Steve Henson] [Steve Henson]
*) New functions or ASN1_item_d2i_fp() and ASN1_item_d2i_bio(). These +) New functions or ASN1_item_d2i_fp() and ASN1_item_d2i_bio(). These
replace the old function pointer based I/O routines. Change most of replace the old function pointer based I/O routines. Change most of
the *_d2i_bio() and *_d2i_fp() functions to use these. the *_d2i_bio() and *_d2i_fp() functions to use these.
[Steve Henson] [Steve Henson]
*) Enhance mkdef.pl to be more accepting about spacing in C preprocessor +) Enhance mkdef.pl to be more accepting about spacing in C preprocessor
lines, recognice more "algorithms" that can be deselected, and make lines, recognice more "algorithms" that can be deselected, and make
it complain about algorithm deselection that isn't recognised. it complain about algorithm deselection that isn't recognised.
[Richard Levitte] [Richard Levitte]
*) New ASN1 functions to handle dup, sign, verify, digest, pack and +) New ASN1 functions to handle dup, sign, verify, digest, pack and
unpack operations in terms of ASN1_ITEM. Modify existing wrappers unpack operations in terms of ASN1_ITEM. Modify existing wrappers
to use new functions. Add NO_ASN1_OLD which can be set to remove to use new functions. Add NO_ASN1_OLD which can be set to remove
some old style ASN1 functions: this can be used to determine if old some old style ASN1 functions: this can be used to determine if old
code will still work when these eventually go away. code will still work when these eventually go away.
[Steve Henson] [Steve Henson]
*) New extension functions for OCSP structures, these follow the +) New extension functions for OCSP structures, these follow the
same conventions as certificates and CRLs. same conventions as certificates and CRLs.
[Steve Henson] [Steve Henson]
*) New function X509V3_add1_i2d(). This automatically encodes and +) New function X509V3_add1_i2d(). This automatically encodes and
adds an extension. Its behaviour can be customised with various adds an extension. Its behaviour can be customised with various
flags to append, replace or delete. Various wrappers added for flags to append, replace or delete. Various wrappers added for
certifcates and CRLs. certifcates and CRLs.
[Steve Henson] [Steve Henson]
*) Fix to avoid calling the underlying ASN1 print routine when +) Fix to avoid calling the underlying ASN1 print routine when
an extension cannot be parsed. Correct a typo in the an extension cannot be parsed. Correct a typo in the
OCSP_SERVICELOC extension. Tidy up print OCSP format. OCSP_SERVICELOC extension. Tidy up print OCSP format.
[Steve Henson] [Steve Henson]
@ -745,20 +775,20 @@
[Bodo Moeller, Geoff Thorpe; original patch submitted by [Bodo Moeller, Geoff Thorpe; original patch submitted by
"Reddie, Steven" <Steven.Reddie@ca.com>] "Reddie, Steven" <Steven.Reddie@ca.com>]
*) Make mkdef.pl parse some of the ASN1 macros and add apropriate +) Make mkdef.pl parse some of the ASN1 macros and add apropriate
entries for variables. entries for variables.
[Steve Henson] [Steve Henson]
*) Fix a deadlock in CRYPTO_mem_leaks(). *) Fix a deadlock in CRYPTO_mem_leaks().
[Bodo Moeller] [Bodo Moeller]
*) Add functionality to apps/openssl.c for detecting locking +) Add functionality to apps/openssl.c for detecting locking
problems: As the program is single-threaded, all we have problems: As the program is single-threaded, all we have
to do is register a locking callback using an array for to do is register a locking callback using an array for
storing which locks are currently held by the program. storing which locks are currently held by the program.
[Bodo Moeller] [Bodo Moeller]
*) Use a lock around the call to CRYPTO_get_ex_new_index() in +) Use a lock around the call to CRYPTO_get_ex_new_index() in
SSL_get_ex_data_X509_STORE_idx(), which is used in SSL_get_ex_data_X509_STORE_idx(), which is used in
ssl_verify_cert_chain() and thus can be called at any time ssl_verify_cert_chain() and thus can be called at any time
during TLS/SSL handshakes so that thread-safety is essential. during TLS/SSL handshakes so that thread-safety is essential.
@ -766,19 +796,19 @@
for multi-threaded use, so it probably should be abolished. for multi-threaded use, so it probably should be abolished.
[Bodo Moeller] [Bodo Moeller]
*) Added Broadcom "ubsec" ENGINE to OpenSSL. +) Added Broadcom "ubsec" ENGINE to OpenSSL.
[Broadcom, tweaked and integrated by Geoff Thorpe] [Broadcom, tweaked and integrated by Geoff Thorpe]
*) Move common extension printing code to new function +) Move common extension printing code to new function
X509V3_print_extensions(). Reorganise OCSP print routines and X509V3_print_extensions(). Reorganise OCSP print routines and
implement some needed OCSP ASN1 functions. Add OCSP extensions. implement some needed OCSP ASN1 functions. Add OCSP extensions.
[Steve Henson] [Steve Henson]
*) New function X509_signature_print() to remove duplication in some +) New function X509_signature_print() to remove duplication in some
print routines. print routines.
[Steve Henson] [Steve Henson]
*) Add a special meaning when SET OF and SEQUENCE OF flags are both +) Add a special meaning when SET OF and SEQUENCE OF flags are both
set (this was treated exactly the same as SET OF previously). This set (this was treated exactly the same as SET OF previously). This
is used to reorder the STACK representing the structure to match the is used to reorder the STACK representing the structure to match the
encoding. This will be used to get round a problem where a PKCS7 encoding. This will be used to get round a problem where a PKCS7
@ -786,15 +816,15 @@
order did not reflect the encoded order. order did not reflect the encoded order.
[Steve Henson] [Steve Henson]
*) Reimplement the OCSP ASN1 module using the new code. +) Reimplement the OCSP ASN1 module using the new code.
[Steve Henson] [Steve Henson]
*) Update the X509V3 code to permit the use of an ASN1_ITEM structure +) Update the X509V3 code to permit the use of an ASN1_ITEM structure
for its ASN1 operations. The old style function pointers still exist for its ASN1 operations. The old style function pointers still exist
for now but they will eventually go away. for now but they will eventually go away.
[Steve Henson] [Steve Henson]
*) Merge in replacement ASN1 code from the ASN1 branch. This almost +) Merge in replacement ASN1 code from the ASN1 branch. This almost
completely replaces the old ASN1 functionality with a table driven completely replaces the old ASN1 functionality with a table driven
encoder and decoder which interprets an ASN1_ITEM structure describing encoder and decoder which interprets an ASN1_ITEM structure describing
the ASN1 module. Compatibility with the existing ASN1 API (i2d,d2i) is the ASN1 module. Compatibility with the existing ASN1 API (i2d,d2i) is
@ -802,21 +832,21 @@
has also been converted to the new form. has also been converted to the new form.
[Steve Henson] [Steve Henson]
*) Change BN_mod_exp_recp so that negative moduli are tolerated +) Change BN_mod_exp_recp so that negative moduli are tolerated
(the sign is ignored). Similarly, ignore the sign in BN_MONT_CTX_set (the sign is ignored). Similarly, ignore the sign in BN_MONT_CTX_set
so that BN_mod_exp_mont and BN_mod_exp_mont_word work so that BN_mod_exp_mont and BN_mod_exp_mont_word work
for negative moduli. for negative moduli.
[Bodo Moeller] [Bodo Moeller]
*) Fix BN_uadd and BN_usub: Always return non-negative results instead +) Fix BN_uadd and BN_usub: Always return non-negative results instead
of not touching the result's sign bit. of not touching the result's sign bit.
[Bodo Moeller] [Bodo Moeller]
*) BN_div bugfix: If the result is 0, the sign (res->neg) must not be +) BN_div bugfix: If the result is 0, the sign (res->neg) must not be
set. set.
[Bodo Moeller] [Bodo Moeller]
*) Changed the LHASH code to use prototypes for callbacks, and created +) Changed the LHASH code to use prototypes for callbacks, and created
macros to declare and implement thin (optionally static) functions macros to declare and implement thin (optionally static) functions
that provide type-safety and avoid function pointer casting for the that provide type-safety and avoid function pointer casting for the
type-specific callbacks. type-specific callbacks.
@ -825,7 +855,7 @@
*) Use better test patterns in bntest. *) Use better test patterns in bntest.
[Ulf Möller] [Ulf Möller]
*) Added Kerberos Cipher Suites to be used with TLS, as written in +) Added Kerberos Cipher Suites to be used with TLS, as written in
RFC 2712. RFC 2712.
[Veers Staats <staatsvr@asc.hpc.mil>, [Veers Staats <staatsvr@asc.hpc.mil>,
Jeffrey Altman <jaltman@columbia.edu>, via Richard Levitte] Jeffrey Altman <jaltman@columbia.edu>, via Richard Levitte]
@ -836,15 +866,15 @@
*) BN_rshift bugfix for n == 0. *) BN_rshift bugfix for n == 0.
[Bodo Moeller] [Bodo Moeller]
*) Reformat the FAQ so the different questions and answers can be divided +) Reformat the FAQ so the different questions and answers can be divided
in sections depending on the subject. in sections depending on the subject.
[Richard Levitte] [Richard Levitte]
*) Have the zlib compression code load ZLIB.DLL dynamically under +) Have the zlib compression code load ZLIB.DLL dynamically under
Windows. Windows.
[Richard Levitte] [Richard Levitte]
*) New function BN_mod_sqrt for computing square roots modulo a prime +) New function BN_mod_sqrt for computing square roots modulo a prime
(using the probabilistic Tonelli-Shanks algorithm unless (using the probabilistic Tonelli-Shanks algorithm unless
p == 3 (mod 4) or p == 5 (mod 8), which are cases that can p == 3 (mod 4) or p == 5 (mod 8), which are cases that can
be handled deterministically). be handled deterministically).
@ -860,7 +890,7 @@
result of the server certificate verification.) result of the server certificate verification.)
[Lutz Jaenicke] [Lutz Jaenicke]
*) Make BN_mod_inverse faster by explicitly handling small quotients +) Make BN_mod_inverse faster by explicitly handling small quotients
in the Euclid loop. (Speed gain about 20% for small moduli [256 or in the Euclid loop. (Speed gain about 20% for small moduli [256 or
512 bits], about 30% for larger ones [1024 or 2048 bits].) 512 bits], about 30% for larger ones [1024 or 2048 bits].)
[Bodo Moeller] [Bodo Moeller]
@ -881,17 +911,17 @@
does the actual work for ssl3_read_internal. does the actual work for ssl3_read_internal.
[Bodo Moeller] [Bodo Moeller]
*) New function BN_kronecker. +) New function BN_kronecker.
[Bodo Moeller] [Bodo Moeller]
*) Fix BN_gcd so that it works on negative inputs; the result is +) Fix BN_gcd so that it works on negative inputs; the result is
positive unless both parameters are zero. positive unless both parameters are zero.
Previously something reasonably close to an infinite loop was Previously something reasonably close to an infinite loop was
possible because numbers could be growing instead of shrinking possible because numbers could be growing instead of shrinking
in the implementation of Euclid's algorithm. in the implementation of Euclid's algorithm.
[Bodo Moeller] [Bodo Moeller]
*) Fix BN_is_word() and BN_is_one() macros to take into account the +) Fix BN_is_word() and BN_is_one() macros to take into account the
sign of the number in question. sign of the number in question.
Fix BN_is_word(a,w) to work correctly for w == 0. Fix BN_is_word(a,w) to work correctly for w == 0.
@ -909,20 +939,20 @@
happening the other way round. happening the other way round.
[Geoff Thorpe] [Geoff Thorpe]
*) New function BN_swap. +) New function BN_swap.
[Bodo Moeller] [Bodo Moeller]
*) Use BN_nnmod instead of BN_mod in crypto/bn/bn_exp.c so that +) Use BN_nnmod instead of BN_mod in crypto/bn/bn_exp.c so that
the exponentiation functions are more likely to produce reasonable the exponentiation functions are more likely to produce reasonable
results on negative inputs. results on negative inputs.
[Bodo Moeller] [Bodo Moeller]
*) Change BN_mod_mul so that the result is always non-negative. +) Change BN_mod_mul so that the result is always non-negative.
Previously, it could be negative if one of the factors was negative; Previously, it could be negative if one of the factors was negative;
I don't think anyone really wanted that behaviour. I don't think anyone really wanted that behaviour.
[Bodo Moeller] [Bodo Moeller]
*) Move BN_mod_... functions into new file crypto/bn/bn_mod.c +) Move BN_mod_... functions into new file crypto/bn/bn_mod.c
(except for exponentiation, which stays in crypto/bn/bn_exp.c, (except for exponentiation, which stays in crypto/bn/bn_exp.c,
and BN_mod_mul_reciprocal, which stays in crypto/bn/bn_recp.c) and BN_mod_mul_reciprocal, which stays in crypto/bn/bn_recp.c)
and add new functions: and add new functions:
@ -948,7 +978,7 @@
be reduced modulo m. be reduced modulo m.
[Lenka Fibikova <fibikova@exp-math.uni-essen.de>, Bodo Moeller] [Lenka Fibikova <fibikova@exp-math.uni-essen.de>, Bodo Moeller]
*) Remove a few calls to bn_wexpand() in BN_sqr() (the one in there +) Remove a few calls to bn_wexpand() in BN_sqr() (the one in there
was actually never needed) and in BN_mul(). The removal in BN_mul() was actually never needed) and in BN_mul(). The removal in BN_mul()
required a small change in bn_mul_part_recursive() and the addition required a small change in bn_mul_part_recursive() and the addition
of the functions bn_cmp_part_words(), bn_sub_part_words() and of the functions bn_cmp_part_words(), bn_sub_part_words() and
@ -957,7 +987,7 @@
differing sizes. differing sizes.
[Richard Levitte] [Richard Levitte]
*) In 'openssl passwd', verify passwords read from the terminal +) In 'openssl passwd', verify passwords read from the terminal
unless the '-salt' option is used (which usually means that unless the '-salt' option is used (which usually means that
verification would just waste user's time since the resulting verification would just waste user's time since the resulting
hash is going to be compared with some given password hash) hash is going to be compared with some given password hash)
@ -969,28 +999,28 @@
cause any problems. cause any problems.
[Bodo Moeller] [Bodo Moeller]
*) Remove all references to RSAref, since there's no more need for it. +) Remove all references to RSAref, since there's no more need for it.
[Richard Levitte] [Richard Levitte]
*) Increase BN_CTX_NUM (the number of BIGNUMs in a BN_CTX) to 16. *) Increase BN_CTX_NUM (the number of BIGNUMs in a BN_CTX) to 16.
The previous value, 12, was not always sufficient for BN_mod_exp(). The previous value, 12, was not always sufficient for BN_mod_exp().
[Bodo Moeller] [Bodo Moeller]
*) Make DSO load along a path given through an environment variable +) Make DSO load along a path given through an environment variable
(SHLIB_PATH) with shl_load(). (SHLIB_PATH) with shl_load().
[Richard Levitte] [Richard Levitte]
*) Constify the ENGINE code as a result of BIGNUM constification. +) Constify the ENGINE code as a result of BIGNUM constification.
Also constify the RSA code and most things related to it. In a Also constify the RSA code and most things related to it. In a
few places, most notable in the depth of the ASN.1 code, ugly few places, most notable in the depth of the ASN.1 code, ugly
casts back to non-const were required (to be solved at a later casts back to non-const were required (to be solved at a later
time) time)
[Richard Levitte] [Richard Levitte]
*) Make it so the openssl application has all engines loaded by default. +) Make it so the openssl application has all engines loaded by default.
[Richard Levitte] [Richard Levitte]
*) Constify the BIGNUM routines a little more. +) Constify the BIGNUM routines a little more.
[Richard Levitte] [Richard Levitte]
*) Make sure that shared libraries get the internal name engine with *) Make sure that shared libraries get the internal name engine with
@ -999,7 +1029,7 @@
be changed again when we can guarantee backward binary compatibility. be changed again when we can guarantee backward binary compatibility.
[Richard Levitte] [Richard Levitte]
*) Add the following functions: +) Add the following functions:
ENGINE_load_cswift() ENGINE_load_cswift()
ENGINE_load_chil() ENGINE_load_chil()
@ -1017,66 +1047,66 @@
declarations (they differed!). declarations (they differed!).
[Richard Levitte] [Richard Levitte]
*) 'openssl engine' can now list capabilities. +) 'openssl engine' can now list capabilities.
[Richard Levitte] [Richard Levitte]
*) Better error reporting in 'openssl engine'. +) Better error reporting in 'openssl engine'.
[Richard Levitte] [Richard Levitte]
*) Never call load_dh_param(NULL) in s_server. +) Never call load_dh_param(NULL) in s_server.
[Bodo Moeller] [Bodo Moeller]
*) Add engine application. It can currently list engines by name and +) Add engine application. It can currently list engines by name and
identity, and test if they are actually available. identity, and test if they are actually available.
[Richard Levitte] [Richard Levitte]
*) Add support for shared libraries under Irix. +) Add support for shared libraries under Irix.
[Albert Chin-A-Young <china@thewrittenword.com>] [Albert Chin-A-Young <china@thewrittenword.com>]
*) Improve RPM specification file by forcing symbolic linking and making +) Improve RPM specification file by forcing symbolic linking and making
sure the installed documentation is also owned by root.root. sure the installed documentation is also owned by root.root.
[Damien Miller <djm@mindrot.org>] [Damien Miller <djm@mindrot.org>]
*) Add configuration option to build on Linux on both big-endian and +) Add configuration option to build on Linux on both big-endian and
little-endian MIPS. little-endian MIPS.
[Ralf Baechle <ralf@uni-koblenz.de>] [Ralf Baechle <ralf@uni-koblenz.de>]
*) Give the OpenSSL applications more possibilities to make use of +) Give the OpenSSL applications more possibilities to make use of
keys (public as well as private) handled by engines. keys (public as well as private) handled by engines.
[Richard Levitte] [Richard Levitte]
*) Add OCSP code that comes from CertCo. +) Add OCSP code that comes from CertCo.
[Richard Levitte] [Richard Levitte]
*) Add VMS support for the Rijndael code. +) Add VMS support for the Rijndael code.
[Richard Levitte] [Richard Levitte]
*) Added untested support for Nuron crypto accelerator. +) Added untested support for Nuron crypto accelerator.
[Ben Laurie] [Ben Laurie]
*) Add support for external cryptographic devices. This code was +) Add support for external cryptographic devices. This code was
previously distributed separately as the "engine" branch. previously distributed separately as the "engine" branch.
[Geoff Thorpe, Richard Levitte] [Geoff Thorpe, Richard Levitte]
*) Rework the filename-translation in the DSO code. It is now possible to +) Rework the filename-translation in the DSO code. It is now possible to
have far greater control over how a "name" is turned into a filename have far greater control over how a "name" is turned into a filename
depending on the operating environment and any oddities about the depending on the operating environment and any oddities about the
different shared library filenames on each system. different shared library filenames on each system.
[Geoff Thorpe] [Geoff Thorpe]
*) Support threads on FreeBSD-elf in Configure. +) Support threads on FreeBSD-elf in Configure.
[Richard Levitte] [Richard Levitte]
*) Add the possibility to create shared libraries on HP-UX +) Add the possibility to create shared libraries on HP-UX
[Richard Levitte] [Richard Levitte]
*) Fix for SHA1 assembly problem with MASM: it produces +) Fix for SHA1 assembly problem with MASM: it produces
warnings about corrupt line number information when assembling warnings about corrupt line number information when assembling
with debugging information. This is caused by the overlapping with debugging information. This is caused by the overlapping
of two sections. of two sections.
[Bernd Matthes <mainbug@celocom.de>, Steve Henson] [Bernd Matthes <mainbug@celocom.de>, Steve Henson]
*) NCONF changes. +) NCONF changes.
NCONF_get_number() has no error checking at all. As a replacement, NCONF_get_number() has no error checking at all. As a replacement,
NCONF_get_number_e() is defined (_e for "error checking") and is NCONF_get_number_e() is defined (_e for "error checking") and is
promoted strongly. The old NCONF_get_number is kept around for promoted strongly. The old NCONF_get_number is kept around for
@ -1105,24 +1135,24 @@
static ones. static ones.
[Richard Levitte] [Richard Levitte]
*) Fix for non blocking accept BIOs. Added new I/O special reason +) Fix for non blocking accept BIOs. Added new I/O special reason
BIO_RR_ACCEPT to cover this case. Previously use of accept BIOs BIO_RR_ACCEPT to cover this case. Previously use of accept BIOs
with non blocking I/O was not possible because no retry code was with non blocking I/O was not possible because no retry code was
implemented. Also added new SSL code SSL_WANT_ACCEPT to cover implemented. Also added new SSL code SSL_WANT_ACCEPT to cover
this case. this case.
[Steve Henson] [Steve Henson]
*) Added the beginnings of Rijndael support. +) Added the beginnings of Rijndael support.
[Ben Laurie] [Ben Laurie]
*) Fix for bug in DirectoryString mask setting. Add support for +) Fix for bug in DirectoryString mask setting. Add support for
X509_NAME_print_ex() in 'req' and X509_print_ex() function X509_NAME_print_ex() in 'req' and X509_print_ex() function
to allow certificate printing to more controllable, additional to allow certificate printing to more controllable, additional
'certopt' option to 'x509' to allow new printing options to be 'certopt' option to 'x509' to allow new printing options to be
set. set.
[Steve Henson] [Steve Henson]
*) Clean old EAY MD5 hack from e_os.h. +) Clean old EAY MD5 hack from e_os.h.
[Richard Levitte] [Richard Levitte]
*) Fix SSL_CTX_set_read_ahead macro to actually use its argument. *) Fix SSL_CTX_set_read_ahead macro to actually use its argument.