#include "parse/asset_map.h"
#include "reel.h"
#include "cpl.h"
-#include "encryption.h"
+#include "signer.h"
#include "kdm.h"
using std::string;
using boost::lexical_cast;
using namespace libdcp;
-DCP::DCP (string directory)
+DCP::DCP (boost::filesystem::path directory)
: _directory (directory)
{
boost::filesystem::create_directories (directory);
}
void
-DCP::write_xml (bool interop, XMLMetadata const & metadata, shared_ptr<Encryption> crypt) const
+DCP::write_xml (bool interop, XMLMetadata const & metadata, shared_ptr<const Signer> signer) const
{
for (list<shared_ptr<CPL> >::const_iterator i = _cpls.begin(); i != _cpls.end(); ++i) {
- (*i)->write_xml (interop, metadata, crypt);
+ (*i)->write_xml (interop, metadata, signer);
}
string pkl_uuid = make_uuid ();
- string pkl_path = write_pkl (pkl_uuid, interop, metadata, crypt);
+ string pkl_path = write_pkl (pkl_uuid, interop, metadata, signer);
write_volindex ();
write_assetmap (pkl_uuid, boost::filesystem::file_size (pkl_path), interop, metadata);
}
std::string
-DCP::write_pkl (string pkl_uuid, bool interop, XMLMetadata const & metadata, shared_ptr<Encryption> crypt) const
+DCP::write_pkl (string pkl_uuid, bool interop, XMLMetadata const & metadata, shared_ptr<const Signer> signer) const
{
assert (!_cpls.empty ());
pkl = doc.create_root_node("PackingList", "http://www.smpte-ra.org/schemas/429-8/2007/PKL");
}
- if (crypt) {
+ if (signer) {
pkl->set_namespace_declaration ("http://www.w3.org/2000/09/xmldsig#", "dsig");
}
(*i)->write_to_pkl (asset_list);
}
- if (crypt) {
- sign (pkl, crypt->certificates, crypt->signer_key, interop);
+ if (signer) {
+ signer->sign (pkl, interop);
}
doc.write_to_file_formatted (p.string (), "UTF-8");
void
DCP::add_kdm (KDM const & kdm)
{
- list<KDMCipher> ciphers = kdm.ciphers ();
+ list<KDMKey> keys = kdm.keys ();
for (list<shared_ptr<CPL> >::iterator i = _cpls.begin(); i != _cpls.end(); ++i) {
- for (list<KDMCipher>::iterator j = ciphers.begin(); j != ciphers.end(); ++j) {
+ for (list<KDMKey>::iterator j = keys.begin(); j != keys.end(); ++j) {
if (j->cpl_id() == (*i)->id()) {
(*i)->add_kdm (kdm);
}