From e4f7bf60dd92640c6460d60d80ee26e26686c05b Mon Sep 17 00:00:00 2001 From: chris2511 Date: Fri, 12 Dec 2003 16:01:29 +0000 Subject: [PATCH] CRLs will revoke existing certs --- lib/db_base.cpp | 30 +++++++++++++++--------------- lib/db_crl.cpp | 9 +++++---- lib/db_crl.h | 3 --- lib/pki_x509.cpp | 8 ++++++++ widgets/MainWindow.cpp | 2 +- 5 files changed, 29 insertions(+), 23 deletions(-) diff --git a/lib/db_base.cpp b/lib/db_base.cpp index f4f34157..0665be44 100644 --- a/lib/db_base.cpp +++ b/lib/db_base.cpp @@ -79,15 +79,15 @@ db_base::db_base(DbEnv *dbe, QString DBfile, QString DB, DbTxn *global_tid, db_base::~db_base() { - CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON); - fprintf(stderr, "close 1:\n" ); - CRYPTO_mem_leaks_fp(stderr); +// CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON); +// fprintf(stderr, "close 1:\n" ); +// CRYPTO_mem_leaks_fp(stderr); data->close(0); container.setAutoDelete(true); container.clear(); - fprintf(stderr, "close 2:\n" ); - CRYPTO_mem_leaks_fp(stderr); - CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_OFF); +// fprintf(stderr, "close 2:\n" ); +// CRYPTO_mem_leaks_fp(stderr); +// CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_OFF); } void *db_base::getData(void *key, int length, int *dsize) @@ -192,7 +192,7 @@ void db_base::putInt(QString key, int dat, DbTxn *tid) void db_base::loadContainer() { - CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON); +// CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON); DbTxn *tid = NULL; Dbc *cursor = NULL; @@ -211,16 +211,16 @@ void db_base::loadContainer() int size = d->get_size(); try { fprintf(stderr, "loadContainer 1:\n" ); - CRYPTO_mem_leaks_fp(stderr); +// CRYPTO_mem_leaks_fp(stderr); pki = newPKI(); fprintf(stderr, "loadContainer 2:\n" ); - CRYPTO_mem_leaks_fp(stderr); +// CRYPTO_mem_leaks_fp(stderr); pki->setIntName(desc); fprintf(stderr, "loadContainer 3:\n" ); - CRYPTO_mem_leaks_fp(stderr); +// CRYPTO_mem_leaks_fp(stderr); pki->fromData(p, size); fprintf(stderr, "loadContainer 4:\n" ); - CRYPTO_mem_leaks_fp(stderr); +// CRYPTO_mem_leaks_fp(stderr); container.append(pki); } catch (errorEx &err) { @@ -234,10 +234,10 @@ void db_base::loadContainer() delete (d); cursor->close(); fprintf(stderr, "loadContainer 5:\n" ); - CRYPTO_mem_leaks_fp(stderr); +// CRYPTO_mem_leaks_fp(stderr); preprocess(); fprintf(stderr, "loadContainer 6:\n" ); - CRYPTO_mem_leaks_fp(stderr); +// CRYPTO_mem_leaks_fp(stderr); tid->commit(0); } catch (DbException &err) { @@ -245,8 +245,8 @@ void db_base::loadContainer() throw errorEx(err.what()); } fprintf(stderr, "loadContainer 7:\n" ); - CRYPTO_mem_leaks_fp(stderr); - CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_OFF); +// CRYPTO_mem_leaks_fp(stderr); +// CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_OFF); } void db_base::insertPKI(pki_base *pki) diff --git a/lib/db_crl.cpp b/lib/db_crl.cpp index 478ba26e..8eef325d 100644 --- a/lib/db_crl.cpp +++ b/lib/db_crl.cpp @@ -74,16 +74,17 @@ void db_crl::preprocess() } } -//void db_crl::revokeCerts(db_x509 *crts, pki_crl *crl) void db_crl::revokeCerts(pki_crl *crl) { int numc, i; - x509rev revok; + if (! certs) return; + x509rev revok; + pki_x509 *rev; numc = crl->numRev(); - a1int x; for (i=0; igetRev(i); - emit revokeCert(revok); + certs->getByIssSerial(crl->getIssuer(), revok.getSerial()); + rev->setRevoked(revok.getDate()); } } diff --git a/lib/db_crl.h b/lib/db_crl.h index a53c12f3..dd6c6f3e 100644 --- a/lib/db_crl.h +++ b/lib/db_crl.h @@ -69,9 +69,6 @@ class db_crl: public db_base void preprocess(); void inToCont(pki_base *pki); pki_base *insert(pki_base *item); - signals: - void revokeCert(const x509rev &revok); - }; #endif diff --git a/lib/pki_x509.cpp b/lib/pki_x509.cpp index 11728310..43b99e52 100644 --- a/lib/pki_x509.cpp +++ b/lib/pki_x509.cpp @@ -272,6 +272,7 @@ void pki_x509::fromData(unsigned char *p, int size) { int version, sCert, sRev, sLastCrl; unsigned char *p1 = p; + X509 *cert_sik = cert; version = intFromData(&p1); if (version >=1 || version <= 4) { sCert = intFromData(&p1); @@ -316,7 +317,12 @@ void pki_x509::fromData(unsigned char *p, int size) trust = 1; efftrust = 1; } + if (cert) + X509_free(cert_sik); + else + cert = cert_sik; openssl_error(); + } @@ -539,6 +545,8 @@ void pki_x509::setRevoked(const a1time &when) { isrevoked = true; revoked = when; + setEffTrust(0); + setTrust(0); openssl_error(); } diff --git a/widgets/MainWindow.cpp b/widgets/MainWindow.cpp index 9ea7ff6e..6a01f23c 100644 --- a/widgets/MainWindow.cpp +++ b/widgets/MainWindow.cpp @@ -105,7 +105,7 @@ MainWindow::MainWindow(QWidget *parent, const char *name ) #ifdef MDEBUG CRYPTO_malloc_debug_init(); - CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_OFF); + CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON); fprintf(stderr, "malloc() debugging on.\n"); #endif