diff options
Diffstat (limited to 'src/kdm.h')
| -rw-r--r-- | src/kdm.h | 55 |
1 files changed, 52 insertions, 3 deletions
@@ -21,35 +21,73 @@ #define LIBDCP_KDM_H #include <boost/filesystem.hpp> +#include <boost/scoped_ptr.hpp> #include "key.h" +#include "metadata.h" namespace libdcp { +namespace xml { + class DCinemaSecurityMessage; +}; + +class Signer; +class Certificate; +class CPL; + /** A single key for encrypting or decrypting an MXF. One or more of these * are delivered in a KDM. */ -class KDMKey : public boost::noncopyable +class KDMKey { public: KDMKey (uint8_t const *, int); + KDMKey ( + boost::shared_ptr<const Signer> signer, + std::string cpl_id, std::string key_id, boost::posix_time::ptime from, boost::posix_time::ptime until, Key key + ); + + KDMKey (KDMKey const &); + + KDMKey& operator= (KDMKey const &); + + std::string cpl_id () const { + return _cpl_id; + } + + std::string key_id () const { + return _key_id; + } + + std::string not_valid_before () const { + return _not_valid_before; + } + + std::string not_valid_after () const { + return _not_valid_after; + } + Key key () const { return _key; } + + std::string base64 () const; private: void get (uint8_t *, uint8_t const **, int) const; std::string get (uint8_t const **, int) const; std::string get_uuid (uint8_t const **) const; void put (uint8_t **, uint8_t const *, int) const; + void put (uint8_t **, std::string) const; void put_uuid (uint8_t **, std::string) const; uint8_t _signer_thumbprint[20]; std::string _cpl_id; - std::string _not_valid_before; - std::string _not_valid_after; std::string _key_type; std::string _key_id; + std::string _not_valid_before; + std::string _not_valid_after; Key _key; }; @@ -58,12 +96,23 @@ class KDM public: KDM (boost::filesystem::path, boost::filesystem::path); + KDM ( + boost::shared_ptr<const CPL> cpl, boost::shared_ptr<const Signer>, boost::shared_ptr<const Certificate> recipient_cert, + boost::posix_time::ptime not_valid_before, boost::posix_time::ptime not_valid_after, + MXFMetadata mxf_metadata, XMLMetadata xml_metadata + ); + std::list<KDMKey> keys () const { return _keys; } + void as_xml (boost::filesystem::path) const; + private: + std::string _message_id; std::list<KDMKey> _keys; + + boost::shared_ptr<xml::DCinemaSecurityMessage> xml_kdm; }; |
