📄 newx509.cpp
字号:
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 + -