aboutsummaryrefslogtreecommitdiffstats
path: root/src/charon/config
diff options
context:
space:
mode:
authorAndreas Steffen <andreas.steffen@strongswan.org>2006-06-09 05:48:49 +0000
committerAndreas Steffen <andreas.steffen@strongswan.org>2006-06-09 05:48:49 +0000
commitac427e3677e2cb7b41142eb99dd7ae37dc2a5a97 (patch)
treebc63a5ebf1fa0c40b06ff4964f3b44e8bb4fd615 /src/charon/config
parenta612f2dd00dc5ee1c1366597d3c70dac84174e92 (diff)
downloadstrongswan-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.c21
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);
+ }
}
}
}