⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 newx509.cpp

📁 一个跨平台的CA系统 实现了数字证书的制作、SSL安全通讯、加解密操作等功能
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	crlDist->setText(temp->crlDist);	setAuthInfAcc_string(temp->authInfAcc);	certPol->setText(temp->certPol);	nsComment->setText(temp->nsComment);	nsBaseUrl->setText(temp->nsBaseUrl);	nsRevocationUrl->setText(temp->nsRevocationUrl);	nsCARevocationUrl->setText(temp->nsCARevocationUrl);	nsRenewalUrl->setText(temp->nsRenewalUrl);	nsCaPolicyUrl->setText(temp->nsCaPolicyUrl);	nsSslServerName->setText(temp->nsSslServerName);	int2lb(nsCertType, temp->nsCertType);	basicCA->setCurrentItem(temp->ca);	bcCritical->setChecked(temp->bcCrit);	kuCritical->setChecked(temp->keyUseCrit);	ekuCritical->setChecked(temp->eKeyUseCrit);	subKey->setChecked(temp->subKey);	authKey->setChecked(temp->authKey);	subAltCp->setChecked(temp->subAltCp);	issAltCp->setChecked(temp->issAltCp);	int2lb(keyUsage, temp->keyUse);	int2lb(ekeyUsage, temp->eKeyUse);	validNumber->setText(QString::number(temp->validN));	validRange->setCurrentItem(temp->validM);	midnightCB->setChecked(temp->validMidn);	if (temp->pathLen) {		basicPath->setText(QString::number(temp->pathLen));	}	notBefore->setNow();	applyTimeDiff();}void NewX509::toTemplate(pki_temp *temp){	temp->setIntName(description->text());	temp->xname = getX509name();	temp->subAltName = subAltName->text();	temp->issAltName = issAltName->text();	temp->crlDist = crlDist->text();	temp->authInfAcc = getAuthInfAcc_string();	temp->certPol = certPol->text();	temp->nsComment = nsComment->text();	temp->nsBaseUrl = nsBaseUrl->text();	temp->nsRevocationUrl = nsRevocationUrl->text();	temp->nsCARevocationUrl = nsCARevocationUrl->text();	temp->nsRenewalUrl = nsRenewalUrl->text();	temp->nsCaPolicyUrl = nsCaPolicyUrl->text();	temp->nsSslServerName = nsSslServerName->text();	temp->nsCertType =  lb2int(nsCertType);	temp->ca = basicCA->currentItem();	temp->bcCrit = bcCritical->isChecked();	temp->keyUseCrit = kuCritical->isChecked();	temp->eKeyUseCrit = ekuCritical->isChecked();	temp->subKey = subKey->isChecked();	temp->authKey = authKey->isChecked();	temp->subAltCp = subAltCp->isChecked();	temp->issAltCp = issAltCp->isChecked();	temp->keyUse = lb2int(keyUsage);	temp->eKeyUse = lb2int(ekeyUsage);	temp->validN = validNumber->text().toInt();	temp->validM = validRange->currentItem();	temp->pathLen = basicPath->text().toInt();	temp->validMidn = midnightCB->isChecked();}void NewX509::toggleFromRequest(){	if (fromReqCB->isChecked()) {		setAppropriate(page2, false);		reqList->setEnabled(true);	}	else {		setAppropriate(page2, true);		reqList->setEnabled(false);	}}		void NewX509::dataChangeP2(){	if (description->text() != ""  && countryName->text().length() !=1 &&	    (keyList->count() > 0  || !keyList->isEnabled())){		setNextEnabled(page2,true);	}	else {		setNextEnabled(page2,false);	}}void NewX509::showPage(QWidget *page){		if (page == page0) {		signerChanged();		switchExtended();		toggleFromRequest();	}	else if ( page == page2 ) {		if (keyList->isEnabled() && keyList->count() == 0 ) {			emit genKey();		}		dataChangeP2();	}		if (page == page7) {		QString issn, subn;		if (fromReqCB->isChecked()) {			pki_x509req *req = getSelectedReq();			if (req) {				subn = req->getSubject().oneLine();			}		}		else			subn = getX509name().oneLine();				pki_x509 *issuer = getSelectedSigner();		if (issuer && foreignSignRB->isChecked())			issn = issuer->getSubject().oneLine();		else			issn = subn;				subn = "<p><b>Subject:</b> " + subn;		issn = "<p><b>Issuer:</b> " + issn;		if (!appropriate(page1)) issn = "";				v3Extensions->setText( subn + issn + "<p>" + createRequestText() );	}		if (page == page4) {		checkAuthKeyId();	}				QWizard::showPage(page);		if ( page == page2 ) {		description->setFocus();		}	else if (page == page4) {		basicCA->setFocus();		if (emailAddress->text().isEmpty() && appropriate(page1))			subAltCp->setEnabled(false);		else			subAltCp->setEnabled(true);	}}void NewX509::signerChanged(){	a1time snb, sna;	pki_x509 *cert = getSelectedSigner();		issAltCp->setEnabled(false);	if (!cert) return;	if (cert->hasSubAltName() || !appropriate(page1))		issAltCp->setEnabled(true);		QString templ = cert->getTemplate();		snb = cert->getNotBefore();	sna = cert->getNotAfter();	if (snb > notBefore->getDate())		notBefore->setDate(snb);	if (sna < notAfter->getDate())		notAfter->setDate(sna);		if (templ.isEmpty()) return;		templateChanged(templ);	}void NewX509::templateChanged(QString tempname){	if (!tempList->isEnabled()) return;#ifdef qt3	tempList->setCurrentText(tempname);#else	for (int i=0; i<tempList->count();i++) {		if (tempList->text(i) == tempname) {			tempList->setCurrentItem(i);			break;		}	}#endif	templateChanged();}void NewX509::templateChanged(pki_temp *templ){	QString tempname = templ->getIntName();	templateChanged(tempname);}	void NewX509::templateChanged(){	pki_temp *temp = NULL;	int item;	if (!appropriate(page1)) return;	if (!tempList->isEnabled()) return;	if ((item = tempList->currentItem())<4) {		temp = new pki_temp("temp",item);		if (temp) { 			fromTemplate(temp);			delete (temp);		}		return;	}	QString name = tempList->currentText();	if (name.isEmpty()) return;	temp = (pki_temp *)MainWindow::temps->getByName(name);	if (!temp) return;	fromTemplate(temp);}void NewX509::switchExtended(){	if ( !appropriate(page1) ) return;	if (changeDefault->isChecked() || !templateBox->isEnabled()) {		setAppropriate(page4, true);		setAppropriate(page5, true);		setAppropriate(page6, true);	}	else {		setAppropriate(page4, false);		setAppropriate(page5, false);		setAppropriate(page6, false);	}}		    void NewX509::checkAuthKeyId(){	bool enabled = false;	// for Templates:	if ( !appropriate(page1) ) enabled = true ; 	if (foreignSignRB->isChecked()) {		//if (getSelectedSigner()->hasSubAltName())		enabled = true;	}	else { // Self signed		if (subKey->isChecked() && subKey->isEnabled())			enabled = true;	}	authKey->setEnabled(enabled);}			void NewX509::newKeyDone(QString name){	keyList->insertItem(name,0);	keyList->setCurrentItem(0);	dataChangeP2();	}void NewX509::helpClicked(){	QWhatsThis::enterWhatsThisMode();}pki_key *NewX509::getSelectedKey(){	return (pki_key *)MainWindow::keys->getByName(keyList->currentText());}pki_x509 *NewX509::getSelectedSigner(){	return (pki_x509 *)MainWindow::certs->getByName(certList->currentText());}pki_x509req *NewX509::getSelectedReq(){	return (pki_x509req *)MainWindow::reqs->getByName(reqList->currentText());}x509name NewX509::getX509name(){	x509name x;	for (int j = 0; j<EXPLICIT_NAME_CNT; j++) {		x.addEntryByNid(name_nid[j], name_ptr[j]->text());	}	QListViewItem *lvi = extDNlist->firstChild();	while (lvi != NULL) {		int nid;		nid = OBJ_ln2nid(lvi->text(0).latin1());		x.addEntryByNid(nid, lvi->text(1));		lvi = lvi->nextSibling();	}	return x;}void NewX509::setX509name(const x509name &n){	int j;		extDNlist->clear();	for ( j = 0; j<EXPLICIT_NAME_CNT; j++) {		name_ptr[j]->setText(""); 	}	for ( int i=0; i< n.entryCount(); i++) {		int nid = n.nid(i);		QStringList sl = n.entryList(i);		for ( j = 0; j<EXPLICIT_NAME_CNT; j++) {			if (nid == name_nid[j] && name_ptr[j]->text().isEmpty()) { 				name_ptr[j]->setText(sl[2]); 				break;			}		}		if (j == EXPLICIT_NAME_CNT) {			new QListViewItem(extDNlist, sl[1], sl[2]);		}	}}void NewX509::addX509NameEntry(){	new QListViewItem(extDNlist, extDNobj->currentText(), extDNname->text());}void NewX509::delX509NameEntry(){	extDNlist->removeItem(extDNlist->currentItem());}const EVP_MD *NewX509::getHashAlgo(){	const EVP_MD *ha[] = {EVP_md2(), EVP_md5(), EVP_sha1()};	return ha[hashAlgo->currentItem()];}void NewX509::applyTimeDiff(){#define d_fac (60 * 60 * 24)	int faktor[] = { 1, 30, 365 };	int N = validNumber->text().toInt();	int M = validRange->currentItem();	int midnight = midnightCB->isChecked()? 1:0;		if (M>2||M<0) M=0;	a1time a;	time_t t;	time(&t);	int delta = faktor[M] * N ;	t /= d_fac;		if (delta + t > 24850){		 QMessageBox::warning(this, XCA_TITLE, "Time difference too big\nYou must set it manually." );		 return;	}    notBefore->setDate(a.now(), midnight);	notAfter->setDate(a.now(delta * d_fac), midnight* (-1));	 }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -