mirror of
https://github.com/chris2511/xca.git
synced 2026-09-14 11:06:19 +05:00
Close #82: Renew CA ROOT Cert
Enable renewal option in the context menu for self-signed CA certificates
This commit is contained in:
parent
df61840afe
commit
c41bbf9b23
@ -911,18 +911,19 @@ void db_x509::certRenewal(QModelIndexList indexes)
|
||||
|
||||
try {
|
||||
oldcert = static_cast<pki_x509*>(idx.internalPointer());
|
||||
if (!oldcert ||
|
||||
!(signer = oldcert->getSigner()) ||
|
||||
if (!oldcert || !(signer = oldcert->getSigner()) ||
|
||||
!(signkey = signer->getRefKey()) ||
|
||||
signkey->isPubKey())
|
||||
return;
|
||||
|
||||
CertExtend *dlg = new CertExtend(mainwin, signer);
|
||||
bool renew_myself = signer == oldcert;
|
||||
CertExtend *dlg = new CertExtend(mainwin,
|
||||
renew_myself ? NULL : signer);
|
||||
dlg->revoke->setEnabled(!renew_myself);
|
||||
if (!dlg->exec()) {
|
||||
delete dlg;
|
||||
return;
|
||||
}
|
||||
if (dlg->revoke->isChecked()) {
|
||||
if (dlg->revoke->isChecked() && !renew_myself) {
|
||||
Revocation *revoke = new Revocation(mainwin, indexes);
|
||||
doRevoke = revoke->exec();
|
||||
r = revoke->getRevocation();
|
||||
@ -932,6 +933,7 @@ void db_x509::certRenewal(QModelIndexList indexes)
|
||||
oldcert = static_cast<pki_x509*>
|
||||
(idx.internalPointer());
|
||||
newcert = new pki_x509(oldcert);
|
||||
newcert->pkiSource = renewed;
|
||||
serial = getUniqueSerial(signer);
|
||||
newcert->setRevoked(x509rev());
|
||||
|
||||
|
||||
@ -284,6 +284,7 @@ QString pki_base::pki_source_name() const
|
||||
case transformed: return tr("Transformed");
|
||||
case token: return tr("Token");
|
||||
case legacy_db: return tr("Legacy Database");
|
||||
case renewed: return tr("Renewed");
|
||||
}
|
||||
return QString("???");
|
||||
}
|
||||
|
||||
@ -32,7 +32,8 @@ enum pki_source {
|
||||
generated,
|
||||
transformed,
|
||||
token,
|
||||
legacy_db
|
||||
legacy_db,
|
||||
renewed
|
||||
};
|
||||
|
||||
#define VIEW_item_id 0
|
||||
|
||||
@ -39,7 +39,7 @@ void CertExtend::on_applyTime_clicked()
|
||||
|
||||
void CertExtend::accept()
|
||||
{
|
||||
if (notBefore->getDate() < signer->getNotBefore()) {
|
||||
if (signer && notBefore->getDate() < signer->getNotBefore()) {
|
||||
QString text = tr("The certificate will be earlier valid than the signer. This is probably not what you want.");
|
||||
xcaWarning msg(this, text);
|
||||
msg.addButton(QMessageBox::Ok)->setText(tr("Edit dates"));
|
||||
@ -60,7 +60,7 @@ void CertExtend::accept()
|
||||
notBefore->setDate(signer->getNotBefore());
|
||||
}
|
||||
}
|
||||
if (notAfter->getDate() > signer->getNotAfter() &&
|
||||
if (signer && notAfter->getDate() > signer->getNotAfter() &&
|
||||
!noWellDefinedExpDate->isChecked()) {
|
||||
QString text = tr("The certificate will be longer valid than the signer. This is probably not what you want.");
|
||||
xcaWarning msg(this, text);
|
||||
|
||||
@ -72,6 +72,8 @@ void CertTreeView::fillContextMenu(QMenu *menu, QMenu *subExport,
|
||||
SLOT(manageRevocations()));
|
||||
subCa->setEnabled(cert->canSign());
|
||||
}
|
||||
if (parent == cert && parent->canSign())
|
||||
menu->addAction(tr("Renewal"), this, SLOT(certRenewal()));
|
||||
if (sameParent && parentCanSign) {
|
||||
QString n = multi ? QString(" [%1]").arg(indexes.size()) : "";
|
||||
menu->addAction(tr("Renewal") +n, this, SLOT(certRenewal()));
|
||||
|
||||
Loading…
Reference in New Issue
Block a user