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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? main.cpp

?? 完成數(shù)字證書加密
?? CPP
字號:
#include "CAService.h"#include <math.h>#include <openssl/md5.h>#include <Base64.h>#include <Digest.h>CAService casrv;void help(){	cout<<"---------CAService function : "<<endl;	cout<<"           1.Sign itself"<<endl;	cout<<"           2.Create user certificate"<<endl;	cout<<"           3.Revocate user certificate"<<endl;	cout<<"           4.Show information of users certificate issued"<<endl;	cout<<"           5.Get CRL"<<endl;	cout<<"           6.Handle RA request"<<endl;//	cout<<"           7.Update certificate"<<endl;//	cout<<"           8.Export certificate from certlist"<<endl;//	cout<<"           9.Disable a cert"<<endl;//	cout<<"           10.update cert status"<<endl;	cout<<"           7.Print cert content"<<endl;	cout<<"           8.Recover cert status"<<endl;	cout<<"           9.verify user's cert"<<endl;//	cout<<"---------Command : ca [env|initial|cuc|ruc|show|crl|listen|update|export|dcert|verify]"<<endl;	cout<<"---------Command : ca [env|initial|cuc|ruc|show|crl|listen|dcert|verify]"<<endl;//	cout<<"---------Command : ca [env_init|initial|cuc|ruc|show|crl|listen|update|export]"<<endl;	cout<<"---------example :"<<endl;	cout<<"           1.Sign itself ----> ca initial"<<endl;	cout<<"           2.Create usr certificate ----> ca cuc"<<endl;	cout<<"           3.Revocate user certification ----> ca ruc"<<endl;	cout<<"           4.Show information of users certifications issued ----> ca show"<<endl;	cout<<"           5.Get CRL ----> ca crl"<<endl;	cout<<"           6.Handle RA request ----> ca listen"<<endl;//	cout<<"           7.Update certificate ----> ca update"<<endl;//	cout<<"           8.Export certificate from certlist ----> ca export certlist.pem"<<endl;//	cout<<"           9.Disable a cert ----> ca dcert"<<endl;//	cout<<"           10.Update cert status ----> ca ucert"<<endl;	cout<<"           7.Print cert content ----> ca print"<<endl;	cout<<"           8.Recover cert status ----> ca dcert"<<endl;	cout<<"           9.verify user's cert ----> ca verify"<<endl;	cout<<"*********Comment :"<<endl;	cout<<"           if CA service is first used , please initial necessary environment"<<endl;	cout<<"           command : ca env"<<endl;	cout<<endl;	cout<<endl;	}void show(){	casrv.showInformation();}void freeResource(char* src){	if (src) {		free(src), src=NULL;	}}void initializeCA(){	struct stuSUBJECT rootinfo;	int days=0, bits=days;	int type = 0;	char* certFile = (char*) calloc(1,512);	char* priFile = (char*) calloc(1,512);	char countryName[4];	char province[4];	char localityName[12];	char organizationName[48];	char organizationalUnitName[24];	char commonName[12];	char mail[24];	char title[12];	char description[12];	char givenName[12];	char initials[12];	char name[12];	char surname[12];	char address[12];	cout<<"country name (china:cn USA:us):";	cin >> countryName;/*	cout<<"province : ";	cin >> province;	cout<<"locality : ";	cin >> localityName;*/	cout<<"organizationalUnit : ";	cin >> organizationName;	cout<<"organizationalUnitName : ";	cin >> organizationalUnitName;/*	cout<<"surname : ";	cin >> surname;*/	cout<<"common name : ";	cin >> commonName;	cout<<"email : ";	cin >> mail;/*	cout<<"title : ";	cin >> title;*/	memcpy(rootinfo.countryName, countryName, sizeof(countryName));	memcpy(rootinfo.province, province, sizeof(province));	memcpy(rootinfo.localityName, localityName, sizeof(localityName));	memcpy(rootinfo.organizationName, organizationName, sizeof(organizationName));	memcpy(rootinfo.organizationalUnitName, organizationalUnitName, sizeof(organizationalUnitName));	memcpy(rootinfo.commonName, commonName, sizeof(commonName));	memcpy(rootinfo.mail, mail, sizeof(mail));	memcpy(rootinfo.title, title, sizeof(title));	memcpy(rootinfo.surname, surname, sizeof(surname));	char *outMsg = (char*)calloc(1, 1024);	casrv.issueRootCertificate(outMsg, &rootinfo, 			atoi(casrv.readCAconfig("System", "keyLength").c_str()),			atoi(casrv.readCAconfig("System", "validPeriod").c_str()),			casrv.readCAconfig("System", "rootCertPath").c_str(),			casrv.readCAconfig("System", "rootKeyPath").c_str());	freeResource(certFile);	freeResource(priFile);	freeResource(outMsg);}void createUserCert(){	char *outfile = (char*)calloc(1,100);	char *outlist = (char*)calloc(1,100);	char *req = (char*)calloc(1, 100);	assert(outfile!=NULL);	assert(outlist!=NULL);	assert(req!=NULL);		cout << "please input following data : " <<endl;	cout << "reqest file name (default): ";	cin >> req;	cout << "cert type(user=0, gateway=1,administrator=3,operator=4) : ";	char type[10];	cin >> type;	cout << "output cert name: ";	cin >> outfile;	if (!strcmp(req, "default")) {		strcpy(req, "certreq.pem");	}		cout << "cert list name: ";	cin >> outlist;	if (atoi(type)==1) {		casrv.issueTerminalCertificate(outfile, req, GW_CERTIFICATE, outlist);	}	else if (atoi(type) == 0) {		casrv.issueTerminalCertificate(outfile, req, USER_CERTIFICATE, outlist);		}	else {		cout << "-------------> parameter error !" << endl;	}	if (outfile) delete outfile, outfile=NULL;	if (outlist) delete outlist, outlist=NULL;	if (req) delete req, req=NULL;}void listen(){	while (1) {		sleep(1);		CONTENT msg=casrv.getMessageCA();		casrv.sendMessageCA(msg);	}		casrv.freeComm();}void updateUserCertificate(){}void removeUserCertificate(){	int ch = 'y';	while (ch=='y') {		cout << "SerialNumber to be revoked : ";		char serialNumber[10];		memset(serialNumber, 0, 10);		cin>>serialNumber;		long tmp = atol(serialNumber);		if (!tmp) {			cout << "Invalid serialnumber , serialNumber can't equal to zero"<<endl;			ch = 0;		}		else {			cout << "Is this serialNumber to be revoked : "<<tmp<<" ,right (y/n) : ";			cin >> ch;		}		if (tolower(ch)=='y') {			casrv.removeUserCertificate(serialNumber);			ch = 0;		}		else {			cout << "Continue (y/n) ? ";			cin >> ch;			ch = tolower(ch);		}	}}void dcert(){	int ch = 'y';	while (ch=='y') {		cout << "SerialNumber to be recovered : ";		char serialNumber[10];		memset(serialNumber, 0, 10);		cin >> serialNumber ;		long tmp = atol(serialNumber);		if (!tmp) {			cout << "Invalid serialnumber , serialNumber can't equal to zero"<<endl;			ch = 0;		}		else {			cout << "Is this serialNumber to be recovered : "<<tmp<<" ,right (y/n) : ";			cin >> ch;		}		if (tolower(ch)=='y') {			casrv.deleteCertFromCRL(serialNumber);			ch = 0;		}		else {			cout << "Continue (y/n) ? ";			cin >> ch;			ch = tolower(ch);		}	}}void getCRL(){	char ch=0;	cout<<"would you want to save result to file (y/n) :";	cin >>ch;	if (ch=='y') {		cout<<"Filepath :";		char* filepath = (char*)calloc(1, 512);		assert(filepath!=NULL);		cin >> filepath;		FILE *fd=NULL;		if ((fd=fopen(filepath, "wb"))==NULL) {			cout<<"filepath : \""<<filepath<<"\" is not exist"<<endl;			return ;		}		string crl=casrv.getCRL();		if (crl!="") {			fwrite(crl.c_str(), crl.length(), 1, fd);		}		else {			cout << "reading crl fail ."<<endl;		}		fclose(fd);	}	else {		cout << casrv.getCRL()<<endl;	}}void disableCert(){	char* serialNumber=(char*)calloc(1, 10);	char* tmp = (char*)calloc(1, 10);	char ch=0;		assert(serialNumber!=NULL);	assert(tmp!=NULL);	while (1) {		cout<< "please input cert information "<<endl;		cout<< "cert serialnumber : ";		cin>> serialNumber;			long number = atol(serialNumber);		if (number>=pow(2.0, 32) || number<0) {			cout<<"to be unlawful serialnumber, please retry"<<endl;			getchar();			system("clear");			continue;		}			cout<< "is this cert to be disabled \" "<<serialNumber<< "\"(y/n)";		cin >>ch;			if (tolower(ch)=='y') {			casrv.insertCRL(serialNumber);			break;		}		else if (tolower(ch)=='n') {			cout<<"try to it (y/n) ?";			cin >> ch ;			if (tolower(ch)=='n') {				break;			}			for(int i=0;i<4;i++) {				cout<<endl;			}					}	}		if (serialNumber) free(serialNumber), serialNumber=NULL;	if (tmp) free(tmp), tmp=NULL;}void ucert(){	char* serialNumber=(char*)calloc(1, 10);	char* tmp = (char*)calloc(1, 10);	char ch=0;		assert(serialNumber!=NULL);	assert(tmp!=NULL);	while (1) {		cout<< "please input cert information "<<endl;		cout<< "cert serialnumber : ";		cin>> serialNumber;			long number = atol(serialNumber);		if (number>=pow(2.0, 32) || number<0) {			cout<<"to be unlawful serialnumber, please retry"<<endl;			getchar();			system("clear");			continue;		}			cout<< "is this cert to be updated\" "<<serialNumber<< "\"(y/n)";		cin >>ch;			if (tolower(ch)=='y') {			cout<<"do you want how to handle (0: del, 1:update)";			ch = 0;			cin>>ch;			if (ch==0x30) {				casrv.updateCRL(serialNumber);			}			else if (ch==0x31) {				casrv.updateCRL(serialNumber, "update");			}			else {				cout<<"input is unlawful, retry it (y/n)";				cin>>ch;				if (ch=='y') {					continue;				}							}			break;		}		else if (tolower(ch)=='n') {			cout<<"try to it (y/n) ?";			cin >> ch ;			if (tolower(ch)=='n') {				break;			}			for(int i=0;i<4;i++) {				cout<<endl;			}					}	}		if (serialNumber) free(serialNumber), serialNumber=NULL;	if (tmp) free(tmp), tmp=NULL;}void exportCertificateFromCertList(){	char* infile = (char*)calloc(1,512);	cout << "please input cert list path : ";	cin >> infile;	assert( infile!=NULL );	casrv.exportCertificateFromCertList(infile);	if (infile) free(infile), infile=NULL;}void initializeEnvironment(){	casrv.initializeEnvironment();}void initial(){	system("clear");	cout<<"*******************************************"<<endl;	cout<<"*                                         *"<<endl;	cout<<"*                                         *"<<endl;	cout<<"*          Welcome to use BOCO            *"<<endl;	cout<<"*                                         *"<<endl;	cout<<"*              Cert System                *"<<endl;	cout<<"*                                         *"<<endl;	cout<<"*******************************************"<<endl;	for(int i=0;i<3;i++)		cout<<endl;}void print(){	char* infile = (char*)calloc(1,512);	assert(infile!=NULL);	cout<<"Cert absolute path : ";	cin >> infile;	casrv.print(infile);		if (infile) free(infile), infile=NULL;}bool identify(){	cout << "Please input administrator information "<<endl;	char name[512];	char pwd[512];	unsigned char md5[MD5_DIGEST_LENGTH];	assert(name!=NULL);	assert(pwd!=NULL);	memset(name, 0, 512);	memset(pwd, 0, 512);		cout << "Name :";	cin >> name;	cout << "Password :";	cin >> pwd;	if (strcmp(casrv.readCAconfig("Shell", "Username").c_str(), name)) {		return false;	}	MD5_CTX c;	MD5_Init(&c);	unsigned char password[20]={0};	memcpy(password, pwd, strlen(pwd));	MD5_Update(&c, password, strlen(pwd));	MD5_Final(md5, &c);	EVP_ENCODE_CTX ctx;	EVP_EncodeInit(&ctx);	int len = 64;	unsigned char tmp[64];	EVP_EncodeUpdate(&ctx,tmp, &len, md5, 16);	EVP_EncodeFinal(&ctx, tmp, &len);		memset(pwd, 0, 512);	memcpy(pwd, tmp, len-1);	const char* cmp = casrv.readCAconfig("Shell", "Password").c_str();	if (strcmp(pwd, cmp)) {				cout << "pwd : "<<pwd<< "   len : " << strlen(pwd)<<endl;		for(int i=0; i<len;i++) 			printf("%02x", pwd[i]);		cout << "pwd : "<<cmp<< "   len : " << strlen(cmp)<<endl;		return false;	}	return true;}bool locateFile(char* filepath){	return casrv.locateFile(filepath);}void verify(){//	cout << "Absolute path of cert : ";	cout << "Cert path : ";	char path[512],filepath[512];	memset(path, 0, 512);	memset(filepath, 0, 512);	cin >> path ;	strcpy(filepath, path);	if (!locateFile(path)) {		return ;	}	string cert="";	FILE* fd=fopen(filepath, "r");	assert(fd != NULL);	while(!feof(fd)) {		char buf[512];		memset(buf, 0, 512);		fgets(buf, 512, fd);		cert.append(buf);	}	fclose(fd);	cout << casrv.verifyCertificate(cert) <<endl;}void hash(){	Digest di;	cout<<"password : ";	char password[50];	memset(password, 0, 50);	cin >> password;	Base64 b;	int len = 0;	unsigned char hash[50]={0};	memcpy(hash, password, strlen(password));	unsigned char *pt = di.hashString(hash, strlen(password));	pt = b.encode(pt, 16, &len);	memset(password, 0, 50);	memcpy(password, pt, len);	cout<< "hash : "<<password<<endl;}int main(int argc, char** argv){	system("clear");/*	if (!identify()) {		cout << "fatal error, you can't continue to use ." <<endl;		return 0;	}*/		initial();	if (argc==1) {		help();	}	else if (argc==2) {		if (!casrv.initializeConnect()) {			cout <<"to initialize connect fail "<<endl;			return 0;		}		if (!strcmp(argv[1], "help") || !strcmp(argv[1], "h")) {			help();		}		else if (!strcmp(argv[1], "listen")) {/*				pid_t pid = fork();				if (pid == -1 ){					cout << "it is fail to create process ." <<endl;				}				else if (!pid) {*/					listen();//				}		}		else if (!strcmp(argv[1], "initial")) {			initializeCA();		}		else if (!strcmp(argv[1], "ruc")) {			removeUserCertificate();		}		else if (!strcmp(argv[1], "crl")) {			getCRL();		}		else if (!strcmp(argv[1], "update")) {			updateUserCertificate();		}		else if (!strcmp(argv[1], "cuc")) {			createUserCert();		}		else if (!strcmp(argv[1], "export")) {			exportCertificateFromCertList();		}		else if (!strcmp(argv[1], "env")) {			initializeEnvironment();		}		else if (!strcmp(argv[1], "ucert")) {			ucert();		}		else if (!strcmp(argv[1], "dcert")) {			dcert();		}		else if (!strcmp(argv[1], "print")) {			print();		}		else if (!strcmp(argv[1], "hash")) {			hash();		}		else if (!strcmp(argv[1], "show")) {			show();		}		else if (!strcmp(argv[1], "verify")) {			verify();		}		casrv.shutdownConnect();	}	else {		cout << "********************************"<<endl;		cout << "*        usage is error        *"<<endl;		cout << "********************************"<<endl;		cout << endl;		cout << "please use command, \'ca -h\', to get help"<<endl;	}		return 1;}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
天天影视色香欲综合网老头| 狠狠色综合日日| 亚洲3atv精品一区二区三区| 一区二区三区精品| 一二三区精品福利视频| 五月天欧美精品| 麻豆成人久久精品二区三区红| 另类调教123区| 懂色av一区二区三区免费观看| 国产精品一二三四区| 成人a级免费电影| 欧美日韩精品一区二区在线播放 | 久久国产尿小便嘘嘘尿| 国产曰批免费观看久久久| 97精品国产97久久久久久久久久久久 | 一区二区成人在线视频| 蜜臀av一区二区在线观看| 99视频精品全部免费在线| 7777精品伊人久久久大香线蕉完整版 | 久久99精品国产麻豆婷婷洗澡| 国产91在线看| 日韩精品一区二区三区在线| 亚洲欧洲国产日韩| 免费成人美女在线观看.| 色综合久久六月婷婷中文字幕| 日韩欧美一区在线观看| 一区二区三区久久久| 成人av在线播放网址| 久久亚洲春色中文字幕久久久| 丝袜亚洲另类丝袜在线| 91视频精品在这里| 国产精品麻豆视频| 国内外精品视频| 精品美女一区二区| 日韩精品电影一区亚洲| 欧美色视频在线| 亚洲综合图片区| 欧美性受xxxx| 亚洲五月六月丁香激情| 91久久精品日日躁夜夜躁欧美| |精品福利一区二区三区| 丁香六月久久综合狠狠色| 久久久精品日韩欧美| 国产精品系列在线观看| 精品处破学生在线二十三| 久久电影国产免费久久电影 | 日韩视频123| 免费精品视频最新在线| 91精品国产色综合久久不卡蜜臀 | 成人在线视频一区| 欧美经典三级视频一区二区三区| 国产乱子伦一区二区三区国色天香 | 精品一区二区三区免费毛片爱| 欧美福利一区二区| 老司机午夜精品| 2024国产精品| 99久久精品免费看国产免费软件| 亚洲欧洲精品一区二区三区 | 在线中文字幕一区二区| 亚洲午夜成aⅴ人片| 日韩美女视频在线| www.欧美色图| 免费人成精品欧美精品 | 色婷婷综合久久久久中文一区二区 | 麻豆精品精品国产自在97香蕉 | 欧美tickling网站挠脚心| 成人的网站免费观看| 三级在线观看一区二区 | 久久久99精品久久| 色欧美乱欧美15图片| 免费人成在线不卡| 亚洲欧美日韩精品久久久久| 7777精品伊人久久久大香线蕉的| 激情欧美日韩一区二区| 一区二区三区欧美日韩| 久久精品亚洲乱码伦伦中文| 色国产精品一区在线观看| 国产一区999| 天天免费综合色| 亚洲精品成人天堂一二三| 精品久久久久香蕉网| 欧美在线观看视频在线| 国产盗摄视频一区二区三区| 亚洲成人av一区| 一区二区三区四区亚洲| 亚洲国产成人私人影院tom| 欧美大度的电影原声| 欧美日韩一区二区欧美激情 | 91麻豆精品久久久久蜜臀| 99久久精品国产观看| 成人自拍视频在线观看| 国内精品嫩模私拍在线| 玖玖九九国产精品| 日本不卡1234视频| 日本欧美韩国一区三区| 日韩精品成人一区二区三区| 亚洲午夜免费福利视频| 一区二区三区在线视频播放| 亚洲黄网站在线观看| 亚洲精品国产一区二区精华液 | 看电影不卡的网站| 韩国女主播一区二区三区| 精品一区二区影视| 国内成人精品2018免费看| 韩国欧美国产1区| 成人午夜av电影| 一本色道久久综合亚洲精品按摩 | 偷拍自拍另类欧美| 免费人成在线不卡| 国产精品系列在线观看| 99riav久久精品riav| 欧美性色欧美a在线播放| 3d动漫精品啪啪一区二区竹菊| 欧美一区二区三区色| 精品盗摄一区二区三区| 日本一区二区免费在线观看视频| 亚洲国产精品激情在线观看| 亚洲欧美区自拍先锋| 免费黄网站欧美| 成人国产精品免费观看动漫| 欧美性一二三区| 亚洲精品一区二区三区四区高清| 国产精品久久久久久福利一牛影视 | 欧美sm极限捆绑bd| 欧美一区二区三区公司| 久久免费电影网| 色综合久久综合网97色综合| 色悠悠亚洲一区二区| 欧美不卡一二三| 玉米视频成人免费看| 久久精品国产色蜜蜜麻豆| 99精品偷自拍| 久久影院电视剧免费观看| 五月婷婷综合激情| av中文字幕亚洲| 久久久精品一品道一区| 日韩精品免费专区| 国产精品资源网| 91小视频免费看| 久久麻豆一区二区| 丝袜a∨在线一区二区三区不卡| 久久精品国产色蜜蜜麻豆| 欧美网站大全在线观看| 国产精品欧美综合在线| 毛片不卡一区二区| 91精品国产综合久久久久久久| 亚洲精品美腿丝袜| 99久久伊人久久99| 欧美国产欧美综合| 成人深夜在线观看| 国产日韩精品久久久| 国产一区二区三区免费| 日韩免费观看高清完整版| 亚洲影视在线观看| 在线观看亚洲a| 亚洲大片免费看| 在线播放亚洲一区| 奇米888四色在线精品| 制服丝袜亚洲播放| 人人狠狠综合久久亚洲| 欧美一区二区成人| 久久机这里只有精品| 精品成a人在线观看| 成人午夜视频网站| 国产精品国产自产拍在线| 91视频com| 日韩av一二三| 亚洲精品在线观看视频| 99久久精品99国产精品| 一区二区三区日韩欧美| 日韩免费性生活视频播放| 国内精品不卡在线| 亚洲精品美国一| 精品久久久久久久人人人人传媒| 国产一区二区在线观看视频| 亚洲日本在线视频观看| 91精品国产综合久久精品app| 蓝色福利精品导航| 亚洲精品老司机| 久久综合色8888| 欧美无砖砖区免费| 国产成人在线视频播放| 中文字幕亚洲精品在线观看| 欧美理论电影在线| 国产精品白丝jk白祙喷水网站 | 中文字幕一区二区三区精华液| 色悠久久久久综合欧美99| 久久av资源网| 亚洲成人自拍网| 亚洲人成网站在线| 久久影院午夜片一区| 欧美片网站yy| 不卡视频在线观看| 韩国av一区二区三区四区| 亚洲国产综合色| 亚洲色图清纯唯美| 欧美激情中文字幕一区二区| 日韩一区二区高清| 欧美日韩国产一二三| 欧洲精品一区二区三区在线观看|