diff options
author | Andreas Steffen <andreas.steffen@strongswan.org> | 2006-06-09 05:48:49 +0000 |
---|---|---|
committer | Andreas Steffen <andreas.steffen@strongswan.org> | 2006-06-09 05:48:49 +0000 |
commit | ac427e3677e2cb7b41142eb99dd7ae37dc2a5a97 (patch) | |
tree | bc63a5ebf1fa0c40b06ff4964f3b44e8bb4fd615 /src/charon/config | |
parent | a612f2dd00dc5ee1c1366597d3c70dac84174e92 (diff) | |
download | strongswan-ac427e3677e2cb7b41142eb99dd7ae37dc2a5a97.tar.bz2 strongswan-ac427e3677e2cb7b41142eb99dd7ae37dc2a5a97.tar.xz |
discard cert if CA basic constraints flag is not set and warn if cert is not valide
Diffstat (limited to 'src/charon/config')
-rw-r--r-- | src/charon/config/credentials/local_credential_store.c | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/src/charon/config/credentials/local_credential_store.c b/src/charon/config/credentials/local_credential_store.c index 09eac6aaa..1034cecd1 100644 --- a/src/charon/config/credentials/local_credential_store.c +++ b/src/charon/config/credentials/local_credential_store.c @@ -263,11 +263,22 @@ static void load_ca_certificates(private_local_credential_store_t *this, const c cert = x509_create_from_file(file, "ca certificate"); if (cert) { - this->ca_certs->insert_last(this->ca_certs, (void*)cert); - } - else - { - this->logger->log(this->logger, ERROR, "certificate \"%s\" invalid, skipped", file); + err_t ugh = cert->is_valid(cert, NULL); + + if (ugh != NULL) + { + this->logger->log(this->logger, ERROR, "warning: ca certificate %s", ugh); + } + if (cert->is_ca(cert)) + { + this->ca_certs->insert_last(this->ca_certs, (void*)cert); + } + else + { + this->logger->log(this->logger, ERROR, + " CA basic constraints flag not set, cert discarded"); + cert->destroy(cert); + } } } } |