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

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

?? certrevocatelist.cpp

?? 完成數字證書加密
?? CPP
字號:
#include "CertRevocateList.h"#include <sys/types.h>#include <sys/stat.h>#include <unistd.h>CRL::CRL(){	ca = NULL;	ca = new CAService();	assert( ca!=NULL );	m_crlPath = (char*)calloc(1, 512);	assert( m_crlPath!=NULL );	string tmp = getAttribute("Directory", "CA")+				"/"+				getAttribute("Directory", "crl")+				"/"+				getAttribute("System", "Issuer");	tmp.append(".pem");	strcpy(m_crlPath, tmp.c_str());	assert( m_crlPath!="");	m_thirdPath = "";	m_thirdPath = getAttribute("Directory", "CA") + 				"/"+getAttribute("Directory", "crl")+"/";}CRL::~CRL(){	if (ca) delete ca, ca=NULL;	if (m_crlPath) free(m_crlPath), m_crlPath=NULL;}void CRL::setObject(CAService* caservice){/*	assert(caservice != NULL);	ca = caservice;*/}bool CRL::checkCRL(){	char path[512];	memset(path, 0, 512);	strcpy(path, m_crlPath);	return ca->locateFile(path);}void CRL::addNewRevocateList(string serialNumber){	X509* x509 = ca->LoadCert(ca->m_rootCertPath);	EVP_PKEY* pkey = ca->loadRootPriv(ca->m_rootPrivKeyPath);	X509_CRL* crl= X509_CRL_new();	assert(crl != NULL);	assert(x509 != NULL);	assert(pkey != NULL);	if (!X509_check_private_key(x509, pkey)) {		writelog("cert don't match with key .");		return ;	}	X509_CRL_INFO *ci=NULL;	ci = crl->crl;	assert(ci != NULL);		ci->issuer=X509_NAME_dup(x509->cert_info->subject);	assert(ci->issuer != NULL);	X509_gmtime_adj(ci->lastUpdate, 0);	if (ci->nextUpdate == NULL) {		ci->nextUpdate=ASN1_UTCTIME_new();	}	X509_gmtime_adj(ci->nextUpdate, CRL_ISSUE_SCHEDULE);	ci->issuer = X509_NAME_dup(x509->cert_info->subject);	if (!ci->revoked) {		ci->revoked = sk_X509_REVOKED_new_null();	}	if (ci->version == NULL) {		ci->version = ASN1_INTEGER_new();	}	long version = atol(getAttribute("CRL", "version").c_str());	ASN1_INTEGER_set(ci->version, version);	setAttribute("CRL", "version", ca->toString(++version));	int year=0, month=0, day=0;	ca->getCurrentTime(year, month, day);	setAttribute("CRL", "time", toString(year)+"-"+toString(month)+"-"+toString(day));	STACK_OF(X509_REVOKED)* revoked_crl = ci->revoked;	X509_REVOKED *revoked=X509_REVOKED_new();		ASN1_INTEGER_set(revoked->serialNumber, atol(serialNumber.c_str()));	assert( revoked!=NULL );	time_t tm;	time(&tm);	ASN1_TIME_set(revoked->revocationDate, tm);	//	X509_REVOKED_set_serialNumber(revoked, );//	X509_REVOKED_set_revocationDate(revoked, );	sk_X509_REVOKED_push(revoked_crl, revoked);	const EVP_MD* dgst = EVP_get_digestbyname("md5");	if (!X509_CRL_sign(crl,pkey,dgst)) {		return ;	}	BIO* io = BIO_new_file(m_crlPath, "w");	assert(io != NULL);	PEM_write_bio_X509_CRL(io, crl);		BIO_free(io);	X509_CRL_free(crl);	sk_X509_REVOKED_free(revoked_crl);	X509_free(x509);	EVP_PKEY_free(pkey);}string CRL::getCRL(string serialNumber, string issuer){	BIO* bi = NULL;	if (issuer=="") {		bi=BIO_new_file(m_crlPath, "r");	}	else {		bi=BIO_new_file(issuer.c_str(), "r");	}	assert(bi != NULL);	X509_CRL* crl = PEM_read_bio_X509_CRL(bi, NULL, NULL, NULL);	assert(crl != NULL);	STACK_OF(X509_REVOKEED)* revoked = crl->crl->revoked;	string result = "";	if (revoked!=NULL) {		for(int i=0; i<sk_X509_CRL_num(revoked); i++) {			X509_REVOKED* xr=NULL;			xr = sk_X509_REVOKED_value(revoked, i);			long number = ASN1_INTEGER_get(xr->serialNumber);			if (serialNumber!="") {				if (number == atol(serialNumber.c_str())) {					result = "find";					break;				}			}			else {				if (!i) {					result = "";				}				result.append(toString(number)).append(";");			}		}	}	BIO_free(bi);	X509_CRL_free(crl);	bi = NULL;	crl=NULL;	revoked=NULL;		return result;}void CRL::insertNewRevocationList(string serialNumber){	if (getCRL(serialNumber, m_crlPath)=="find") {		deleteFromCRL(serialNumber);	}	BIO* bi = BIO_new_file(m_crlPath, "r");	assert(bi != NULL);	X509_CRL* crl = PEM_read_bio_X509_CRL(bi, NULL, NULL, NULL);	assert(crl != NULL);	X509_CRL_INFO *ci = crl->crl;	assert( ci!=NULL );	STACK_OF(X509_REVOKED)* revoked=ci->revoked;	X509_REVOKED* xr=NULL;	time_t tm;	time(&tm);	xr = X509_REVOKED_new();	ASN1_TIME_set(xr->revocationDate, tm);	ASN1_INTEGER_set(xr->serialNumber, atol(serialNumber.c_str()));	sk_X509_REVOKED_push(revoked, xr);	BIO_free(bi);	bi=NULL;		BIO* bo = BIO_new_file(m_crlPath, "w");	assert( bo!=NULL );	PEM_write_bio_X509_CRL(bo, crl);	BIO_free(bo);	bo=NULL;		X509_CRL_free(crl);	crl=NULL;}void CRL::createCertificateRevocateList(string serialNumber)	{	if (checkCRL()) {		insertNewRevocationList(serialNumber);	}	else {		addNewRevocateList(serialNumber);	}	importCRL(m_crlPath, getAttribute("System", "Issuer"));}void CRL::setAttribute(string keyword, string objectName, string value){	ca->setCAConfigItem(keyword, objectName, value);}string CRL::getAttribute(string keyword, string objectName){	return ca->readCAconfig(keyword, objectName);}bool CRL::certInCRL(X509* x509){	return false;}string CRL::toString(long num){	return ca->toString(num);}bool CRL::deleteFromCRL(string serialNumber, char* result){	BIO* bi = BIO_new_file(m_crlPath, "r");	assert(bi != NULL);	X509_CRL* crl = PEM_read_bio_X509_CRL(bi, NULL, NULL, NULL);	assert(crl != NULL);	STACK_OF(X509_REVOKED)* revoked=crl->crl->revoked;	X509_REVOKED* xr=NULL;	bool flag = false;	for(int i=0; i<sk_X509_CRL_num(revoked); i++) {		xr = sk_X509_REVOKED_value(revoked, i);		if (atol(serialNumber.c_str())==ASN1_INTEGER_get(xr->serialNumber)) {			sk_X509_REVOKED_delete(revoked, i);			flag = true;			break;		}	}	BIO_free(bi);	bi = NULL;	xr = NULL;	if (flag) {		BIO* bo = BIO_new_file(m_crlPath, "w");		assert( bo!=NULL );		PEM_write_bio_X509_CRL(bo, crl);		BIO_free(bo);		bo = NULL;	}	else {		writelog("There is not specific cert in CRL.");		if (result != NULL) {			strcpy(result, "There is not specific cert in CRL.");		}	}		X509_CRL_free(crl);	crl=NULL;		if (flag) {		importCRL(m_crlPath, getAttribute("System", "Issuer"));	}	return true;}void CRL::importCRL(const char* crl, string issuer){	assert(crl!=NULL);	CertDB db;	db.initializeConnect();	db.importCRLToDB(convertPEMtoChar(crl),"insert", issuer);	db.closeConnection();}string CRL::exportCRL(string issuer){	string filepath="";	filepath.append(m_thirdPath).append(issuer).append(".pem");	char path[512];	memset(path, 0, 512);	strcpy(path, filepath.c_str());	if (!ca->locateFile(path)) {		CertDB db;		char* tmp = db.exportCRLFromDB(issuer);		FILE* fp = fopen(filepath.c_str(), "w");		assert(fp!=NULL);		fwrite(tmp, strlen(tmp), 1, fp);		fclose(fp);	}	string result = "";	struct stat buf;	stat(filepath.c_str(), &buf);	if (buf.st_size>0) {		result.append(getCRL("", filepath));	}	return result;}char* CRL::convertPEMtoChar(const char* filepath){	char result[10*K];	char* tmp   =(char*)calloc(1, 1*K);	assert(tmp!=NULL);	memset(result, 0, 10*K);	FILE* fd=fopen(filepath, "rb");	assert(fd!=NULL);	while (!feof(fd)) {		memset(tmp, 0, 1*K);		fgets(tmp, 1*K, fd);		strcat(result, tmp);	}	if (tmp) free(tmp), tmp=NULL;	fclose(fd);	return result;}void CRL::parseCRL(string data, string& issuer){	char buf[2*K];	memset(buf, 0, 2*K);	strcpy(buf, data.c_str());	BIO *io = BIO_new_mem_buf(buf, strlen(buf));	assert(io!=NULL);	X509_CRL* crlImported = PEM_read_bio_X509_CRL(io, NULL, NULL, NULL);	assert(crlImported != NULL);	X509_NAME* issuerName = crlImported->crl->issuer;	BIO *out = BIO_new(BIO_s_mem());	assert(out!=NULL);	X509_NAME_print(out, issuerName, 80);	char swap[80];	memset(swap, 0, 80);	BIO_read(out, swap, 80);	BIO_free(out);	if ((!strcmp(swap, ""))) {		issuer="", issuer.append(swap);	}		X509_CRL_free(crlImported);	BIO_free(io);	io=NULL;	crlImported = NULL;	issuerName=NULL;}string CRL::importThirdCRL(char* data, string crlIssuer){	string result = "";	char swap[4*K];	memset(swap, 0, 4*K);		if (data!=NULL) {		BIO *bio = BIO_new(BIO_s_mem());		BIO_write(bio, data, strlen(data));		X509_CRL *crl = NULL;		if ((crl=d2i_X509_CRL_bio(bio, NULL))!=NULL){			BIO *bp = BIO_new(BIO_s_mem());			PEM_write_bio_X509_CRL(bp, crl);			BIO_read(bp, swap, 4*K);			BIO_free(bp);			bp = NULL;			X509_CRL_free(crl);			data = NULL;			data = swap;		}				BIO_free(bio);		bio=NULL;	}		string issuer="";	parseCRL(data, issuer);	if (issuer=="") {		return result;	}	string object=issuer;	issuer.append(".pem");	issuer=m_thirdPath;	issuer.append(object);	FILE* fd = fopen(issuer.c_str(), "w");	if (fd==NULL) {		result.append("error : open file to fail, or ").			append(issuer).			append(" is not exist.");		return result;	}	int len = fwrite(data, strlen(data), 1, fd);	if (len ==0 || len < strlen(data)) {		result = "import third crl to fail.";	}	else {		result = "succeed to import third crl.";	}	fclose(fd);	importCRL(issuer.c_str(), object);	issuer = getAttribute("CRL", "third");	issuer.append(object).append(";");	setAttribute("CRL", "third", issuer);	return result;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区免费电影| 国产视频在线观看一区二区三区| 91视频国产观看| 成人不卡免费av| 成人国产亚洲欧美成人综合网| 国产盗摄女厕一区二区三区| 国产精品白丝jk白祙喷水网站| 韩国av一区二区三区在线观看 | 国产精品一色哟哟哟| 国内精品国产三级国产a久久| 麻豆一区二区三| 国产一区二区在线电影| 国产精品一卡二卡| av一区二区三区四区| 91麻豆精品秘密| 欧美专区日韩专区| 欧美日韩视频在线第一区 | 亚洲裸体xxx| 亚洲影视在线播放| 日日夜夜精品视频免费| 日本91福利区| 经典三级一区二区| 成人污视频在线观看| 色诱视频网站一区| 欧美日韩高清一区| 欧美mv和日韩mv的网站| 中文字幕乱码亚洲精品一区| 亚洲免费视频中文字幕| 日日嗨av一区二区三区四区| 精品一区二区国语对白| 国产成人aaa| 色8久久精品久久久久久蜜| 欧美人成免费网站| 久久久蜜臀国产一区二区| 国产精品久久影院| 午夜精品久久久久| 国产电影一区在线| 欧美性三三影院| 亚洲精品一区二区在线观看| 中文字幕一区二区5566日韩| 亚洲第一电影网| 久久99九九99精品| 色94色欧美sute亚洲线路一ni| 91精品国产欧美一区二区18| 中文字幕二三区不卡| 亚洲国产视频在线| 国产成人精品免费视频网站| 欧美亚洲国产一区二区三区va | 日本成人在线不卡视频| 成人免费精品视频| 欧美精品欧美精品系列| 中文字幕+乱码+中文字幕一区| 亚洲午夜在线视频| 高清av一区二区| 欧美丰满嫩嫩电影| 亚洲婷婷在线视频| 国产麻豆91精品| 欧美日韩一区成人| 日本一区二区三区久久久久久久久不| 一卡二卡欧美日韩| 成人精品国产一区二区4080| 欧美日韩精品专区| 日本一区二区高清| 麻豆视频观看网址久久| 色偷偷88欧美精品久久久| 岛国一区二区三区| 中文字幕一区在线观看视频| 亚洲激情五月婷婷| 久久精品国产99国产精品| 韩国av一区二区三区四区| 老司机一区二区| 91免费观看国产| 久久久精品中文字幕麻豆发布| 一区二区三区国产精华| 色哟哟精品一区| 国产精品99久久久久久宅男| 成人一级片网址| 欧美videos大乳护士334| 亚洲成人免费电影| 91网站在线播放| 亚洲国产精品二十页| 久久精品国产精品亚洲精品| 欧美精品日韩精品| 亚洲国产一区二区a毛片| 色综合欧美在线视频区| 国产精品蜜臀av| 国产成人aaa| 久久精品男人天堂av| 麻豆免费精品视频| 日韩免费高清av| 视频一区在线播放| 欧美另类变人与禽xxxxx| 亚洲国产色一区| 欧美午夜电影网| 亚洲综合久久久| 欧美性大战久久久| 亚洲一级在线观看| 欧美日韩免费电影| 亚洲成人www| 欧美日韩激情一区二区三区| 亚洲午夜羞羞片| 欧美性极品少妇| 天天色 色综合| 911国产精品| 日本在线播放一区二区三区| 欧美丰满一区二区免费视频 | 另类综合日韩欧美亚洲| 日韩欧美一级二级三级久久久| 日韩影院免费视频| 日韩精品一区二区三区在线观看| 蜜臀91精品一区二区三区 | 五月天一区二区三区| 欧美剧情片在线观看| 日本成人在线一区| 精品成人免费观看| 国产成人免费视频网站| 国产精品久久久久久亚洲毛片| 99久久免费精品高清特色大片| 亚洲同性同志一二三专区| 日本久久一区二区| 亚洲超丰满肉感bbw| 日韩免费一区二区三区在线播放| 国产美女精品在线| 中文字幕一区二区三区四区| 欧美影视一区在线| 另类小说图片综合网| 国产日韩在线不卡| 一本到不卡免费一区二区| 亚洲成a人在线观看| 日韩精品影音先锋| 成人免费高清在线| 亚洲高清视频中文字幕| 精品久久久久av影院| 成人深夜在线观看| 亚洲123区在线观看| 久久先锋影音av鲁色资源| 99久久er热在这里只有精品66| 亚洲一卡二卡三卡四卡| 精品国一区二区三区| 欧美一区二区三区白人| 国产盗摄视频一区二区三区| 亚洲激情中文1区| 欧美电影免费观看高清完整版| 风间由美一区二区三区在线观看| 亚洲精品成人精品456| 日韩三级视频在线观看| 成人性生交大合| 日韩二区在线观看| 国产精品久久久久永久免费观看| 欧美日韩美少妇| 成人免费av网站| 日韩经典一区二区| 日韩美女视频一区| 欧美一级一区二区| 91社区在线播放| 国产九色sp调教91| 亚洲丰满少妇videoshd| 国产欧美精品国产国产专区| 国模娜娜一区二区三区| 美女任你摸久久| 中文字幕视频一区二区三区久| 在线观看91精品国产麻豆| 懂色av中文一区二区三区| 亚洲高清免费视频| 国产精品剧情在线亚洲| 久久精品一级爱片| 亚洲免费毛片网站| 日韩一区二区在线观看视频播放| 精品在线一区二区三区| 一区二区免费在线播放| 久久久影院官网| 在线电影一区二区三区| 99久久99久久久精品齐齐| 国产一区二区三区黄视频| 亚洲国产人成综合网站| 日韩美女啊v在线免费观看| 久久一留热品黄| 欧美日韩成人综合在线一区二区 | 99久久99久久免费精品蜜臀| 精品一区二区三区在线观看| 亚洲一区电影777| 亚洲欧洲日韩av| 国产情人综合久久777777| 欧美成人a∨高清免费观看| 色狠狠一区二区三区香蕉| 国产成人午夜片在线观看高清观看| 日韩福利视频网| 亚洲成人av一区二区| 一区二区三区日韩精品| 国产精品你懂的在线| 国产欧美综合在线观看第十页| 欧美成人午夜电影| 51精品秘密在线观看| 精品视频免费在线| 日本乱人伦一区| 色婷婷香蕉在线一区二区| 99久久国产免费看| 91在线porny国产在线看| 成人综合激情网| 国产成人精品免费看|