summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2026-01-04 19:26:21 +0100
committerCarl Hetherington <cth@carlh.net>2026-01-04 20:35:11 +0100
commitbad8a0e8c7b24f16d3651bea76e20b698cb2d643 (patch)
tree9fed80ec4d6188566715f1856dbb3ab1d8eb0e98
parent8e7a736467d6f8692c42c614430e37c416b58ac4 (diff)
Extract Barco certificate download code to lib/
-rw-r--r--src/lib/download_certificate.cc23
-rw-r--r--src/lib/download_certificate.h1
-rw-r--r--src/wx/barco_alchemy_certificate_panel.cc15
3 files changed, 27 insertions, 12 deletions
diff --git a/src/lib/download_certificate.cc b/src/lib/download_certificate.cc
index d9560f6a2..505fa095d 100644
--- a/src/lib/download_certificate.cc
+++ b/src/lib/download_certificate.cc
@@ -53,12 +53,35 @@ download_gdc_certificate(string const& serial)
}
+static
+pair<dcp::Certificate, string>
+download_barco_certificate(string const& serial)
+{
+ string const url = fmt::format(
+ "sftp://{}:{}@certificates.barco.com/{}xxx/{}/Barco-ICMP.{}_cert.pem",
+ Config::instance()->barco_username().get(),
+ Config::instance()->barco_password().get(),
+ serial.substr(0, 7),
+ serial,
+ serial
+ );
+
+ try {
+ return { dcp::Certificate(get_from_url(url, true, false).as_string()), url };
+ } catch (dcp::MiscError& e) {
+ throw CertificateDownloadError(fmt::format(_("Could not read certificate file ({})"), e.what()));
+ }
+}
+
+
pair<dcp::Certificate, string>
download_certificate(Manufacturer manufacturer, string const& serial)
{
switch (manufacturer) {
case Manufacturer::GDC:
return download_gdc_certificate(serial);
+ case Manufacturer::BARCO:
+ return download_barco_certificate(serial);
}
return {};
diff --git a/src/lib/download_certificate.h b/src/lib/download_certificate.h
index 98998ab4f..988b62138 100644
--- a/src/lib/download_certificate.h
+++ b/src/lib/download_certificate.h
@@ -25,6 +25,7 @@
enum class Manufacturer
{
GDC,
+ BARCO,
};
diff --git a/src/wx/barco_alchemy_certificate_panel.cc b/src/wx/barco_alchemy_certificate_panel.cc
index e73ab73da..014812e82 100644
--- a/src/wx/barco_alchemy_certificate_panel.cc
+++ b/src/wx/barco_alchemy_certificate_panel.cc
@@ -22,6 +22,7 @@
#include "barco_alchemy_certificate_panel.h"
#include "download_certificate_dialog.h"
#include "wx_util.h"
+#include "lib/download_certificate.h"
#include "lib/internet.h"
#include "lib/config.h"
#include <boost/algorithm/string.hpp>
@@ -55,24 +56,14 @@ BarcoAlchemyCertificatePanel::ready_to_download() const
return CredentialsDownloadCertificatePanel::ready_to_download() && _serial->GetValue().Length() == 10;
}
+
void
BarcoAlchemyCertificatePanel::do_download()
{
string serial = wx_to_std(_serial->GetValue());
trim(serial);
- string url = fmt::format(
- "sftp://{}:{}@certificates.barco.com/{}xxx/{}/Barco-ICMP.{}_cert.pem",
- Config::instance()->barco_username().get(),
- Config::instance()->barco_password().get(),
- serial.substr(0, 7),
- serial,
- serial
- );
- trim(url);
-
try {
- auto data = get_from_url(url, true, false);
- load_certificate(data, url);
+ std::tie(_certificate, _url) = download_certificate(Manufacturer::BARCO, serial);
_dialog->message()->SetLabel(_("Certificate downloaded"));
_dialog->setup_sensitivity();
} catch (std::exception& e) {