Merge branch '1.0' of git.carlh.net:git/libdcp into 1.0
[libdcp.git] / src / decrypted_kdm.cc
index 949db72bdcc6e763767e7c24fea85d1af3d7ddae..b18d9a900b6c6ce0e5955401fe2941251bdb4de8 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2013-2015 Carl Hetherington <cth@carlh.net>
+    Copyright (C) 2013-2016 Carl Hetherington <cth@carlh.net>
 
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -36,6 +36,7 @@
 #include <boost/foreach.hpp>
 
 using std::list;
+using std::vector;
 using std::string;
 using std::stringstream;
 using std::setw;
@@ -181,6 +182,26 @@ DecryptedKDM::DecryptedKDM (EncryptedKDM const & kdm, string private_key)
 
        RSA_free (rsa);
        BIO_free (bio);
+
+       _annotation_text = kdm.annotation_text ();
+       _content_title_text = kdm.content_title_text ();
+       _issue_date = kdm.issue_date ();
+}
+
+DecryptedKDM::DecryptedKDM (
+       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)
+{
+
 }
 
 DecryptedKDM::DecryptedKDM (
@@ -211,8 +232,25 @@ DecryptedKDM::DecryptedKDM (
        }
 }
 
+/** @param type (MDIK, MDAK etc.)
+ *  @param key_id Key ID.
+ *  @param key The actual symmetric key.
+ *  @param cpl_id ID of CPL that the key is for.
+ */
+void
+DecryptedKDM::add_key (string type, string key_id, Key key, string cpl_id)
+{
+       _keys.push_back (DecryptedKDMKey (type, key_id, key, cpl_id));
+}
+
+void
+DecryptedKDM::add_key (DecryptedKDMKey key)
+{
+       _keys.push_back (key);
+}
+
 EncryptedKDM
-DecryptedKDM::encrypt (shared_ptr<const CertificateChain> signer, Certificate recipient, Formulation formulation) const
+DecryptedKDM::encrypt (shared_ptr<const CertificateChain> signer, Certificate recipient, vector<Certificate> trusted_devices, Formulation formulation) const
 {
        list<pair<string, string> > key_ids;
        list<string> keys;
@@ -268,9 +306,11 @@ DecryptedKDM::encrypt (shared_ptr<const CertificateChain> signer, Certificate re
        return EncryptedKDM (
                signer,
                recipient,
+               trusted_devices,
                device_list_description,
                _keys.front().cpl_id (),
                _content_title_text,
+               _annotation_text,
                _not_valid_before,
                _not_valid_after,
                formulation,