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

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

?? pki_x509.cpp

?? 一個小型證書管理系統
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
	intToData(&p1, sLastCrl); // size of last CRL	if (sLastCrl) {		i2d_ASN1_TIME(lastCrl, &p1); // last CRL date	}	openssl_error();	return p;}string pki_x509::getDNs(int nid){	char buf[200] = "";	string s;	X509_NAME *subj = X509_get_subject_name(cert);	X509_NAME_get_text_by_NID(subj, nid, buf, 200);	openssl_error();	s = buf;	return s;}string pki_x509::getDNi(int nid){	char buf[200] = "";	string s;	X509_NAME *iss = X509_get_issuer_name(cert);	X509_NAME_get_text_by_NID(iss, nid, buf, 200);	openssl_error();	s = buf;	return s;}string pki_x509::notBefore(){	return asn1TimeToString(X509_get_notBefore(cert));}string pki_x509::notAfter(){	return asn1TimeToString(X509_get_notAfter(cert));}string pki_x509::revokedAt(){	return asn1TimeToString(revoked);}string pki_x509::asn1TimeToString(ASN1_TIME *a){	string time = "";	if (!a) return time;	BIO * bio = BIO_new(BIO_s_mem());	char buf[200];	ASN1_TIME_print(bio, a);	BIO_gets(bio, buf, 200);	time = buf;	BIO_free(bio);	openssl_error();	return time;}void pki_x509::writeCert(const string fname, bool PEM, bool append){	FILE *fp;	if (append)		fp = fopen(fname.c_str(),"a");	else		fp = fopen(fname.c_str(),"w");	if (fp != NULL) {	   if (cert){		if (PEM) 		   PEM_write_X509(fp, cert);		else		   i2d_X509_fp(fp, cert);	        openssl_error();	   }	}	else fopen_error(fname);	fclose(fp);}bool pki_x509::compare(pki_base *refreq){	bool ret = !X509_cmp(cert, ((pki_x509 *)refreq)->cert);	ign_openssl_error();	return ret;}bool pki_x509::cmpIssuerAndSerial(pki_x509 *refcert){	if (!refcert || !refcert->cert) return false;	if (getSerial() != refcert->getSerial()) return false;	X509_NAME *issuer = X509_get_issuer_name(cert);	X509_NAME *refissuer = X509_get_issuer_name(refcert->cert);	openssl_error();	return !X509_NAME_cmp(issuer, refissuer);}		bool pki_x509::verify(pki_x509 *signer){	if (psigner == signer) return true;	if ((psigner != NULL )||( signer == NULL)) return false;	X509_NAME *subject =  X509_get_subject_name(signer->cert);	X509_NAME *issuer = X509_get_issuer_name(cert);	openssl_error();	if (X509_NAME_cmp(subject, issuer)) {		return false;	}	pki_key *pkey = signer->getPubKey();	int i = X509_verify(cert,pkey->key);	ign_openssl_error();	if (pkey) delete(pkey);	if (i>0) {		CERR("psigner set for: " << getDescription().c_str() );		psigner = signer;		return true;	}	return false;}pki_key *pki_x509::getPubKey(){	EVP_PKEY *pkey = X509_get_pubkey(cert);	openssl_error();	pki_key *key = new pki_key(pkey);		return key;}string pki_x509::fingerprint(const EVP_MD *digest){	 int j;	 string fp="";	 char zs[4];         unsigned int n;         unsigned char md[EVP_MAX_MD_SIZE];         X509_digest(cert, digest, md, &n);	 openssl_error();         for (j=0; j<(int)n; j++)         {              sprintf(zs, "%02X%c",md[j], (j+1 == (int)n) ?'\0':':');	      fp += zs;         }	 return fp;}int pki_x509::checkDate(){	time_t tnow = time(NULL);	int ret=0;	if (ASN1_UTCTIME_cmp_time_t(X509_get_notAfter(cert), tnow) == -1)		ret = -1;	if (!ASN1_UTCTIME_cmp_time_t(X509_get_notBefore(cert), tnow) == -1)	 	ret = 1;	openssl_error();	return ret;}int pki_x509::resetTimes(pki_x509 *signer){	int ret = 0;	if (!signer) return -1;	if (ASN1_STRING_cmp(X509_get_notAfter(cert), X509_get_notAfter(signer->cert)) == 1) {		// client cert is longer valid....		CERR("adjust notAfter");		if (X509_get_notAfter(cert)) ASN1_TIME_free(X509_get_notAfter(cert));		X509_get_notAfter(cert) = M_ASN1_TIME_dup(X509_get_notAfter(signer->cert));		ret=1;	}	if (ASN1_STRING_cmp(X509_get_notBefore(cert), X509_get_notBefore(signer->cert)) == -1) {		// client cert is longer valid....		CERR("adjust notBefore");		if (X509_get_notBefore(cert)) ASN1_TIME_free(X509_get_notBefore(cert));		X509_get_notBefore(cert) = M_ASN1_TIME_dup(X509_get_notBefore(signer->cert));		ret=2;	}	openssl_error();	return ret;}	pki_x509 *pki_x509::getSigner() { return (psigner); }pki_key *pki_x509::getKey() { return (pkey); }bool pki_x509::setKey(pki_key *key) {	bool ret=false;	if (!pkey && key) {		CERR( "KEY COUNT UP");		key->incUcount();		ret=true;	}	pkey = key;	return ret;}void pki_x509::delKey() { pkey = NULL; }void pki_x509::delSigner() { psigner=NULL; }string pki_x509::printV3ext(){#define V3_BUF 100	ASN1_OBJECT *obj;	BIO *bio = BIO_new(BIO_s_mem());	int i, len, n = X509_get_ext_count(cert);	char buffer[V3_BUF+1];	X509_EXTENSION *ex;	string text="";	for (i=0; i<n; i++) {		text += "<b><u>";		ex = X509_get_ext(cert,i);		obj = X509_EXTENSION_get_object(ex);		len = i2t_ASN1_OBJECT(buffer, V3_BUF, obj);		if (len <0 || len > V3_BUF) openssl_error("V3 buffer too small, this is a bug!");		buffer[len] = '\0';		CERR("extension: "<< buffer <<", length: " << len);		text += buffer;		text += ": ";		if (X509_EXTENSION_get_critical(ex)) {			text += " <font color=\"red\">critical</font>:";		}		if(!X509V3_EXT_print(bio, ex, 0, 0)) {			M_ASN1_OCTET_STRING_print(bio,ex->value);		}		text+="</u></b><br><tt>";        	do {			len = BIO_read(bio, buffer, V3_BUF);			buffer[len] = '\0';			text+=buffer;			CERR("extension-length: "<< len);		} while (len == V3_BUF);		text+="</tt><br>";	}	BIO_free(bio);	openssl_error();	return text;}string pki_x509::getSerial(){	char buf[100];	BIO *bio = BIO_new(BIO_s_mem());	i2a_ASN1_INTEGER(bio, cert->cert_info->serialNumber);	int len = BIO_read(bio, buf, 100);	buf[len]='\0';	string x = buf;	BIO_free(bio);	openssl_error();	return x;}int pki_x509::getTrust(){	return trust;}void pki_x509::setTrust(int t){	if (t>=0 && t<=2)		trust = t;}int pki_x509::getEffTrust(){	return efftrust;}void pki_x509::setEffTrust(int t){	if (t>= 0 && t<= 2)		efftrust = t;}bool pki_x509::isRevoked(){	return (revoked != NULL);}void pki_x509::setRevoked(bool rev){	if (rev) {		setEffTrust(0);		setTrust(0);		if (revoked) return;		revoked = ASN1_TIME_new();		openssl_error();		X509_gmtime_adj(revoked,0);	}	else {		if (!revoked) return;		ASN1_TIME_free(revoked);		revoked = NULL;	}	openssl_error();}int pki_x509::calcEffTrust(){	int mytrust = trust;	if (mytrust != 1) {		efftrust = mytrust;		return mytrust;	}	if (getSigner() == this && trust == 1) { // inherit trust, but self signed		trust=0;		efftrust=0;		return 0;	}	//we must look at the parent certs	pki_x509 *signer = getSigner();	pki_x509 *prevsigner = this;	while (mytrust==1 && signer != NULL && signer != prevsigner) {		mytrust = signer->getTrust();		prevsigner = signer;		signer = signer->getSigner();	}		if (mytrust == 1) mytrust = 0;	efftrust = mytrust;	return mytrust;}int pki_x509::getIncCaSerial() { return caSerial++; }int pki_x509::getCaSerial() { return caSerial; }void pki_x509::setCaSerial(int s) { if (s>0) caSerial = s; }int pki_x509::getCrlDays() {return crlDays;}void pki_x509::setCrlDays(int s){if (s>0) crlDays = s;}string pki_x509::getTemplate(){ return caTemplate; }void pki_x509::setTemplate(string s) {if (s.length()>0) caTemplate = s; }void pki_x509::setLastCrl(ASN1_TIME *time){	if (!time) return;	lastCrl=M_ASN1_TIME_dup(time);	openssl_error();}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
不卡av在线网| 亚洲第一狼人社区| 日韩制服丝袜av| 欧美巨大另类极品videosbest | 欧美一三区三区四区免费在线看| 国产精品毛片高清在线完整版| 国产一区三区三区| 久久亚洲精精品中文字幕早川悠里| 久久99国产精品免费| 久久久久国色av免费看影院| 成人免费视频免费观看| 日韩毛片在线免费观看| 欧美视频一区二区三区四区 | 欧美另类一区二区三区| 欧美日本一区二区在线观看| 久久av中文字幕片| 亚洲日穴在线视频| 亚洲人妖av一区二区| 在线一区二区三区四区五区| 蜜臀av性久久久久蜜臀aⅴ流畅 | 激情文学综合网| 亚洲免费色视频| 亚洲一区av在线| 亚洲精品在线三区| 在线精品亚洲一区二区不卡| 国精产品一区一区三区mba桃花 | 国产高清亚洲一区| 亚洲成av人片观看| 久久精品国产77777蜜臀| 九一久久久久久| 不卡的av电影在线观看| 欧美色图第一页| www.亚洲色图.com| 国产一区二区三区免费在线观看| 国产剧情一区在线| 美女一区二区三区在线观看| 国产精品系列在线播放| 日本精品一区二区三区高清 | 日韩电影网1区2区| 中文在线一区二区| 亚洲精品一区二区三区四区高清| 国产午夜精品福利| 精品国产一区二区在线观看| 欧美激情综合在线| 三级在线观看一区二区| 国产69精品久久777的优势| 国产一区二区三区在线看麻豆| 不卡欧美aaaaa| 欧美一区二区国产| 亚洲狼人国产精品| 亚洲国产视频一区| 亚洲午夜精品网| 成人自拍视频在线观看| 9191久久久久久久久久久| 欧美日韩免费高清一区色橹橹| 欧美一区二区视频网站| 亚洲激情自拍视频| 成人少妇影院yyyy| 精品久久一区二区| 欧美变态tickling挠脚心| 亚洲欧美日韩人成在线播放| 国产一区在线精品| 日韩一区二区三区四区 | 午夜精品视频一区| 视频一区中文字幕| 91美女在线观看| 欧美在线视频不卡| 日韩毛片视频在线看| 国产成人在线观看| 精品国产一区久久| 精品亚洲porn| 欧美成人精品福利| 日韩成人一区二区三区在线观看| 色狠狠色狠狠综合| 亚洲欧美一区二区久久| 成人精品国产免费网站| 国产日韩欧美制服另类| 中文字幕在线不卡| 日本成人在线视频网站| 欧美三级蜜桃2在线观看| 最新国产の精品合集bt伙计| 成人美女在线视频| 国产精品婷婷午夜在线观看| eeuss鲁片一区二区三区在线看| 91精品国产综合久久蜜臀| 五月天激情综合| 91精品国产综合久久国产大片 | 色婷婷激情一区二区三区| 91麻豆国产在线观看| 亚洲欧美影音先锋| 色综合咪咪久久| 亚洲第一狼人社区| 91精品国产黑色紧身裤美女| 免费成人深夜小野草| 成人av电影在线网| 亚洲男人天堂一区| 欧美色倩网站大全免费| 麻豆极品一区二区三区| 久久久不卡网国产精品一区| 成人综合婷婷国产精品久久蜜臀 | 久久久精品国产免费观看同学| 成人午夜私人影院| 一区二区久久久久| 国产成人夜色高潮福利影视| 国产精品素人视频| 欧美日韩国产小视频在线观看| 日本亚洲天堂网| 国产日本欧洲亚洲| 欧美亚洲国产怡红院影院| 秋霞av亚洲一区二区三| 久久婷婷国产综合国色天香 | av一区二区久久| 亚洲一区中文日韩| 26uuu精品一区二区在线观看| 国产成人精品一区二区三区四区 | 亚洲精品乱码久久久久| 欧美群妇大交群中文字幕| 久久国产精品99精品国产| 国产精品久久久久精k8| 国产精品一区二区在线观看网站| 国产精品污网站| 欧美日韩国产经典色站一区二区三区 | 欧美日韩久久久一区| 国产一区二区免费视频| 一区二区三区在线视频观看58| 日韩欧美一区二区视频| 美洲天堂一区二卡三卡四卡视频| 久久久久99精品一区| 欧美日韩国产三级| 波多野结衣精品在线| 男女性色大片免费观看一区二区| 国产精品久久三区| 337p粉嫩大胆噜噜噜噜噜91av| 在线免费观看成人短视频| 国产宾馆实践打屁股91| 丝袜诱惑亚洲看片| 一区二区三区欧美亚洲| 欧美国产一区二区在线观看| 欧美精品自拍偷拍| 91免费版在线| 成人国产精品免费网站| 黄页视频在线91| 日韩极品在线观看| 亚洲福利视频一区| 亚洲伦理在线免费看| 国产精品国产三级国产普通话蜜臀 | 国产综合色视频| 亚洲bt欧美bt精品| 亚洲精品免费播放| 国产精品国产a级| 久久久久青草大香线综合精品| 欧美老肥妇做.爰bbww| 色美美综合视频| 91在线国产观看| 亚洲午夜精品久久久久久久久| 国产精品久久综合| 国产精品视频一二三区| 国产偷国产偷精品高清尤物| 欧美一区二区三区人| 欧美肥妇bbw| 正在播放亚洲一区| 91精品国产一区二区三区| 91精品国产综合久久香蕉麻豆| 欧美日韩的一区二区| 欧美日韩和欧美的一区二区| 日本韩国精品在线| 欧美吞精做爰啪啪高潮| 欧美视频在线观看一区二区| 在线观看视频一区二区欧美日韩| 91美女片黄在线观看| 91久久精品一区二区二区| 一本色道综合亚洲| 欧美调教femdomvk| 日韩一级高清毛片| 久久久久久久久久看片| 国产精品久久久久aaaa樱花| 亚洲婷婷国产精品电影人久久| 中文字幕中文字幕中文字幕亚洲无线| 国产精品久久久久永久免费观看 | 91年精品国产| 91久久国产最好的精华液| 欧美高清一级片在线| 久久久噜噜噜久久人人看| 国产精品无人区| 亚洲第一成年网| 老司机一区二区| 成人精品视频一区二区三区尤物| eeuss影院一区二区三区 | 亚洲动漫第一页| 久久国产婷婷国产香蕉| 成人不卡免费av| 欧美剧情电影在线观看完整版免费励志电影 | 91.com在线观看| 国产欧美日韩在线观看| 亚洲一区在线视频观看| 国产伦精品一区二区三区免费 | 色天使色偷偷av一区二区| 欧美情侣在线播放| 欧美极品美女视频| 日本欧美一区二区三区乱码|