summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2022-02-12 23:11:44 +0100
committerCarl Hetherington <cth@carlh.net>2022-02-12 23:15:31 +0100
commit3e6b2d886961177c8d89b3f9168393d33c13bff2 (patch)
tree34db251b8c936579d91a549a4a40928c413396a4 /src/lib
parent9bda3fda70912d73266a2dbac5470ca23d2ff6fd (diff)
Warn if the signing certificates have a validity period > 10 years (#2174).
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/config.cc4
-rw-r--r--src/lib/config.h8
2 files changed, 9 insertions, 3 deletions
diff --git a/src/lib/config.cc b/src/lib/config.cc
index abf0eb42b..371682966 100644
--- a/src/lib/config.cc
+++ b/src/lib/config.cc
@@ -456,6 +456,9 @@ try
if (i.has_utf8_strings()) {
bad = BAD_SIGNER_UTF8_STRINGS;
}
+ if ((i.not_after().year() - i.not_before().year()) > 15) {
+ bad = BAD_SIGNER_VALIDITY_TOO_LONG;
+ }
}
if (!_signer_chain->chain_valid() || !_signer_chain->private_key_valid()) {
@@ -472,6 +475,7 @@ try
switch (*bad) {
case BAD_SIGNER_UTF8_STRINGS:
case BAD_SIGNER_INCONSISTENT:
+ case BAD_SIGNER_VALIDITY_TOO_LONG:
_signer_chain = create_certificate_chain ();
break;
case BAD_DECRYPTION_INCONSISTENT:
diff --git a/src/lib/config.h b/src/lib/config.h
index 19e05608c..6e197d36d 100644
--- a/src/lib/config.h
+++ b/src/lib/config.h
@@ -402,6 +402,7 @@ public:
NAG_DELETE_DKDM,
NAG_32_ON_64,
NAG_TOO_MANY_DROPPED_FRAMES,
+ NAG_BAD_SIGNER_CHAIN_VALIDITY,
NAG_COUNT
};
@@ -1059,9 +1060,10 @@ public:
* true to ask Config to solve the problem (by discarding and recreating the bad thing)
*/
enum BadReason {
- BAD_SIGNER_UTF8_STRINGS, ///< signer chain contains UTF-8 strings (not PRINTABLESTRING)
- BAD_SIGNER_INCONSISTENT, ///< signer chain is somehow inconsistent
- BAD_DECRYPTION_INCONSISTENT, ///< KDM decryption chain is somehow inconsistent
+ BAD_SIGNER_UTF8_STRINGS, ///< signer chain contains UTF-8 strings (not PRINTABLESTRING)
+ BAD_SIGNER_INCONSISTENT, ///< signer chain is somehow inconsistent
+ BAD_DECRYPTION_INCONSISTENT, ///< KDM decryption chain is somehow inconsistent
+ BAD_SIGNER_VALIDITY_TOO_LONG, ///< signer certificate validity periods are >10 years
};
static boost::signals2::signal<bool (BadReason)> Bad;