ECDSAerr(ECDSA_F_ECDSA_DATA_NEW, ERR_R_ENGINE_LIB);
ECDSAerr(ECDSA_F_ECDSA_DATA_NEW_METHOD, ERR_R_ENGINE_LIB);
ECDSA_DATA *ECDSA_DATA_new_method(ENGINE *engine){	ECDSA_DATA *ret;	ret=(ECDSA_DATA *)OPENSSL_malloc(sizeof(ECDSA_DATA));	if (ret == NULL)	{		ECDSAerr(ECDSA_F_ECDSA_DATA_NEW, ERR_R_MALLOC_FAILURE);		return(NULL);	}	ret->init = NULL;	ret->finish = ecdsa_finish;	ret->kinv = NULL;	ret->r    = NULL;	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)	{		ret->meth = ENGINE_get_ECDSA(ret->engine);		if (!ret->meth)		{			ECDSAerr(ECDSA_F_ECDSA_DATA_NEW, ERR_R_ENGINE_LIB);			ENGINE_finish(ret->engine);			OPENSSL_free(ret);			return NULL;		}	}#endif	ret->flags = ret->meth->flags;	CRYPTO_new_ex_data(CRYPTO_EX_INDEX_ECDSA, ret, &ret->ex_data);#if 0	if ((ret->meth->init != NULL) && !ret->meth->init(ret))	{		CRYPTO_free_ex_data(CRYPTO_EX_INDEX_ECDSA, ret, &ret->ex_data);		OPENSSL_free(ret);		ret=NULL;	}#endif		return(ret);}