Supporters update.
[dcpomatic.git] / src / lib / verify_dcp_job.cc
index bd5634669985116de4b74ee9aa6ca9609973bcfe..5e50ec51db3bd3873c99de004d7ae6be01e48758 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2018-2019 Carl Hetherington <cth@carlh.net>
+    Copyright (C) 2018-2021 Carl Hetherington <cth@carlh.net>
 
     This file is part of DCP-o-matic.
 
 
 */
 
+
+#include "config.h"
 #include "cross.h"
 #include "verify_dcp_job.h"
 #include "content.h"
 
 #include "i18n.h"
 
+
 using std::string;
 using std::vector;
 using std::shared_ptr;
@@ -32,30 +35,36 @@ using boost::optional;
 using namespace boost::placeholders;
 #endif
 
-VerifyDCPJob::VerifyDCPJob (vector<boost::filesystem::path> directories)
+
+VerifyDCPJob::VerifyDCPJob(vector<boost::filesystem::path> directories, vector<boost::filesystem::path> kdms)
        : Job (shared_ptr<Film>())
        , _directories (directories)
+       , _kdms(kdms)
 {
 
 }
 
+
 VerifyDCPJob::~VerifyDCPJob ()
 {
        stop_thread ();
 }
 
+
 string
 VerifyDCPJob::name () const
 {
        return _("Verify DCP");
 }
 
+
 string
 VerifyDCPJob::json_name () const
 {
        return N_("verify_dcp");
 }
 
+
 void
 VerifyDCPJob::update_stage (string s, optional<boost::filesystem::path> path)
 {
@@ -65,10 +74,26 @@ VerifyDCPJob::update_stage (string s, optional<boost::filesystem::path> path)
        sub (s);
 }
 
+
 void
 VerifyDCPJob::run ()
 {
-       _notes = dcp::verify (_directories, bind (&VerifyDCPJob::update_stage, this, _1, _2), bind (&VerifyDCPJob::set_progress, this, _1, false), xsd_path());
+       vector<dcp::DecryptedKDM> decrypted_kdms;
+       auto key = Config::instance()->decryption_chain()->key();
+       if (key) {
+               for (auto kdm: _kdms) {
+                       decrypted_kdms.push_back(dcp::DecryptedKDM{dcp::EncryptedKDM(dcp::file_to_string(kdm)), *key});
+               }
+       }
+
+       _notes = dcp::verify(
+               _directories,
+               decrypted_kdms,
+               bind(&VerifyDCPJob::update_stage, this, _1, _2),
+               bind(&VerifyDCPJob::set_progress, this, _1, false),
+               {},
+               libdcp_resources_path() / "xsd"
+               );
 
        bool failed = false;
        for (auto i: _notes) {