if(req) i = X509_REQ_add_extensions(req, extlist); else i = 1; sk_X509_EXTENSION_pop_free(extlist, X509_EXTENSION_free); return i; }
int X509V3_EXT_REQ_add_conf(LHASH *conf, X509V3_CTX *ctx, char *section,	     X509_REQ *req){	X509_EXTENSION *ext;	STACK_OF(X509_EXTENSION) *extlist = NULL;	STACK_OF(CONF_VALUE) *nval;	CONF_VALUE *val;		int i;	if(!(nval = CONF_get_section(conf, section))) return 0;	for(i = 0; i < sk_CONF_VALUE_num(nval); i++) {		val = sk_CONF_VALUE_value(nval, i);		if(!(ext = X509V3_EXT_conf(conf, ctx, val->name, val->value)))								return 0;		if(!extlist) extlist = sk_X509_EXTENSION_new_null();		sk_X509_EXTENSION_push(extlist, ext);	}	if(req) i = X509_REQ_add_extensions(req, extlist);	else i = 1;	sk_X509_EXTENSION_pop_free(extlist, X509_EXTENSION_free);	return i;}