Basic support for trusted device lists in KDMs (#750).
authorCarl Hetherington <cth@carlh.net>
Sun, 15 Nov 2015 20:57:47 +0000 (20:57 +0000)
committerCarl Hetherington <cth@carlh.net>
Sun, 15 Nov 2015 20:57:47 +0000 (20:57 +0000)
ChangeLog
cscript
src/lib/film.cc
src/lib/film.h
src/tools/dcpomatic_kdm.cc
src/tools/dcpomatic_kdm_cli.cc
test/import_dcp_test.cc

index 3b65b102a25b78475bb9316046ddd29468f5d622..9c11249c602a7c58dd4482da4c8391425c402612 100644 (file)
--- 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 dce2aa0c1051aaaf21c82b812d75ba1f50717364..33669f95cef50bf9c9c4b79f77f5c219cc11364d 100644 (file)
--- 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 = ''
index d406152a19a494a865401979baa0e9e13eed749a..6c0b4d5a541a2deb32fabd851f85fcf8fc60d0f7 100644 (file)
@@ -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)));
                }
        }
 
index 4004421039e01a7c9cd1534e90588d2a3d89278e..faa7cf5baf366f23620ab43234412415cb2a017a 100644 (file)
@@ -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,
index 2c96f37b25be1a849bdf5ab3382220ca8829bd84..ae5802e74506a4f4f9e558dc338ad4b2f1886279 100644 (file)
@@ -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()) {
index c49642c8e9459b5c390e1b4fe3725d5437e26b8e..2f8212a619fe2acc0e5035ea93b3d04031ff67a4 100644 (file)
@@ -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";
index 45cd9f413e6f3e675e9304c2145add06998990c0..32e31da475d1301ccd1d777de2f62a2d320c4312 100644 (file)
@@ -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"),