Richard Levitte [Wed, 5 Jul 2000 02:45:36 +0000 (02:45 +0000)]
I got sick and tired of having to keep track of NIDs when such a thing
could be done automagically, much like the numbering in libeay.num and
ssleay.num. The solution works as follows:
- New object identifiers are inserted in objects.txt, following the
syntax given in objects.README.
- objects.pl is used to process obj_mac.num and create a new
obj_mac.h.
- obj_dat.pl is used to create a new obj_dat.h, using the data in
obj_mac.h.
This is currently kind of a hack, and the perl code in objects.pl
isn't very elegant, but it works as I intended. The simplest way to
check that it worked correctly is to look in obj_dat.h and check the
array nid_objs and make sure the objects haven't moved around (this is
important!). Additions are OK, as well as consistent name changes.
Bodo Möller [Fri, 23 Jun 2000 18:00:16 +0000 (18:00 +0000)]
BSD-style MD5-based password algorithm in 'openssl passwd'.
(Still needs to be tested against the original using sample passwords
of different length.)
Richard Levitte [Thu, 22 Jun 2000 22:07:27 +0000 (22:07 +0000)]
Move add_oid_section to apps.c, so it can be shared by several
applications. Also, have it and the certificate and key loading
functions take a BIO argument for error output.
Richard Levitte [Thu, 22 Jun 2000 18:02:23 +0000 (18:02 +0000)]
On case-insensitive systems, the 'install' target gets matched against
the 'INSTALL' file, which means that 9 times of 10, the BlowFish
headers won't get installed. Avoid this in the same way it's done in
crypto/des/Makefile.ssl, where someone apparently has thought of this...
Change mkstack.pl so it now sorts each group
into lexical order. Previously it depended on
the order of files in the directory.
This should now mean that all systems will
agree on the order of safestack.h and will
not change it needlessly and avoid massive
needless commits to safestack.h in future.
Geoff Thorpe [Wed, 21 Jun 2000 14:12:25 +0000 (14:12 +0000)]
* This adds some checking to the 'dlfcn' DSO_METHOD that at least lets
it cope with OpenBSD which doesn't understand "RTLD_NOW".
* Added the dso_scheme config string entry for OpenBSD-x86 to give it
DSO support.
* 'make update' that has also absorbed some of Steve's mkstack changes
for the ASN-related macros.
This is mostly a work around for the old VC++ problem
that it treats func() as func(void).
Various prototypes had been added to 'compare' function
pointers that triggered this. This could be fixed by removing
the prototype, adding function pointer casts to every call or
changing the passed function to use the expected arguments.
I mostly did the latter.
The mkdef.pl script was modified to remove the typesafe
functions which no longer exist.
Oh and some functions called OPENSSL_freeLibrary() were
changed back to FreeLibrary(), wonder how that happened :-)
Richard Levitte [Mon, 19 Jun 2000 16:38:27 +0000 (16:38 +0000)]
Add the missing callback pointer handling functions.
Also, make sure empty slots of the dynamic lock stack are used.
Actually, I'm not really sure this is the right thing to do, and may
remove it, with an endlessly growing stack as result...
Richard Levitte [Mon, 19 Jun 2000 13:38:09 +0000 (13:38 +0000)]
Redo the support for dynamic locks. First of all, it was terribly
insecure, so a static lock is added to isolate the sensitive parts.
Also, to avoid one thread freeing a lock that is used by another, a
reference counter is added.
Richard Levitte [Sun, 18 Jun 2000 15:59:04 +0000 (15:59 +0000)]
Add support for dynamically created and destroyed mutexes. This will
be needed in some ENGINE code, and might serve elsewhere as well.
Note that it's implemented in such a way that the locking itself is
done through the same CRYPTO_lock function as the static locks.
WARNING: This is currently experimental and untested code (it will get
tested soon, though :-)).
Richard Levitte [Sun, 18 Jun 2000 14:06:40 +0000 (14:06 +0000)]
First of all, with the current macros, we should never get any
type-specific stack function. Second, even when we don't build any of
those functions, DECLARE_STACK_OF lines should not find themselves
into $def.
Bodo Möller [Sat, 17 Jun 2000 23:41:44 +0000 (23:41 +0000)]
Using speaking "variable" names in macros so that e.g. grepping for
sk_whatever_insert and sk_whatever_set immediately reveals the subtle
difference in parameter order.
Change mkstack.pl so that safestack.h is not rewritten when
nothing has changed.
Safe stack reorganisation in terms of function casts.
After some messing around this seems to work but needs
a few more tests. Working out the syntax for sk_set_cmp_func()
(cast it to a function that itself returns a function pointer)
was painful :-(
Needs some testing to see what other compilers think of this
syntax.
Richard Levitte [Fri, 16 Jun 2000 15:25:41 +0000 (15:25 +0000)]
Change to have a single library that works on both Win9x and WinNT.
As far as I understand, it still needs to be compiled on NT...
Contributed by Arne Ansper <arne@ats.cyber.ee>
Geoff Thorpe [Fri, 16 Jun 2000 10:45:36 +0000 (10:45 +0000)]
Currently the DSO_METHOD interface has one entry point to bind all
"symbols" including functions (of all prototypes( and variables. Whilst
casting any function type to another violates ANSI C (I believe), it is
a necessary evil in shared-library APIs. However, it is quite
conceivable that functions in general and data symbols could very well
be represented differently to each other on some systems, as Bodo said;
> Since the function/object distinction is a lot more likely to be
> important on real-life platforms supporting DSO *and* it can be quite
> easily done *and* it will silence compilers that don't like
> assignments from void pointers to function pointer variables, why
> not do it?
I agree. So this change splits the "dso_bind" handler in DSO_METHOD
into "dso_bind_var" and "dso_bind_func". Similarly the exported
function DSO_bind() has been split in two. I've also put together
changes for the various DSO_METHOD implementations, but so far only
DSO_dlfcn() has been tested. BTW: The prototype for dso_bind had been
a bit strange so I've taken the opportunity to change its shape (in
both variations).
Also, the README has been updated - particularly with a note about
using customised native name-translation for shared libraries (and that
you can't do it yet).
Geoff Thorpe [Tue, 13 Jun 2000 12:59:38 +0000 (12:59 +0000)]
Enable DSO support on alpha (OSF1), cc and gcc.
Also, "make update" has added some missing functions to libeay.num,
updated the TABLE for the alpha changes, and updated thousands of
dependancies that have changed from recent commits.
Bodo Möller [Sat, 10 Jun 2000 12:05:52 +0000 (12:05 +0000)]
In longer tests with g=2, DH exchange does not become quite as fast
as expected -- maybe it's the different processor, maybe my
previous timings were too inaccurate.
Bodo Möller [Sat, 10 Jun 2000 10:08:31 +0000 (10:08 +0000)]
BN_mod_exp_mont_word entry:
Don't give performance gain estimates that appear to be more precise
than they really are, especially when they are wrong
(2/(1/1.15 + 1) = ca. 1.0698).
would make sure that things like ASN1_UTCTIME_print() wasn't defined
unless you moved the inclusion of bio.h to above the inclusion of
x509.h. The reason is that x509.h includes asn1.h, and the
declaration of ASN1_UTCTIME_print() depended on the definition of
HEADER_BIO_H. That's what I call an obscure bug.
Instead, this change makes sure that whatever header files are needed
for the correct process of one header file are included automagically,
and that the definitions of, for example, BIO-related things are
dependent on the absence of the NO_{foo} macros. This is also
consistent with the way parts of OpenSSL can be excluded at will.
Bodo Möller [Thu, 8 Jun 2000 09:39:28 +0000 (09:39 +0000)]
Use the equivalent of a sliding window (without precomputation
because we're only handling words anyway) in BN_mod_exp_mont_word
making it a little faster for very small exponents,
and adjust the performance gain estimate in CHANGES according
to slightly more thorough measurements.
(15% faster than BN_mod_exp_mont for "large" base,
20% faster than BN_mod_exp_mont for small base.)
Andy Polyakov [Tue, 6 Jun 2000 15:21:12 +0000 (15:21 +0000)]
Compaq C warns that "the expression 'p=scan_esc(p)' modifies the variable
'p' more than once without an intervening sequence point. This behavior
is undefined." What it essentially complains about is 'p=p+=1'. Now it's
changed to 'p=p+1'...
Richard Levitte [Thu, 1 Jun 2000 22:19:21 +0000 (22:19 +0000)]
There have been a number of complaints from a number of sources that names
like Malloc, Realloc and especially Free conflict with already existing names
on some operating systems or other packages. That is reason enough to change
the names of the OpenSSL memory allocation macros to something that has a
better chance of being unique, like prepending them with OPENSSL_.
This change includes all the name changes needed throughout all C files.