diff options
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/util.cc | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/src/lib/util.cc b/src/lib/util.cc index e0495f18b..badbda4ab 100644 --- a/src/lib/util.cc +++ b/src/lib/util.cc @@ -824,10 +824,28 @@ shared_ptr<const libdcp::Signer> make_signer () { boost::filesystem::path const sd = Config::instance()->signer_chain_directory (); - if (boost::filesystem::is_empty (sd)) { - libdcp::make_signer_chain (sd, openssl_path ()); - } + /* Remake the chain if any of it is missing */ + + list<boost::filesystem::path> files; + files.push_back ("ca.self-signed.pem"); + files.push_back ("intermediate.signed.pem"); + files.push_back ("leaf.signed.pem"); + files.push_back ("leaf.key"); + + list<boost::filesystem::path>::const_iterator i = files.begin(); + while (i != files.end()) { + boost::filesystem::path p (sd); + sd /= *i; + if (!boost::filesystem::exists (sd)) { + boost::filesystem::remove_all (sd); + libdcp::make_signer_chain (sd, openssl_path ()); + break; + } + + ++i; + } + libdcp::CertificateChain chain; { |
