X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fscreen.cc;h=5ec00f9c152ed7e04f56fe000f0dcfae4ef2b211;hb=refs%2Ftags%2Fv2.13.68;hp=fe8369cb885bf1291106f80d91563503037e641e;hpb=32dd3b31349f48adb21bf1923f076755705a508c;p=dcpomatic.git diff --git a/src/lib/screen.cc b/src/lib/screen.cc index fe8369cb8..5ec00f9c1 100644 --- a/src/lib/screen.cc +++ b/src/lib/screen.cc @@ -21,6 +21,10 @@ #include "screen.h" #include #include +#include + +using std::string; +using std::vector; Screen::Screen (cxml::ConstNodePtr node) : name (node->string_child("Name")) @@ -33,7 +37,11 @@ Screen::Screen (cxml::ConstNodePtr node) } BOOST_FOREACH (cxml::ConstNodePtr i, node->node_children ("TrustedDevice")) { - trusted_devices.push_back (dcp::Certificate (i->content ())); + if (boost::algorithm::starts_with(i->content(), "-----BEGIN CERTIFICATE-----")) { + trusted_devices.push_back (TrustedDevice(dcp::Certificate(i->content()))); + } else { + trusted_devices.push_back (TrustedDevice(i->content())); + } } } @@ -47,7 +55,49 @@ Screen::as_xml (xmlpp::Element* parent) const parent->add_child("Notes")->add_child_text (notes); - BOOST_FOREACH (dcp::Certificate const & i, trusted_devices) { - parent->add_child("TrustedDevice")->add_child_text (i.certificate (true)); + BOOST_FOREACH (TrustedDevice i, trusted_devices) { + parent->add_child("TrustedDevice")->add_child_text(i.as_string()); + } +} + +vector +Screen::trusted_device_thumbprints () const +{ + vector t; + BOOST_FOREACH (TrustedDevice i, trusted_devices) { + t.push_back (i.thumbprint()); } + return t; +} + +TrustedDevice::TrustedDevice (string thumbprint) + : _thumbprint (thumbprint) +{ + +} + +TrustedDevice::TrustedDevice (dcp::Certificate certificate) + : _certificate (certificate) +{ + +} + +string +TrustedDevice::as_string () const +{ + if (_certificate) { + return _certificate->certificate(true); + } + + return *_thumbprint; +} + +string +TrustedDevice::thumbprint () const +{ + if (_certificate) { + return _certificate->thumbprint (); + } + + return *_thumbprint; }