summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2015-11-15 20:57:47 +0000
committerCarl Hetherington <cth@carlh.net>2015-11-15 20:57:47 +0000
commit69f25e496ba409c02aa27b1e07dfcde34c86a32b (patch)
treef36e0e621fe2c514f96cf7365f57b0acd151877b
parente170d9908c191180aefe71ff7cfa81a5ba08ed83 (diff)
Basic support for trusted device lists in KDMs (#750).
-rw-r--r--ChangeLog4
-rw-r--r--cscript4
-rw-r--r--src/lib/film.cc7
-rw-r--r--src/lib/film.h3
-rw-r--r--src/tools/dcpomatic_kdm.cc2
-rw-r--r--src/tools/dcpomatic_kdm_cli.cc2
-rw-r--r--test/import_dcp_test.cc2
7 files changed, 16 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog
index 3b65b102a..9c11249c6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2015-11-15 Carl Hetherington <cth@carlh.net>
+
+ * Basic support for trusted device lists in KDMs (#750).
+
2015-11-14 Carl Hetherington <cth@carlh.net>
* Updated nl_NL translation from Rob van Nieuwkerk.
diff --git a/cscript b/cscript
index dce2aa0c1..33669f95c 100644
--- a/cscript
+++ b/cscript
@@ -279,8 +279,8 @@ def dependencies(target):
ffmpeg_options = {}
return (('ffmpeg-cdist', 'd0986a9', ffmpeg_options),
- ('libdcp', '89d891b'),
- ('libsub', 'e4fde97'))
+ ('libdcp', '332c7c3'),
+ ('libsub', '8182aed'))
def configure_options(target):
opt = ''
diff --git a/src/lib/film.cc b/src/lib/film.cc
index d406152a1..6c0b4d5a5 100644
--- a/src/lib/film.cc
+++ b/src/lib/film.cc
@@ -1113,7 +1113,8 @@ Film::frame_size () const
dcp::EncryptedKDM
Film::make_kdm (
- dcp::Certificate target,
+ dcp::Certificate recipient,
+ vector<dcp::Certificate> trusted_devices,
boost::filesystem::path cpl_file,
dcp::LocalTime from,
dcp::LocalTime until,
@@ -1128,7 +1129,7 @@ Film::make_kdm (
return dcp::DecryptedKDM (
cpl, key(), from, until, "DCP-o-matic", cpl->content_title_text(), dcp::LocalTime().as_string()
- ).encrypt (signer, target, formulation);
+ ).encrypt (signer, recipient, trusted_devices, formulation);
}
list<ScreenKDM>
@@ -1144,7 +1145,7 @@ Film::make_kdms (
BOOST_FOREACH (shared_ptr<Screen> i, screens) {
if (i->recipient) {
- kdms.push_back (ScreenKDM (i, make_kdm (i->recipient.get(), dcp, from, until, formulation)));
+ kdms.push_back (ScreenKDM (i, make_kdm (i->recipient.get(), i->trusted_devices, dcp, from, until, formulation)));
}
}
diff --git a/src/lib/film.h b/src/lib/film.h
index 400442103..faa7cf5ba 100644
--- a/src/lib/film.h
+++ b/src/lib/film.h
@@ -121,7 +121,8 @@ public:
dcp::EncryptedKDM
make_kdm (
- dcp::Certificate target,
+ dcp::Certificate recipient,
+ std::vector<dcp::Certificate> trusted_devices,
boost::filesystem::path cpl_file,
dcp::LocalTime from,
dcp::LocalTime until,
diff --git a/src/tools/dcpomatic_kdm.cc b/src/tools/dcpomatic_kdm.cc
index 2c96f37b2..ae5802e74 100644
--- a/src/tools/dcpomatic_kdm.cc
+++ b/src/tools/dcpomatic_kdm.cc
@@ -279,7 +279,7 @@ private:
}
/* Encrypt */
- screen_kdms.push_back (ScreenKDM (i, kdm.encrypt (signer, i->recipient.get(), _output->formulation())));
+ screen_kdms.push_back (ScreenKDM (i, kdm.encrypt (signer, i->recipient.get(), i->trusted_devices, _output->formulation())));
}
if (_output->write_to()) {
diff --git a/src/tools/dcpomatic_kdm_cli.cc b/src/tools/dcpomatic_kdm_cli.cc
index c49642c8e..2f8212a61 100644
--- a/src/tools/dcpomatic_kdm_cli.cc
+++ b/src/tools/dcpomatic_kdm_cli.cc
@@ -255,7 +255,7 @@ int main (int argc, char* argv[])
}
dcp::Certificate certificate (dcp::file_to_string (certificate_file));
- dcp::EncryptedKDM kdm = film->make_kdm (certificate, cpl, valid_from.get(), valid_to.get(), formulation);
+ dcp::EncryptedKDM kdm = film->make_kdm (certificate, vector<dcp::Certificate>(), cpl, valid_from.get(), valid_to.get(), formulation);
kdm.as_xml (output);
if (verbose) {
cout << "Generated KDM " << output << " for certificate.\n";
diff --git a/test/import_dcp_test.cc b/test/import_dcp_test.cc
index 45cd9f413..32e31da47 100644
--- a/test/import_dcp_test.cc
+++ b/test/import_dcp_test.cc
@@ -29,6 +29,7 @@
#include <dcp/cpl.h>
#include <boost/test/unit_test.hpp>
+using std::vector;
using boost::shared_ptr;
/** Make an encrypted DCP, import it and make a new unencrypted DCP */
@@ -54,6 +55,7 @@ BOOST_AUTO_TEST_CASE (import_dcp_test)
dcp::EncryptedKDM kdm = A->make_kdm (
Config::instance()->decryption_chain()->leaf (),
+ vector<dcp::Certificate> (),
A_dcp.cpls().front()->file (),
dcp::LocalTime ("2014-07-21T00:00:00+00:00"),
dcp::LocalTime ("2024-07-21T00:00:00+00:00"),