aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMartin Willi <martin@revosec.ch>2010-07-02 10:29:36 +0200
committerMartin Willi <martin@revosec.ch>2010-07-13 10:26:06 +0200
commit5db798c8e0534864412f6aa55b5ae6d2f82dcc7f (patch)
treea950f8dbe649047fa8145742be91e7487f379798 /src
parent01bb70e4adfea9c8cbea3304df890cd8dac1bb41 (diff)
downloadstrongswan-5db798c8e0534864412f6aa55b5ae6d2f82dcc7f.tar.bz2
strongswan-5db798c8e0534864412f6aa55b5ae6d2f82dcc7f.tar.xz
Charon uses a generic trunstchain length limit, not only for X509 certificates
Diffstat (limited to 'src')
-rw-r--r--src/libcharon/credentials/credential_manager.c13
-rw-r--r--src/libstrongswan/credentials/certificates/x509.h1
-rw-r--r--src/pluto/x509.h2
3 files changed, 11 insertions, 5 deletions
diff --git a/src/libcharon/credentials/credential_manager.c b/src/libcharon/credentials/credential_manager.c
index 01c0c0e1e..079af2da8 100644
--- a/src/libcharon/credentials/credential_manager.c
+++ b/src/libcharon/credentials/credential_manager.c
@@ -28,6 +28,11 @@
#include <credentials/certificates/ocsp_request.h>
#include <credentials/certificates/ocsp_response.h>
+/**
+ * Maximum length of a certificate trust chain
+ */
+#define MAX_TRUST_PATH_LEN 7
+
typedef struct private_credential_manager_t private_credential_manager_t;
/**
@@ -1132,7 +1137,7 @@ static bool verify_trust_chain(private_credential_manager_t *this,
auth = auth_cfg_create();
current = subject->get_ref(subject);
- for (pathlen = 0; pathlen <= X509_MAX_PATH_LEN; pathlen++)
+ for (pathlen = 0; pathlen <= MAX_TRUST_PATH_LEN; pathlen++)
{
issuer = get_issuer_cert(this, current, TRUE);
if (issuer)
@@ -1205,9 +1210,9 @@ static bool verify_trust_chain(private_credential_manager_t *this,
}
}
current->destroy(current);
- if (pathlen > X509_MAX_PATH_LEN)
+ if (pathlen > MAX_TRUST_PATH_LEN)
{
- DBG1(DBG_CFG, "maximum path length of %d exceeded", X509_MAX_PATH_LEN);
+ DBG1(DBG_CFG, "maximum path length of %d exceeded", MAX_TRUST_PATH_LEN);
}
if (trusted)
{
@@ -1479,7 +1484,7 @@ static auth_cfg_t *build_trustchain(private_credential_manager_t *this,
}
issuer = get_issuer_cert(this, current, FALSE);
if (!issuer || issuer->equals(issuer, current) ||
- pathlen > X509_MAX_PATH_LEN)
+ pathlen > MAX_TRUST_PATH_LEN)
{
DESTROY_IF(issuer);
break;
diff --git a/src/libstrongswan/credentials/certificates/x509.h b/src/libstrongswan/credentials/certificates/x509.h
index 172bd9696..6e0a5002a 100644
--- a/src/libstrongswan/credentials/certificates/x509.h
+++ b/src/libstrongswan/credentials/certificates/x509.h
@@ -25,7 +25,6 @@
#include <credentials/certificates/certificate.h>
#define X509_NO_PATH_LEN_CONSTRAINT -1
-#define X509_MAX_PATH_LEN 7
typedef struct x509_t x509_t;
typedef enum x509_flag_t x509_flag_t;
diff --git a/src/pluto/x509.h b/src/pluto/x509.h
index e904618b3..3101724a6 100644
--- a/src/pluto/x509.h
+++ b/src/pluto/x509.h
@@ -26,6 +26,8 @@
#include "constants.h"
#include "certs.h"
+#define X509_MAX_PATH_LEN 7
+
extern bool same_keyid(chunk_t a, chunk_t b);
extern bool x509_check_signature(chunk_t tbs, chunk_t sig, int algorithm,
certificate_t *issuer_cert);