diff options
| author | Carl Hetherington <cth@carlh.net> | 2013-09-24 18:54:09 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2013-09-24 18:54:09 +0100 |
| commit | 725c1f0ead60e73e9dbc17337c416ac4d2720c55 (patch) | |
| tree | 132b82fbdb44320e74289ee6400c4a39d162439e /src/kdm.h | |
| parent | b0b83d69f38a8239f3df1e2872b6cfebf9f84af8 (diff) | |
Various KDM work.
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; }; |
