X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Fmxf_asset.h;h=d681970eb24291281c22944753ead1c577127792;hb=30e2f6f873002d16aeae707879ea15c1c63a4323;hp=3a0c107175638e27370e30fabb46773ec0a02a1e;hpb=596d77476b0ab7e1ccacbbe5b7ebaccfd99bbfd4;p=libdcp.git diff --git a/src/mxf_asset.h b/src/mxf_asset.h index 3a0c1071..d681970e 100644 --- a/src/mxf_asset.h +++ b/src/mxf_asset.h @@ -22,6 +22,7 @@ #include #include "asset.h" +#include "key.h" namespace ASDCP { class AESEncContext; @@ -32,7 +33,6 @@ namespace libdcp { class MXFMetadata; -class KDMCipher; /** @brief Parent class for assets which have MXF files */ class MXFAsset : public Asset @@ -55,13 +55,19 @@ public: * @param edit_rate Edit rate in frames per second (usually equal to the video frame rate). * @param intrinsic_duration Duration of the whole asset in frames. */ - MXFAsset (std::string directory, std::string file_name, boost::signals2::signal* progress, int edit_rate, int intrinsic_duration, bool encrypted); + MXFAsset ( + std::string directory, + std::string file_name, + boost::signals2::signal* progress, + int edit_rate, + int intrinsic_duration + ); ~MXFAsset (); virtual bool equals (boost::shared_ptr other, EqualityOptions opt, boost::function note) const; - virtual void write_to_cpl (xmlpp::Node *, bool interop) const; + virtual void write_to_cpl (xmlpp::Element *, bool interop) const; /** Fill in a ADSCP::WriteInfo struct. * @param w struct to fill in. @@ -72,34 +78,37 @@ public: void add_typed_key_id (xmlpp::Element *) const; - std::string key_id () const { - return _key_id; + bool encrypted () const { + return !_key_id.empty (); } - void set_key_id (std::string k) { - _key_id = k; + void set_key_id (std::string i) { + _key_id = i; } - bool encrypted () const { - return !_key_id.empty (); + std::string key_id () const { + return _key_id; } + + void set_key (Key); - void set_kdm_cipher (KDMCipher); + boost::optional key () const { + return _key; + } protected: virtual std::string key_type () const = 0; virtual std::string cpl_node_name () const = 0; - virtual std::string cpl_node_namespace (bool) const { - return ""; + virtual std::pair cpl_node_attribute (bool) const { + return std::make_pair ("", ""); } /** Signal to emit to report progress, or 0 */ boost::signals2::signal* _progress; - bool _encrypted; ASDCP::AESEncContext* _encryption_context; - std::string _key_value; - std::string _key_id; ASDCP::AESDecContext* _decryption_context; + std::string _key_id; + boost::optional _key; }; }