Set a compile-time limit to X.509 chain length
diff --git a/include/polarssl/config.h b/include/polarssl/config.h
index fa15b37..a0ec2f3 100644
--- a/include/polarssl/config.h
+++ b/include/polarssl/config.h
@@ -2185,6 +2185,9 @@
/* Debug options */
//#define POLARSSL_DEBUG_DFL_MODE POLARSSL_DEBUG_LOG_FULL /**< Default log: Full or Raw */
+/* X509 options */
+//#define POLARSSL_X509_MAX_INTERMEDIATE_CA 8 /**< Maximum number of intermediate CAs in a verification chain. */
+
/* \} name SECTION: Module configuration options */
#include "check_config.h"
diff --git a/include/polarssl/x509.h b/include/polarssl/x509.h
index 9b0bcb7..3fe6820 100644
--- a/include/polarssl/x509.h
+++ b/include/polarssl/x509.h
@@ -45,6 +45,18 @@
* \{
*/
+#if !defined(POLARSSL_X509_MAX_INTERMEDIATE_CA)
+/**
+ * Maximum number of intermediate CAs in a verification chain.
+ * That is, maximum length of the chain, excluding the end-entity certificate
+ * and the trusted root certificate.
+ *
+ * Set this to a low value to prevent an adversary from making you waste
+ * resources verifying an overlong certificate chain.
+ */
+#define POLARSSL_X509_MAX_INTERMEDIATE_CA 8
+#endif
+
/**
* \name X509 Error codes
* \{