From bb89ec4a3d7a912f1f79e8b13ec9f1be5481ca96 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Thu, 27 May 2021 14:27:22 +0200 Subject: [PATCH] Bump libdcp for fix to decryption of SMPTE subtitles. Also add a test for that. --- cscript | 4 +-- test/encryption_test.cc | 74 +++++++++++++++++++++++++++++++++++++++++ test/wscript | 1 + 3 files changed, 77 insertions(+), 2 deletions(-) create mode 100644 test/encryption_test.cc diff --git a/cscript b/cscript index deddcb51a..986b97636 100644 --- a/cscript +++ b/cscript @@ -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 + + 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 . + +*/ + + +#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 +#include +#include + + +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(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 -- 2.30.2