boost::posix_time::ptime valid_from,
boost::posix_time::ptime valid_to,
dcp::Formulation formulation,
- int disable_forensic_marking_picture,
- int disable_forensic_marking_audio,
+ bool disable_forensic_marking_picture,
+ optional<int> disable_forensic_marking_audio,
bool zip
)
{
kdm_from_dkdm (
dcp::DecryptedKDM dkdm,
dcp::Certificate target,
- vector<dcp::Certificate> trusted_devices,
+ vector<string> trusted_devices,
dcp::LocalTime valid_from,
dcp::LocalTime valid_to,
dcp::Formulation formulation,
- int disable_forensic_marking_picture,
- int disable_forensic_marking_audio
+ bool disable_forensic_marking_picture,
+ optional<int> disable_forensic_marking_audio
)
{
/* Signer for new KDM */
boost::posix_time::ptime valid_from,
boost::posix_time::ptime valid_to,
dcp::Formulation formulation,
- int disable_forensic_marking_picture,
- int disable_forensic_marking_audio,
+ bool disable_forensic_marking_picture,
+ optional<int> disable_forensic_marking_audio,
bool zip
)
{
kdm_from_dkdm (
dkdm,
i->recipient.get(),
- i->trusted_devices,
+ i->trusted_device_thumbprints(),
dcp::LocalTime(valid_from, i->cinema->utc_offset_hour(), i->cinema->utc_offset_minute()),
dcp::LocalTime(valid_to, i->cinema->utc_offset_hour(), i->cinema->utc_offset_minute()),
formulation,
shared_ptr<Cinema> cinema;
string screen_description = "";
list<shared_ptr<Screen> > screens;
- optional<dcp::Certificate> certificate;
optional<dcp::EncryptedKDM> dkdm;
optional<boost::posix_time::ptime> valid_from;
optional<boost::posix_time::ptime> valid_to;
optional<string> duration_string;
bool verbose = false;
dcp::Formulation formulation = dcp::MODIFIED_TRANSITIONAL_1;
- int disable_forensic_marking_picture = 0;
- int disable_forensic_marking_audio = 0;
+ bool disable_forensic_marking_picture = false;
+ optional<int> disable_forensic_marking_audio;
program_name = argv[0];
}
break;
case 'p':
- disable_forensic_marking_picture = -1;
+ disable_forensic_marking_picture = true;
break;
case 'a':
- disable_forensic_marking_audio = -1;
- if (optarg == NULL && argv[optind] != NULL && argv[optind][0] != '-') {
+ disable_forensic_marking_audio = 0;
+ if (optarg == 0 && argv[optind] != 0 && argv[optind][0] != '-') {
disable_forensic_marking_audio = atoi (argv[optind++]);
- } else if (optarg != NULL) {
+ } else if (optarg) {
disable_forensic_marking_audio = atoi (optarg);
}
break;
verbose = true;
break;
case 'c':
+ /* This could be a cinema to search for in the configured list or the name of a cinema being
+ built up on-the-fly in the option. Cater for both possilibities here by storing the name
+ (for lookup) and by creating a Cinema which the next Screen will be added to.
+ */
cinema_name = optarg;
- cinema = shared_ptr<Cinema> (new Cinema (optarg, list<string> (), "", 0, 0 ));
+ cinema = shared_ptr<Cinema> (new Cinema (optarg, list<string>(), "", 0, 0));
break;
case 'S':
screen_description = optarg;
break;
- case 'C': {
- certificate = dcp::Certificate (dcp::file_to_string (optarg));
- vector<dcp::Certificate> trusted_devices;
- shared_ptr<Screen> screen (new Screen (screen_description, certificate, trusted_devices));
- if (cinema_name) {
+ case 'C':
+ {
+ /* Make a new screen and add it to the current cinema */
+ shared_ptr<Screen> screen (new Screen (screen_description, dcp::Certificate (dcp::file_to_string (optarg)), vector<TrustedDevice>()));
+ if (cinema) {
cinema->add_screen (screen);
}
screens.push_back (screen);
break;
}
case 'T':
- screens.back()->trusted_devices.push_back (dcp::Certificate (dcp::file_to_string (optarg)));
+ /* A trusted device ends up in the last screen we made */
+ if (!screens.empty ()) {
+ screens.back()->trusted_devices.push_back(TrustedDevice(dcp::Certificate(dcp::file_to_string(optarg))));
+ }
break;
case 'B':
list_cinemas = true;