summaryrefslogtreecommitdiff
path: root/src/lib
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 /src/lib
parent8e7a736467d6f8692c42c614430e37c416b58ac4 (diff)
Extract Barco certificate download code to lib/
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/download_certificate.cc23
-rw-r--r--src/lib/download_certificate.h1
2 files changed, 24 insertions, 0 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,
};