summaryrefslogtreecommitdiff
path: root/src/kdm.h
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2013-09-24 18:54:09 +0100
committerCarl Hetherington <cth@carlh.net>2013-09-24 18:54:09 +0100
commit725c1f0ead60e73e9dbc17337c416ac4d2720c55 (patch)
tree132b82fbdb44320e74289ee6400c4a39d162439e /src/kdm.h
parentb0b83d69f38a8239f3df1e2872b6cfebf9f84af8 (diff)
Various KDM work.
Diffstat (limited to 'src/kdm.h')
-rw-r--r--src/kdm.h55
1 files changed, 52 insertions, 3 deletions
diff --git a/src/kdm.h b/src/kdm.h
index 253589fe..90ed3b9c 100644
--- a/src/kdm.h
+++ b/src/kdm.h
@@ -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;
};