- /* Decrypt the DKDM */
- dcp::DecryptedKDM decrypted (dkdm->dkdm(), Config::instance()->decryption_chain()->key().get());
-
- /* This is the signer for our new KDMs */
- shared_ptr<const dcp::CertificateChain> signer = Config::instance()->signer_chain ();
- if (!signer->valid ()) {
- throw InvalidSignerError ();
+ list<KDMWithMetadataPtr> kdms;
+ string title;
+
+#ifdef DCPOMATIC_VARIANT_SWAROOP
+ shared_ptr<ECinemaDKDM> ecinema_dkdm = boost::dynamic_pointer_cast<ECinemaDKDM> (dkdm_base);
+ if (ecinema_dkdm) {
+ DecryptedECinemaKDM decrypted (ecinema_dkdm->dkdm(), Config::instance()->decryption_chain()->key().get());
+ title = decrypted.name ();
+
+ BOOST_FOREACH (shared_ptr<Screen> i, _screens->screens()) {
+
+ if (!i->recipient) {
+ continue;
+ }
+
+ dcp::LocalTime begin(_timing->from(), i->cinema->utc_offset_hour(), i->cinema->utc_offset_minute());
+ dcp::LocalTime end(_timing->until(), i->cinema->utc_offset_hour(), i->cinema->utc_offset_minute());
+
+ DecryptedECinemaKDM kdm (
+ decrypted.id(),
+ decrypted.name(),
+ decrypted.key(),
+ begin,
+ end
+ );
+
+ dcp::NameFormat::Map name_values;
+ name_values['c'] = i->cinema->name;
+ name_values['s'] = i->name;
+ name_values['f'] = title;
+ name_values['b'] = begin.date() + " " + begin.time_of_day(true, false);
+ name_values['e'] = end.date() + " " + end.time_of_day(true, false);
+ name_values['i'] = kdm.id();
+
+ /* Encrypt */
+ kdms.push_back (
+ KDMWithMetadataPtr(
+ new ECinemaKDMWithMetadata(name_values, i->cinema, kdm.encrypt(i->recipient.get()))
+ )
+ );
+ }