The default implementation of DSA_METHOD has an interdependence on the
authorGeoff Thorpe <geoff@openssl.org>
Tue, 11 Mar 2003 01:49:21 +0000 (01:49 +0000)
committerGeoff Thorpe <geoff@openssl.org>
Tue, 11 Mar 2003 01:49:21 +0000 (01:49 +0000)
commit879650b866996f343e494ebe04503fedd534e5a2
tree6d4177cb2f0a3efa49a983e41384763c173ea37a
parent176f31ddec84a51d35871dc021a013df9f3cbccd
The default implementation of DSA_METHOD has an interdependence on the
dsa_mod_exp() and bn_mod_exp() handlers from dsa_do_verify() and
dsa_sign_setup(). When another DSA_METHOD implementation does not define
these lower-level handlers, it becomes impossible to do a fallback to
software on errors using a simple DSA_OpenSSL()->fn(key).

This change allows the default DSA_METHOD to function in such circumstances
by only using dsa_mod_exp() and bn_mod_exp() handlers if they exist,
otherwise using BIGNUM implementations directly (which is what those
handlers did before this change). There should be no noticable difference
for the software case, or indeed any custom case that didn't already
segfault, except perhaps that there is now one less level of indirection in
all cases.

PR: 507
CHANGES
crypto/dsa/dsa_ossl.c