/*
- 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;
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)
{
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;
- BOOST_FOREACH (dcp::VerificationNote i, _notes) {
- if (i.type() == dcp::VerificationNote::VERIFY_ERROR) {
+ for (auto i: _notes) {
+ if (i.type() == dcp::VerificationNote::Type::ERROR) {
failed = true;
}
}