Commit 58ae65cd authored by Geoff Thorpe's avatar Geoff Thorpe
Browse files

Update ECDSA and ECDH for OPENSSL_NO_ENGINE.

Reported by: Maxim Masiutin
Submitted by: Nils Larsch
parent 5b0f1f7d
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -84,7 +84,9 @@ int MAIN(int, char **);

int MAIN(int argc, char **argv)
{
#ifndef OPENSSL_NO_ENGINE
	ENGINE 	*e = NULL;
#endif
	int 	ret = 1;
	EC_KEY 	*eckey = NULL;
	int 	i, badops = 0;
@@ -249,7 +251,9 @@ bad:

	ERR_load_crypto_strings();

#ifndef OPENSSL_NO_ENGINE
        e = setup_engine(bio_err, engine, 0);
#endif

	if(!app_passwd(bio_err, passargin, passargout, &passin, &passout)) 
		{
+4 −0
Original line number Diff line number Diff line
@@ -127,7 +127,9 @@ int MAIN(int argc, char **argv)
	char	*infile = NULL, *outfile = NULL, *prog;
	BIO 	*in = NULL, *out = NULL;
	int 	informat, outformat, noout = 0, C = 0, ret = 1;
#ifndef OPENSSL_NO_ENGINE
	ENGINE	*e = NULL;
#endif
	char	*engine = NULL;

	BIGNUM	*ec_p = NULL, *ec_a = NULL, *ec_b = NULL,
@@ -335,7 +337,9 @@ bad:
			}
		}

#ifndef OPENSSL_NO_ENGINE
	e = setup_engine(bio_err, engine, 0);
#endif

	if (list_curves)
		{
+2 −0
Original line number Diff line number Diff line
@@ -68,7 +68,9 @@
 */

#include "ecdh.h"
#ifndef OPENSSL_NO_ENGINE
#include <openssl/engine.h>
#endif

int ECDH_compute_key(void *out, size_t outlen, const EC_POINT *pub_key, EC_KEY *eckey,
                     void *(*KDF)(void *in, size_t inlen, void *out, size_t outlen))
+8 −0
Original line number Diff line number Diff line
@@ -69,7 +69,9 @@

#include "ecdh.h"
#include <string.h>
#ifndef OPENSSL_NO_ENGINE
#include <openssl/engine.h>
#endif
#include <openssl/err.h>

const char *ECDH_version="ECDH" OPENSSL_VERSION_PTEXT;
@@ -105,11 +107,13 @@ int ECDH_set_method(EC_KEY *eckey, const ECDH_METHOD *meth)
        if (mtmp->finish)
		mtmp->finish(eckey);
#endif
#ifndef OPENSSL_NO_ENGINE
	if (ecdh->engine)
		{
		ENGINE_finish(ecdh->engine);
		ecdh->engine = NULL;
		}
#endif
        ecdh->meth = meth;
#if 0
        if (meth->init) 
@@ -139,6 +143,7 @@ ECDH_DATA *ECDH_DATA_new_method(ENGINE *engine)

	ret->meth = ECDH_get_default_method();
	ret->engine = engine;
#ifndef OPENSSL_NO_ENGINE
	if (!ret->engine)
		ret->engine = ENGINE_get_default_ECDH();
	if (ret->engine)
@@ -152,6 +157,7 @@ ECDH_DATA *ECDH_DATA_new_method(ENGINE *engine)
			return NULL;
			}
		}
#endif

	ret->flags = ret->meth->flags;
	CRYPTO_new_ex_data(CRYPTO_EX_INDEX_ECDH, ret, &ret->ex_data);
@@ -172,8 +178,10 @@ void ECDH_DATA_free(ECDH_DATA *r)
	if (r->meth->finish)
		r->meth->finish(r);
#endif
#ifndef OPENSSL_NO_ENGINE
	if (r->engine)
		ENGINE_finish(r->engine);
#endif

	CRYPTO_free_ex_data(CRYPTO_EX_INDEX_ECDH, r, &r->ex_data);

+8 −0
Original line number Diff line number Diff line
@@ -55,7 +55,9 @@

#include <string.h>
#include "ecdsa.h"
#ifndef OPENSSL_NO_ENGINE
#include <openssl/engine.h>
#endif
#include <openssl/err.h>
#include <openssl/bn.h>

@@ -92,11 +94,13 @@ int ECDSA_set_method(EC_KEY *eckey, const ECDSA_METHOD *meth)
        if (mtmp->finish)
		mtmp->finish(eckey);
#endif
#ifndef OPENSSL_NO_ENGINE
	if (ecdsa->engine)
	{
		ENGINE_finish(ecdsa->engine);
		ecdsa->engine = NULL;
	}
#endif
        ecdsa->meth = meth;
#if 0
        if (meth->init) 
@@ -129,6 +133,7 @@ ECDSA_DATA *ECDSA_DATA_new_method(ENGINE *engine)

	ret->meth = ECDSA_get_default_method();
	ret->engine = engine;
#ifndef OPENSSL_NO_ENGINE
	if (!ret->engine)
		ret->engine = ENGINE_get_default_ECDSA();
	if (ret->engine)
@@ -142,6 +147,7 @@ ECDSA_DATA *ECDSA_DATA_new_method(ENGINE *engine)
			return NULL;
		}
	}
#endif

	ret->flags = ret->meth->flags;
	CRYPTO_new_ex_data(CRYPTO_EX_INDEX_ECDSA, ret, &ret->ex_data);
@@ -167,8 +173,10 @@ void ECDSA_DATA_free(ECDSA_DATA *r)
	if (r->meth->finish)
		r->meth->finish(r);
#endif
#ifndef OPENSSL_NO_ENGINE
	if (r->engine)
		ENGINE_finish(r->engine);
#endif

	CRYPTO_free_ex_data(CRYPTO_EX_INDEX_ECDSA, r, &r->ex_data);

Loading