亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? req.c

?? openssl中req程序的VC實現
?? C
?? 第 1 頁 / 共 3 頁
字號:
		if 	(outformat == FORMAT_ASN1)			i=i2d_X509_REQ_bio(out,req);		else if (outformat == FORMAT_PEM) {			if(newhdr) i=PEM_write_bio_X509_REQ_NEW(out,req);			else i=PEM_write_bio_X509_REQ(out,req);		} else {			BIO_printf(bio_err,"bad output format specified for outfile\n");			goto end;			}		if (!i)			{			BIO_printf(bio_err,"unable to write X509 request\n");			goto end;			}		}	if (!noout && x509 && (x509ss != NULL))		{		if 	(outformat == FORMAT_ASN1)			i=i2d_X509_bio(out,x509ss);		else if (outformat == FORMAT_PEM)			i=PEM_write_bio_X509(out,x509ss);		else	{			BIO_printf(bio_err,"bad output format specified for outfile\n");			goto end;			}		if (!i)			{			BIO_printf(bio_err,"unable to write X509 certificate\n");			goto end;			}		}	ex=0;end:	if (ex)		{		ERR_print_errors(bio_err);		}	if ((req_conf != NULL) && (req_conf != config)) CONF_free(req_conf);	BIO_free(in);	BIO_free_all(out);	EVP_PKEY_free(pkey);	X509_REQ_free(req);	X509_free(x509ss);	if(passargin && passin) OPENSSL_free(passin);	if(passargout && passout) OPENSSL_free(passout);	OBJ_cleanup();#ifndef NO_DSA	if (dsa_params != NULL) DSA_free(dsa_params);#endif	OPENSSL_EXIT(ex);	}static int make_REQ(X509_REQ *req, EVP_PKEY *pkey, int attribs)	{	int ret=0,i;	char no_prompt = 0;	STACK_OF(CONF_VALUE) *dn_sk, *attr_sk = NULL;	char *tmp, *dn_sect,*attr_sect;	tmp=CONF_get_string(req_conf,SECTION,PROMPT);	if((tmp != NULL) && !strcmp(tmp, "no")) no_prompt = 1;	dn_sect=CONF_get_string(req_conf,SECTION,DISTINGUISHED_NAME);	if (dn_sect == NULL)		{		BIO_printf(bio_err,"unable to find '%s' in config\n",			DISTINGUISHED_NAME);		goto err;		}	dn_sk=CONF_get_section(req_conf,dn_sect);	if (dn_sk == NULL)		{		BIO_printf(bio_err,"unable to get '%s' section\n",dn_sect);		goto err;		}	attr_sect=CONF_get_string(req_conf,SECTION,ATTRIBUTES);	if (attr_sect == NULL)		attr_sk=NULL;	else		{		attr_sk=CONF_get_section(req_conf,attr_sect);		if (attr_sk == NULL)			{			BIO_printf(bio_err,"unable to get '%s' section\n",attr_sect);			goto err;			}		}	/* setup version number */	if (!X509_REQ_set_version(req,0L)) goto err; /* version 1 */	if(no_prompt) i = auto_info(req, dn_sk, attr_sk, attribs);	else i = prompt_info(req, dn_sk, dn_sect, attr_sk, attr_sect, attribs);	if(!i) goto err;	if (!X509_REQ_set_pubkey(req,pkey)) goto err;	ret=1;err:	return(ret);	}static int prompt_info(X509_REQ *req,		STACK_OF(CONF_VALUE) *dn_sk, char *dn_sect,		STACK_OF(CONF_VALUE) *attr_sk, char *attr_sect, int attribs)	{	int i;	char *p,*q;	char buf[100];	int nid,min,max;	char *type,*def,*value;	CONF_VALUE *v;	X509_NAME *subj;	subj = X509_REQ_get_subject_name(req);	BIO_printf(bio_err,"You are about to be asked to enter information that will be incorporated\n");	BIO_printf(bio_err,"into your certificate request.\n");	BIO_printf(bio_err,"What you are about to enter is what is called a Distinguished Name or a DN.\n");	BIO_printf(bio_err,"There are quite a few fields but you can leave some blank\n");	BIO_printf(bio_err,"For some fields there will be a default value,\n");	BIO_printf(bio_err,"If you enter '.', the field will be left blank.\n");	BIO_printf(bio_err,"-----\n");	if (sk_CONF_VALUE_num(dn_sk))		{		i= -1;start:		for (;;)			{			i++;			if (sk_CONF_VALUE_num(dn_sk) <= i) break;			v=sk_CONF_VALUE_value(dn_sk,i);			p=q=NULL;			type=v->name;			if(!check_end(type,"_min") || !check_end(type,"_max") ||				!check_end(type,"_default") ||					 !check_end(type,"_value")) continue;			/* Skip past any leading X. X: X, etc to allow for			 * multiple instances 			 */			for(p = v->name; *p ; p++) 				if ((*p == ':') || (*p == ',') ||							 (*p == '.')) {					p++;					if(*p) type = p;					break;				}			/* If OBJ not recognised ignore it */			if ((nid=OBJ_txt2nid(type)) == NID_undef) goto start;			sprintf(buf,"%s_default",v->name);			if ((def=CONF_get_string(req_conf,dn_sect,buf)) == NULL)				def="";							sprintf(buf,"%s_value",v->name);			if ((value=CONF_get_string(req_conf,dn_sect,buf)) == NULL)				value=NULL;			sprintf(buf,"%s_min",v->name);			min=(int)CONF_get_number(req_conf,dn_sect,buf);			sprintf(buf,"%s_max",v->name);			max=(int)CONF_get_number(req_conf,dn_sect,buf);			if (!add_DN_object(subj,v->value,def,value,nid,				min,max))				return 0;			}		if (X509_NAME_entry_count(subj) == 0)			{			BIO_printf(bio_err,"error, no objects specified in config file\n");			return 0;			}		if (attribs)			{			if ((attr_sk != NULL) && (sk_CONF_VALUE_num(attr_sk) > 0))				{				BIO_printf(bio_err,"\nPlease enter the following 'extra' attributes\n");				BIO_printf(bio_err,"to be sent with your certificate request\n");				}			i= -1;start2:			for (;;)				{				i++;				if ((attr_sk == NULL) ||					    (sk_CONF_VALUE_num(attr_sk) <= i))					break;				v=sk_CONF_VALUE_value(attr_sk,i);				type=v->name;				if ((nid=OBJ_txt2nid(type)) == NID_undef)					goto start2;				sprintf(buf,"%s_default",type);				if ((def=CONF_get_string(req_conf,attr_sect,buf))					== NULL)					def="";								sprintf(buf,"%s_value",type);				if ((value=CONF_get_string(req_conf,attr_sect,buf))					== NULL)					value=NULL;				sprintf(buf,"%s_min",type);				min=(int)CONF_get_number(req_conf,attr_sect,buf);				sprintf(buf,"%s_max",type);				max=(int)CONF_get_number(req_conf,attr_sect,buf);				if (!add_attribute_object(req,					v->value,def,value,nid,min,max))					return 0;				}			}		}	else		{		BIO_printf(bio_err,"No template, please set one up.\n");		return 0;		}	return 1;	}static int auto_info(X509_REQ *req, STACK_OF(CONF_VALUE) *dn_sk,			STACK_OF(CONF_VALUE) *attr_sk, int attribs)	{	int i;	char *p,*q;	char *type;	CONF_VALUE *v;	X509_NAME *subj;	subj = X509_REQ_get_subject_name(req);	for (i = 0; i < sk_CONF_VALUE_num(dn_sk); i++)		{		v=sk_CONF_VALUE_value(dn_sk,i);		p=q=NULL;		type=v->name;		/* Skip past any leading X. X: X, etc to allow for		 * multiple instances 		 */		for(p = v->name; *p ; p++) #ifndef CHARSET_EBCDIC			if ((*p == ':') || (*p == ',') || (*p == '.')) {#else			if ((*p == os_toascii[':']) || (*p == os_toascii[',']) || (*p == os_toascii['.'])) {#endif				p++;				if(*p) type = p;				break;			}		if (!X509_NAME_add_entry_by_txt(subj,type, MBSTRING_ASC,				(unsigned char *) v->value,-1,-1,0)) return 0;		}		if (!X509_NAME_entry_count(subj))			{			BIO_printf(bio_err,"error, no objects specified in config file\n");			return 0;			}		if (attribs)			{			for (i = 0; i < sk_CONF_VALUE_num(attr_sk); i++)				{				v=sk_CONF_VALUE_value(attr_sk,i);				if(!X509_REQ_add1_attr_by_txt(req, v->name, MBSTRING_ASC,					(unsigned char *)v->value, -1)) return 0;				}			}	return 1;	}static int add_DN_object(X509_NAME *n, char *text, char *def, char *value,	     int nid, int min, int max)	{	int i,ret=0;	MS_STATIC char buf[1024];start:	BIO_printf(bio_err,"%s [%s]:",text,def);	(void)BIO_flush(bio_err);	if (value != NULL)		{		strcpy(buf,value);		strcat(buf,"\n");		BIO_printf(bio_err,"%s\n",value);		}	else		{		buf[0]='\0';		fgets(buf,1024,stdin);		}	if (buf[0] == '\0') return(0);	else if (buf[0] == '\n')		{		if ((def == NULL) || (def[0] == '\0'))			return(1);		strcpy(buf,def);		strcat(buf,"\n");		}	else if ((buf[0] == '.') && (buf[1] == '\n')) return(1);	i=strlen(buf);	if (buf[i-1] != '\n')		{		BIO_printf(bio_err,"weird input :-(\n");		return(0);		}	buf[--i]='\0';#ifdef CHARSET_EBCDIC	ebcdic2ascii(buf, buf, i);#endif	if(!req_check_len(i, min, max)) goto start;	if (!X509_NAME_add_entry_by_NID(n,nid, MBSTRING_ASC,				(unsigned char *) buf, -1,-1,0)) goto err;	ret=1;err:	return(ret);	}static int add_attribute_object(X509_REQ *req, char *text,				char *def, char *value, int nid, int min,				int max)	{	int i;	static char buf[1024];start:	BIO_printf(bio_err,"%s [%s]:",text,def);	(void)BIO_flush(bio_err);	if (value != NULL)		{		strcpy(buf,value);		strcat(buf,"\n");		BIO_printf(bio_err,"%s\n",value);		}	else		{		buf[0]='\0';		fgets(buf,1024,stdin);		}	if (buf[0] == '\0') return(0);	else if (buf[0] == '\n')		{		if ((def == NULL) || (def[0] == '\0'))			return(1);		strcpy(buf,def);		strcat(buf,"\n");		}	else if ((buf[0] == '.') && (buf[1] == '\n')) return(1);	i=strlen(buf);	if (buf[i-1] != '\n')		{		BIO_printf(bio_err,"weird input :-(\n");		return(0);		}	buf[--i]='\0';#ifdef CHARSET_EBCDIC	ebcdic2ascii(buf, buf, i);#endif	if(!req_check_len(i, min, max)) goto start;	if(!X509_REQ_add1_attr_by_NID(req, nid, MBSTRING_ASC,					(unsigned char *)buf, -1)) {		BIO_printf(bio_err, "Error adding attribute\n");		ERR_print_errors(bio_err);		goto err;	}	return(1);err:	return(0);	}#ifndef NO_RSAstatic void MS_CALLBACK req_cb(int p, int n, void *arg)	{	char c='*';	if (p == 0) c='.';	if (p == 1) c='+';	if (p == 2) c='*';	if (p == 3) c='\n';	BIO_write((BIO *)arg,&c,1);	(void)BIO_flush((BIO *)arg);#ifdef LINT	p=n;#endif	}#endifstatic int req_check_len(int len, int min, int max)	{	if (len < min)		{		BIO_printf(bio_err,"string is too short, it needs to be at least %d bytes long\n",min);		return(0);		}	if ((max != 0) && (len > max))		{		BIO_printf(bio_err,"string is too long, it needs to be less than  %d bytes long\n",max);		return(0);		}	return(1);	}/* Check if the end of a string matches 'end' */static int check_end(char *str, char *end){	int elen, slen;		char *tmp;	elen = strlen(end);	slen = strlen(str);	if(elen > slen) return 1;	tmp = str + slen - elen;	return strcmp(tmp, end);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲综合久久久久| 久久一区二区三区国产精品| 亚洲激情男女视频| 欧美亚洲另类激情小说| 日韩高清一区二区| 久久人人97超碰com| 成人午夜电影小说| 一区二区三区中文在线| 在线不卡一区二区| 韩国精品一区二区| 亚洲欧洲国产日韩| 欧美日韩aaaaa| 国产精品中文字幕一区二区三区| 国产三级久久久| 在线免费不卡电影| 久久99国产精品久久| 亚洲欧洲色图综合| 欧美一区永久视频免费观看| 国产经典欧美精品| 一区二区三区丝袜| 欧美成人在线直播| 91麻豆国产精品久久| 日韩精品福利网| 亚洲国产精品成人久久综合一区| 欧美少妇bbb| 国产·精品毛片| 亚洲成a人v欧美综合天堂下载| 久久久影视传媒| 日本精品一区二区三区高清| 久久福利资源站| 国产精品久久久久桃色tv| 7799精品视频| 91论坛在线播放| 国产一区二区三区精品视频| 亚洲一区二区欧美日韩| 国产精品水嫩水嫩| 欧美一区二区三区啪啪| 91在线免费看| 国产成人在线视频网站| 日韩电影一区二区三区| 亚洲精品你懂的| 中文字幕日韩一区二区| 欧美sm美女调教| 欧美日产国产精品| 91香蕉视频黄| 成人精品小蝌蚪| 国产精品一二三区在线| 蜜桃久久精品一区二区| 亚洲午夜免费福利视频| 国产嫩草影院久久久久| 日韩一级免费一区| 在线精品国精品国产尤物884a| 粉嫩13p一区二区三区| 精品亚洲国内自在自线福利| 丝袜脚交一区二区| 亚洲一区二区视频在线| 国产精品毛片久久久久久| 久久久精品综合| 久久影院午夜片一区| 日韩欧美视频一区| 69成人精品免费视频| 欧美偷拍一区二区| 一本大道综合伊人精品热热| 91在线看国产| 99久久99久久精品国产片果冻| 粉嫩aⅴ一区二区三区四区五区 | 亚洲精品久久久蜜桃| 欧美激情一区二区| 国产人久久人人人人爽| 国产片一区二区| 国产性色一区二区| 欧美激情艳妇裸体舞| 国产精品你懂的在线欣赏| 国产精品久久久久影视| 一区免费观看视频| 亚洲精品日产精品乱码不卡| 亚洲免费视频中文字幕| 亚洲六月丁香色婷婷综合久久| 国模大尺度一区二区三区| 蜜臀av在线播放一区二区三区| 美女高潮久久久| 国产精品99久久久久久久女警| 国产成人免费视| eeuss影院一区二区三区| 91一区二区三区在线观看| 99re6这里只有精品视频在线观看| 91视频在线看| 欧美高清你懂得| 欧美va亚洲va| 国产精品天天摸av网| 成人免费小视频| 亚洲一区二区三区小说| 亚洲国产精品久久一线不卡| 日本在线不卡视频| 黑人精品欧美一区二区蜜桃| 成人毛片老司机大片| 欧美性三三影院| 日韩一级大片在线观看| 国产日产亚洲精品系列| 亚洲精品中文字幕乱码三区 | 欧美一级日韩不卡播放免费| 日韩三级高清在线| 欧美激情一区二区三区不卡| 亚洲蜜桃精久久久久久久| 五月天中文字幕一区二区| 日韩成人精品在线| 国产剧情一区二区| 日本道色综合久久| 欧美一区二区在线播放| 日本一区二区视频在线观看| 亚洲一区二区3| 精品一区二区影视| 精品99999| 亚洲日本韩国一区| 麻豆91小视频| 91啪亚洲精品| 欧美xxx久久| 一区二区三区久久久| 久久99国产精品免费网站| 色婷婷久久久综合中文字幕 | 亚洲欧洲在线观看av| 免费看黄色91| 91国内精品野花午夜精品| 日韩欧美色电影| 亚洲美女电影在线| 国产黄色精品视频| 欧美日韩国产不卡| 亚洲欧洲日韩在线| 国产一区二区三区日韩| 555夜色666亚洲国产免| 亚洲精选免费视频| 国产精品91xxx| 91精品国产综合久久小美女 | 婷婷久久综合九色综合伊人色| 国产福利一区二区三区| 欧美一区二区日韩一区二区| 亚洲日本在线看| 成人深夜在线观看| 26uuu国产日韩综合| 日韩精品久久久久久| 色综合咪咪久久| 中国色在线观看另类| 国产在线观看免费一区| 欧美一级二级在线观看| 亚洲风情在线资源站| 99久久99久久久精品齐齐| 欧美极品aⅴ影院| 狠狠色综合日日| 精品剧情v国产在线观看在线| 亚洲图片有声小说| 91社区在线播放| 中文字幕日韩欧美一区二区三区| 国产成人丝袜美腿| 久久伊人中文字幕| 看片的网站亚洲| 欧美一区二区三区人| 亚洲aⅴ怡春院| 欧美三区在线观看| 一区二区三区精品视频在线| 色婷婷精品大视频在线蜜桃视频 | 久久先锋影音av鲁色资源| 蜜桃在线一区二区三区| 日韩午夜中文字幕| 日韩精品电影在线| 91精品国产91久久久久久一区二区| 丝袜美腿亚洲色图| 欧美电影影音先锋| 日韩和欧美一区二区| 制服丝袜亚洲播放| 日本不卡在线视频| 精品不卡在线视频| 欧美日韩情趣电影| 三级一区在线视频先锋 | 日韩三级伦理片妻子的秘密按摩| 肉色丝袜一区二区| 91麻豆精品国产综合久久久久久 | 精品不卡在线视频| 国产成人小视频| 亚洲特黄一级片| 欧美视频在线一区二区三区| 调教+趴+乳夹+国产+精品| 欧美一二三区在线观看| 激情综合一区二区三区| 日本一区二区动态图| 91在线精品秘密一区二区| 亚洲一区电影777| 精品久久久三级丝袜| 国产成人一区二区精品非洲| 亚洲欧美色图小说| 宅男在线国产精品| 国产精品一区2区| 亚洲欧美乱综合| 69久久夜色精品国产69蝌蚪网| 精品一区精品二区高清| 国产精品看片你懂得| 欧美日韩不卡一区| 国产精品综合网| 亚洲永久免费av| 日韩精品专区在线影院观看| 91在线免费看|