32 QList<QByteArray> derCertificates;
35 QtJniTypes::QtSslCertificates::callStaticMethod<QJniArray<QJniArray<jbyte>>>(
37 if (!certificates.isValid())
38 return derCertificates;
40 derCertificates.reserve(certificates.size());
41 for (
const auto &jCertificate : certificates)
42 derCertificates.append(jCertificate->toContainer());
44 return derCertificates;
49 static const QByteArray pemBundle = certificatesToPemBundle(fetchAndroidSystemCertificates());
51 if (pemBundle.isEmpty()) {
52 qCWarning(qLCAndroidCaCertificates) <<
"Could not obtain any system CA certificates";
56 const QString cacheDir = QStandardPaths::writableLocation(QStandardPaths::CacheLocation);
57 QString path = cacheDir +
"/ffmpeg_ca_bundle.pem"_L1;
63 static std::atomic_bool writtenInThisProcess =
false;
64 if (writtenInThisProcess.load(std::memory_order_relaxed) && QFile::exists(path))
67 QDir().mkpath(cacheDir);
70 if (!file.open(QIODevice::WriteOnly) || file.write(pemBundle) != pemBundle.size()
72 qCWarning(qLCAndroidCaCertificates) <<
"Failed to write CA bundle to" << path;
76 writtenInThisProcess.store(
true,
std::memory_order_relaxed);