summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/encryption_test.cc9
-rw-r--r--test/kdm_key_test.cc49
-rw-r--r--test/round_trip_test.cc13
-rw-r--r--test/wscript1
4 files changed, 71 insertions, 1 deletions
diff --git a/test/encryption_test.cc b/test/encryption_test.cc
index e2bf9698..c079acbe 100644
--- a/test/encryption_test.cc
+++ b/test/encryption_test.cc
@@ -66,7 +66,7 @@ BOOST_AUTO_TEST_CASE (encryption)
shared_ptr<libdcp::Signer> signer (
new libdcp::Signer (
chain,
- "test/data/signer.key"
+ "build/test/signer/leaf.key"
)
);
@@ -111,4 +111,11 @@ BOOST_AUTO_TEST_CASE (encryption)
kdm.as_xml ("build/test/bar.kdm.xml");
system ("xmllint --path schema --nonet --noout --schema schema/SMPTE-430-1-2006-Amd-1-2009-KDM.xsd build/test/bar.kdm.xml");
+ system ("xmlsec1 verify "
+ "--pubkey-cert-pem build/test/signer/leaf.signed.pem "
+ "--trusted-pem build/test/signer/intermediate.signed.pem "
+ "--trusted-pem build/test/signer/ca.self-signed.pem "
+ "--id-attr:Id http://www.smpte-ra.org/schemas/430-3/2006/ETM:AuthenticatedPublic "
+ "--id-attr:Id http://www.smpte-ra.org/schemas/430-3/2006/ETM:AuthenticatedPrivate "
+ "build/test/bar.kdm.xml");
}
diff --git a/test/kdm_key_test.cc b/test/kdm_key_test.cc
new file mode 100644
index 00000000..05b85312
--- /dev/null
+++ b/test/kdm_key_test.cc
@@ -0,0 +1,49 @@
+/*
+ Copyright (C) 2013 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
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+*/
+
+#include <boost/test/unit_test.hpp>
+#include "kdm.h"
+
+BOOST_AUTO_TEST_CASE (kdm_key_test)
+{
+ uint8_t foo[138];
+ memset (foo, 0, 138);
+ libdcp::KDMKey kkey (foo, 138);
+
+ uint8_t* raw = new uint8_t[16];
+ uint8_t* p = raw;
+ kkey.put_uuid (&p, "5d51e8a1-b2a5-4da6-9b66-4615c3609440");
+ BOOST_CHECK_EQUAL (raw[0], 0x5d);
+ BOOST_CHECK_EQUAL (raw[1], 0x51);
+ BOOST_CHECK_EQUAL (raw[2], 0xe8);
+ BOOST_CHECK_EQUAL (raw[3], 0xa1);
+ BOOST_CHECK_EQUAL (raw[4], 0xb2);
+ BOOST_CHECK_EQUAL (raw[5], 0xa5);
+ BOOST_CHECK_EQUAL (raw[6], 0x4d);
+ BOOST_CHECK_EQUAL (raw[7], 0xa6);
+ BOOST_CHECK_EQUAL (raw[8], 0x9b);
+ BOOST_CHECK_EQUAL (raw[9], 0x66);
+ BOOST_CHECK_EQUAL (raw[10], 0x46);
+ BOOST_CHECK_EQUAL (raw[11], 0x15);
+ BOOST_CHECK_EQUAL (raw[12], 0xc3);
+ BOOST_CHECK_EQUAL (raw[13], 0x60);
+ BOOST_CHECK_EQUAL (raw[14], 0x94);
+ BOOST_CHECK_EQUAL (raw[15], 0x40);
+ delete[] raw;
+}
diff --git a/test/round_trip_test.cc b/test/round_trip_test.cc
index 2747a71f..fe720142 100644
--- a/test/round_trip_test.cc
+++ b/test/round_trip_test.cc
@@ -31,6 +31,7 @@
#include "argb_frame.h"
#include "signer_chain.h"
+using std::list;
using boost::shared_ptr;
/* Build an encrypted picture MXF and a KDM for it and check that the KDM can be decrypted */
@@ -86,6 +87,18 @@ BOOST_AUTO_TEST_CASE (round_trip_test)
/* Reload the KDM, using our private key to decrypt it */
libdcp::KDM kdm_B (kdm_file, "build/test/signer/leaf.key");
+ /* Check that the decrypted KDMKeys are the same as the ones we started with */
+ BOOST_CHECK_EQUAL (kdm_A.keys().size(), kdm_B.keys().size());
+ list<libdcp::KDMKey> keys_A = kdm_A.keys ();
+ list<libdcp::KDMKey> keys_B = kdm_B.keys ();
+ list<libdcp::KDMKey>::const_iterator i = keys_A.begin();
+ list<libdcp::KDMKey>::const_iterator j = keys_B.begin();
+ while (i != keys_A.end ()) {
+ BOOST_CHECK (*i == *j);
+ ++i;
+ ++j;
+ }
+
/* Reload the picture MXF */
shared_ptr<libdcp::MonoPictureAsset> asset_B (
new libdcp::MonoPictureAsset (work_dir, "video.mxf")
diff --git a/test/wscript b/test/wscript
index 1b2a1055..6b8b78d0 100644
--- a/test/wscript
+++ b/test/wscript
@@ -22,6 +22,7 @@ def build(bld):
obj.use = 'libdcp'
obj.source = """
test.cc
+ kdm_key_test.cc
certificates_test.cc
dcp_test.cc
encryption_test.cc