diff options
| author | Carl Hetherington <cth@carlh.net> | 2021-05-27 14:27:22 +0200 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2021-05-27 14:27:22 +0200 |
| commit | bb89ec4a3d7a912f1f79e8b13ec9f1be5481ca96 (patch) | |
| tree | 22d9480e46164c5c499a6542b6c76b45e3d7f2f7 | |
| parent | f75c4440abe1a1cd9838301ac4e3a153178ceb94 (diff) | |
Bump libdcp for fix to decryption of SMPTE subtitles.
Also add a test for that.
| -rw-r--r-- | cscript | 4 | ||||
| -rw-r--r-- | test/encryption_test.cc | 74 | ||||
| -rw-r--r-- | test/wscript | 1 |
3 files changed, 77 insertions, 2 deletions
@@ -388,8 +388,8 @@ def dependencies(target, options): # Use distro-provided FFmpeg on Arch deps = [] - deps.append(('libdcp', '6384002')) - deps.append(('libsub', '55ebde1')) + deps.append(('libdcp', 'dd672d9')) + deps.append(('libsub', 'cd50a10')) deps.append(('leqm-nrt', '93ae9e6')) deps.append(('rtaudio', 'f619b76')) # We get our OpenSSL libraries from the environment, but we diff --git a/test/encryption_test.cc b/test/encryption_test.cc new file mode 100644 index 000000000..5a4a078da --- /dev/null +++ b/test/encryption_test.cc @@ -0,0 +1,74 @@ +/* + Copyright (C) 2021 Carl Hetherington <cth@carlh.net> + + This file is part of DCP-o-matic. + + DCP-o-matic is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + DCP-o-matic is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with DCP-o-matic. If not, see <http://www.gnu.org/licenses/>. + +*/ + + +#include "lib/config.h" +#include "lib/content_factory.h" +#include "lib/dcp_content.h" +#include "lib/dcp_examiner.h" +#include "lib/film.h" +#include "test.h" +#include <dcp/cpl.h> +#include <dcp/dcp.h> +#include <boost/test/unit_test.hpp> + + +using std::make_shared; + + +BOOST_AUTO_TEST_CASE (smpte_dcp_with_subtitles_can_be_decrypted) +{ + auto content = content_factory("test/data/15s.srt").front(); + auto film = new_test_film2 ("smpte_dcp_with_subtitles_can_be_decrypted", { content }); + film->set_interop (false); + film->set_encrypted (true); + make_and_verify_dcp ( + film, + { + dcp::VerificationNote::Code::MISSING_CPL_METADATA, + dcp::VerificationNote::Code::MISSED_CHECK_OF_ENCRYPTED, + dcp::VerificationNote::Code::MISSED_CHECK_OF_ENCRYPTED, + dcp::VerificationNote::Code::MISSING_SUBTITLE_LANGUAGE, + dcp::VerificationNote::Code::MISSING_SUBTITLE_START_TIME, + }); + + dcp::DCP dcp (film->dir(film->dcp_name())); + dcp.read (); + BOOST_REQUIRE_EQUAL (dcp.cpls().size(), 1U); + auto cpl = dcp.cpls()[0]; + BOOST_REQUIRE (cpl->file()); + + auto kdm = film->make_kdm ( + Config::instance()->decryption_chain()->leaf(), + {}, + *cpl->file(), + dcp::LocalTime(), + dcp::LocalTime(), + dcp::Formulation::MODIFIED_TRANSITIONAL_1, + true, + 0 + ); + + auto dcp_content = make_shared<DCPContent>(film->dir(film->dcp_name())); + dcp_content->add_kdm (kdm); + DCPExaminer examiner (dcp_content, false); + BOOST_CHECK (examiner.kdm_valid()); +} + diff --git a/test/wscript b/test/wscript index e2628ecd8..6ef9ac752 100644 --- a/test/wscript +++ b/test/wscript @@ -69,6 +69,7 @@ def build(bld): dcp_subtitle_test.cc digest_test.cc empty_test.cc + encryption_test.cc ffmpeg_audio_only_test.cc ffmpeg_audio_test.cc ffmpeg_dcp_test.cc |
