summaryrefslogtreecommitdiff
path: root/src/lib/verify_dcp_job.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2023-11-20 00:25:27 +0100
committerCarl Hetherington <cth@carlh.net>2023-11-20 21:37:37 +0100
commit7b439c9baf719b135922e6c6b53472915fed3573 (patch)
tree96493aefa814e5d2bcd73d1bab057d8e6f62d643 /src/lib/verify_dcp_job.cc
parent9b5cff118fe03649c0c404b35f2900ff36008637 (diff)
Verify encrypted DCPs (more) correctly (#2659).
Diffstat (limited to 'src/lib/verify_dcp_job.cc')
-rw-r--r--src/lib/verify_dcp_job.cc21
1 files changed, 19 insertions, 2 deletions
diff --git a/src/lib/verify_dcp_job.cc b/src/lib/verify_dcp_job.cc
index e054fae3a..5e50ec51d 100644
--- a/src/lib/verify_dcp_job.cc
+++ b/src/lib/verify_dcp_job.cc
@@ -19,6 +19,7 @@
*/
+#include "config.h"
#include "cross.h"
#include "verify_dcp_job.h"
#include "content.h"
@@ -35,9 +36,10 @@ 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)
{
}
@@ -76,7 +78,22 @@ VerifyDCPJob::update_stage (string s, optional<boost::filesystem::path> path)
void
VerifyDCPJob::run ()
{
- _notes = dcp::verify(_directories, bind(&VerifyDCPJob::update_stage, this, _1, _2), bind(&VerifyDCPJob::set_progress, this, _1, false), {}, libdcp_resources_path() / "xsd");
+ 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) {