From 039ea029c811b7f74f02befad10d2106ad645e74 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Tue, 1 Jan 2013 22:34:24 +0000 Subject: [PATCH] A few more untested bits. --- src/certificates.cc | 8 ++++++++ src/certificates.h | 2 ++ src/dcp.cc | 47 ++++++++++++++++++++++++++++++++++++++------- 3 files changed, 50 insertions(+), 7 deletions(-) diff --git a/src/certificates.cc b/src/certificates.cc index c1e71b14..fe03f10e 100644 --- a/src/certificates.cc +++ b/src/certificates.cc @@ -118,3 +118,11 @@ CertificateChain::leaf () const assert (_certificates.size() >= 2); return _certificates.back (); } + +list > +CertificateChain::leaf_to_root () const +{ + list > c = _certificates; + c.reverse (); + return c; +} diff --git a/src/certificates.h b/src/certificates.h index 6baea84a..428c36ea 100644 --- a/src/certificates.h +++ b/src/certificates.h @@ -36,6 +36,8 @@ public: boost::shared_ptr root () const; boost::shared_ptr leaf () const; + std::list > leaf_to_root () const; + private: friend class ::certificates; std::list > _certificates; diff --git a/src/dcp.cc b/src/dcp.cc index 4b5e6789..647ff7f6 100644 --- a/src/dcp.cc +++ b/src/dcp.cc @@ -457,13 +457,46 @@ CPL::write_xml (bool encrypted, CertificateChain const & certificates) const << " \n"; if (encrypted) { - os << " \n" - << " \n" - << " " << Certificate::name_for_xml (certificates.leaf()->issuer()) << "\n" - << " " << certificates.leaf()->serial() << "\n" - << " \n" - << " " << Certificate::name_for_xml (certificates.leaf()->subject()) << "\n" - << " \n"; + os << " \n" + << " \n" + << " \n" + << " " << Certificate::name_for_xml (certificates.leaf()->issuer()) << "\n" + << " " << certificates.leaf()->serial() << "\n" + << " \n" + << " " << Certificate::name_for_xml (certificates.leaf()->subject()) << "\n" + << " \n" + << " \n" + << " \n" + << " \n" + << " \n" + << " \n" + << " \n" + << " \n" + << " \n" + << " \n" + << " \n" + /* this is done by xmlsec1 in cinemaslides */ + << " " << "XXX" << "\n" + << " \n" + << " \n" + /* this is done by xmlsec1 in cinemaslides */ + << " " << "XXX" << "\n"; + + os << " \n"; + + list > c = certificates.leaf_to_root (); + for (list >::iterator i = c.begin(); i != c.end(); ++i) { + os << " \n" + << " \n" + << " " << Certificate::name_for_xml ((*i)->issuer()) << "\n" + << " " << (*i)->serial() << "\n" + << " \n" + << " " << "XXX" << "\n" + << " \n"; + } + + os << " \n"; + os << " \n"; } os << "\n"; -- 2.30.2