summaryrefslogtreecommitdiff
path: root/src/lib/kdm_cli.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2023-01-19 22:03:21 +0100
committerCarl Hetherington <cth@carlh.net>2023-02-11 22:26:38 +0100
commit788ef2cf5daf510651cc4f5eb7940d7bd0c44b76 (patch)
tree75505127edb1356dfccfeda76232d49d66a9609a /src/lib/kdm_cli.cc
parent57cbdbed89e6432049fec50ecef28b5b57bcf301 (diff)
Warn/error on making KDMs using recipient certs whose validity periods
lie outside those of the KDMs (#2423).
Diffstat (limited to 'src/lib/kdm_cli.cc')
-rw-r--r--src/lib/kdm_cli.cc16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/lib/kdm_cli.cc b/src/lib/kdm_cli.cc
index a76155a2c..dc74e7161 100644
--- a/src/lib/kdm_cli.cc
+++ b/src/lib/kdm_cli.cc
@@ -240,14 +240,28 @@ from_film (
auto cpl = cpls.front().cpl_file;
+ std::vector<KDMCertificatePeriod> period_checks;
+
try {
list<KDMWithMetadataPtr> kdms;
for (auto i: screens) {
- auto p = kdm_for_screen (film, cpl, i, valid_from, valid_to, formulation, disable_forensic_marking_picture, disable_forensic_marking_audio);
+ auto p = kdm_for_screen(film, cpl, i, valid_from, valid_to, formulation, disable_forensic_marking_picture, disable_forensic_marking_audio, period_checks);
if (p) {
kdms.push_back (p);
}
}
+
+
+ if (find(period_checks.begin(), period_checks.end(), KDMCertificatePeriod::KDM_OUTSIDE_CERTIFICATE) != period_checks.end()) {
+ throw KDMCLIError(
+ "Some KDMs would have validity periods which are completely outside the recipient certificate periods. Such KDMs are very unlikely to work, so will not be created."
+ );
+ }
+
+ if (find(period_checks.begin(), period_checks.end(), KDMCertificatePeriod::KDM_OVERLAPS_CERTIFICATE) != period_checks.end()) {
+ out("For some of these KDMs the recipient certificate's validity period will not cover the whole of the KDM validity period. This might cause problems with the KDMs.");
+ }
+
write_files (kdms, zip, output, container_name_format, filename_format, verbose, out);
if (email) {
send_emails ({kdms}, container_name_format, filename_format, film->dcp_name(), {});