summaryrefslogtreecommitdiff
path: root/src/lib/writer.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2014-07-18 13:12:41 +0100
committerCarl Hetherington <cth@carlh.net>2014-07-18 13:12:41 +0100
commit5ea52a08f45b0cb8b8fe7221244cdcdeeaca0ed7 (patch)
treeff9b2d893caa5a1d2914b52e98112f22fb96bdec /src/lib/writer.cc
parent684da6bed46635f72d93c57a8721b63aa7e10ed5 (diff)
Keep signing certificates / keys in config.xml rather than on disk; allow configuration.
Diffstat (limited to 'src/lib/writer.cc')
-rw-r--r--src/lib/writer.cc17
1 files changed, 16 insertions, 1 deletions
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 <dcp/reel_subtitle_asset.h>
#include <dcp/dcp.h>
#include <dcp/cpl.h>
+#include <dcp/signer.h>
#include "writer.h"
#include "compose.hpp"
#include "film.h"
@@ -124,6 +125,11 @@ Writer::Writer (shared_ptr<const Film> f, weak_ptr<Job> 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<const dcp::Signer> ());
+ shared_ptr<const dcp::Signer> 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