diff options
| author | Carl Hetherington <cth@carlh.net> | 2017-02-12 20:57:10 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2017-02-12 20:57:10 +0000 |
| commit | db86ed51ba8de94306c949d7b209a7f5f6b75075 (patch) | |
| tree | acfac14a4502bd81abd0d13dcfd9ac122029b812 /src | |
| parent | c8ba5b07c7a8ae814abba14dbe9c435035f89d87 (diff) | |
Add new constructor. Remove believed unnecessary check for KDM assets being ReelAssets. Use add_key() more.
Diffstat (limited to 'src')
| -rw-r--r-- | src/decrypted_kdm.cc | 34 | ||||
| -rw-r--r-- | src/decrypted_kdm.h | 16 |
2 files changed, 42 insertions, 8 deletions
diff --git a/src/decrypted_kdm.cc b/src/decrypted_kdm.cc index a928c0a6..8355e1c8 100644 --- a/src/decrypted_kdm.cc +++ b/src/decrypted_kdm.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2013-2016 Carl Hetherington <cth@carlh.net> + Copyright (C) 2013-2017 Carl Hetherington <cth@carlh.net> This file is part of libdcp. @@ -56,6 +56,7 @@ using std::setw; using std::setfill; using std::hex; using std::pair; +using std::map; using boost::shared_ptr; using namespace dcp; @@ -165,7 +166,7 @@ DecryptedKDM::DecryptedKDM (EncryptedKDM const & kdm, string private_key) /* 93 is not-valid-after (a string) [25 bytes] */ p += 25; /* 118 is the key [ASDCP::KeyLen bytes] */ - _keys.push_back (DecryptedKDMKey ("", key_id, Key (p), cpl_id)); + add_key ("", key_id, Key (p), cpl_id); break; } case 138: @@ -186,7 +187,7 @@ DecryptedKDM::DecryptedKDM (EncryptedKDM const & kdm, string private_key) /* 97 is not-valid-after (a string) [25 bytes] */ p += 25; /* 112 is the key [ASDCP::KeyLen bytes] */ - _keys.push_back (DecryptedKDMKey (key_type, key_id, Key (p), cpl_id)); + add_key (key_type, key_id, Key (p), cpl_id); break; } default: @@ -221,7 +222,27 @@ DecryptedKDM::DecryptedKDM ( } DecryptedKDM::DecryptedKDM ( - boost::shared_ptr<const CPL> cpl, + string cpl_id, + map<shared_ptr<const ReelMXF>, Key> keys, + LocalTime not_valid_before, + LocalTime not_valid_after, + string annotation_text, + string content_title_text, + string issue_date + ) + : _not_valid_before (not_valid_before) + , _not_valid_after (not_valid_after) + , _annotation_text (annotation_text) + , _content_title_text (content_title_text) + , _issue_date (issue_date) +{ + for (map<shared_ptr<const ReelMXF>, Key>::const_iterator i = keys.begin(); i != keys.end(); ++i) { + add_key (i->first->key_type(), i->first->key_id().get(), i->second, cpl_id); + } +} + +DecryptedKDM::DecryptedKDM ( + shared_ptr<const CPL> cpl, Key key, LocalTime not_valid_before, LocalTime not_valid_after, @@ -239,9 +260,8 @@ DecryptedKDM::DecryptedKDM ( bool did_one = false; BOOST_FOREACH(shared_ptr<const ReelAsset> i, cpl->reel_assets ()) { shared_ptr<const ReelMXF> mxf = boost::dynamic_pointer_cast<const ReelMXF> (i); - shared_ptr<const ReelAsset> asset = boost::dynamic_pointer_cast<const ReelAsset> (i); - if (asset && mxf && mxf->key_id ()) { - _keys.push_back (DecryptedKDMKey (mxf->key_type(), mxf->key_id().get(), key, cpl->id ())); + if (mxf && mxf->key_id ()) { + add_key (mxf->key_type(), mxf->key_id().get(), key, cpl->id ()); did_one = true; } } diff --git a/src/decrypted_kdm.h b/src/decrypted_kdm.h index 356b9883..752ced04 100644 --- a/src/decrypted_kdm.h +++ b/src/decrypted_kdm.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2013-2016 Carl Hetherington <cth@carlh.net> + Copyright (C) 2013-2017 Carl Hetherington <cth@carlh.net> This file is part of libdcp. @@ -54,6 +54,7 @@ class DecryptedKDMKey; class EncryptedKDM; class CertificateChain; class CPL; +class ReelMXF; /** @class DecryptedKDM * @brief A decrypted KDM. @@ -86,6 +87,19 @@ public: std::string issue_date ); + /** Construct a DecryptedKDM containing a given set of keys. + * @param keys Keys to be included in the DecryptedKDM. + */ + DecryptedKDM ( + std::string cpl_id, + std::map<boost::shared_ptr<const ReelMXF>, Key> keys, + LocalTime not_valid_before, + LocalTime not_valid_after, + std::string annotation_text, + std::string content_title_text, + std::string issue_date + ); + /** Create a DecryptedKDM by taking a CPL and setting up to encrypt each of its * assets with the same symmetric key. * |
