X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Flib%2Fwriter.cc;h=c34a6a66d7350cd624f526b8de4b4689b2a11523;hb=5ea52a08f45b0cb8b8fe7221244cdcdeeaca0ed7;hp=b165545c7b23e5f3eb04b085d50020861f135ffd;hpb=684da6bed46635f72d93c57a8721b63aa7e10ed5;p=dcpomatic.git diff --git a/src/lib/writer.cc b/src/lib/writer.cc index b165545c7..c34a6a66d 100644 --- a/src/lib/writer.cc +++ b/src/lib/writer.cc @@ -30,6 +30,7 @@ #include #include #include +#include #include "writer.h" #include "compose.hpp" #include "film.h" @@ -124,6 +125,11 @@ Writer::Writer (shared_ptr f, weak_ptr j) _sound_mxf_writer = _sound_mxf->start_write (_film->directory() / _film->audio_mxf_filename(), _film->interop() ? dcp::INTEROP : dcp::SMPTE); } + /* Check that the signer is OK if we need one */ + if (_film->is_signed() && !Config::instance()->signer()->valid ()) { + throw InvalidSignerError (); + } + _thread = new boost::thread (boost::bind (&Writer::thread, this)); job->sub (_("Encoding image data")); @@ -484,7 +490,16 @@ Writer::finish () dcp::XMLMetadata meta = Config::instance()->dcp_metadata (); meta.set_issue_date_now (); - dcp.write_xml (_film->interop () ? dcp::INTEROP : dcp::SMPTE, meta, _film->is_signed() ? make_signer () : shared_ptr ()); + shared_ptr signer; + if (_film->is_signed ()) { + signer = Config::instance()->signer (); + /* We did check earlier, but check again here to be on the safe side */ + if (!signer->valid ()) { + throw InvalidSignerError (); + } + } + + dcp.write_xml (_film->interop () ? dcp::INTEROP : dcp::SMPTE, meta, signer); LOG_GENERAL ( N_("Wrote %1 FULL, %2 FAKE, %3 pushed to disk"), _full_written, _fake_written, _pushed_to_disk