X509V3_set_conf_lhash(&ctx, conf); if (!X509V3_EXT_add_conf(conf, &ctx, section, x)) goto err;
X509V3_set_nconf(&ctx, conf); if (!X509V3_EXT_add_nconf(conf, &ctx, section, x)) goto err;
static int sign(X509 *x, EVP_PKEY *pkey, int days, int clrext, const EVP_MD *digest, 						LHASH *conf, char *section)	{	EVP_PKEY *pktmp;	pktmp = X509_get_pubkey(x);	EVP_PKEY_copy_parameters(pktmp,pkey);	EVP_PKEY_save_parameters(pktmp,1);	EVP_PKEY_free(pktmp);	if (!X509_set_issuer_name(x,X509_get_subject_name(x))) goto err;	if (X509_gmtime_adj(X509_get_notBefore(x),0) == NULL) goto err;	/* Lets just make it 12:00am GMT, Jan 1 1970 */	/* memcpy(x->cert_info->validity->notBefore,"700101120000Z",13); */	/* 28 days to be certified */	if (X509_gmtime_adj(X509_get_notAfter(x),(long)60*60*24*days) == NULL)		goto err;	if (!X509_set_pubkey(x,pkey)) goto err;	if (clrext)		{		while (X509_get_ext_count(x) > 0) X509_delete_ext(x, 0);		}	if (conf)		{		X509V3_CTX ctx;		X509_set_version(x,2); /* version 3 certificate */                X509V3_set_ctx(&ctx, x, x, NULL, NULL, 0);                X509V3_set_conf_lhash(&ctx, conf);                if (!X509V3_EXT_add_conf(conf, &ctx, section, x)) goto err;		}	if (!X509_sign(x,pkey,digest)) goto err;	return 1;err:	ERR_print_errors(bio_err);	return 0;	}