summaryrefslogtreecommitdiffstats
path: root/src/libs/kdtools
diff options
context:
space:
mode:
authorKatja Marttila <katja.marttila@qt.io>2023-01-31 15:57:22 +0200
committerKatja Marttila <katja.marttila@qt.io>2023-02-09 07:36:56 +0200
commitc9d7f2a3f72ced2dd576057b84bf03c6ece260af (patch)
treec3efe302ace3c4d544c9ea01b8d923332c921bb9 /src/libs/kdtools
parent399c010235bdb9079005930e125f301f53153808 (diff)
Check sha1 checksum per repository
Updates.xml contains Checksum variable which can be set to false to skip the archives checksum verification. The variable was read from one arbitrary Updates.xml file and that was used in all downloads. Fixed so that the checksum is read per Updates.xml. This change also speeds up the component generation phase as it no longer needs to read Updates.xml file. Task-number: QTIFW-2805 Task-number: QTIFW-2928 Change-Id: Id28dd370ef200aec67cb85cbbc1d08d925b43c21 Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
Diffstat (limited to 'src/libs/kdtools')
-rw-r--r--src/libs/kdtools/filedownloader.h2
-rw-r--r--src/libs/kdtools/updatesinfo.cpp13
-rw-r--r--src/libs/kdtools/updatesinfo_p.h3
-rw-r--r--src/libs/kdtools/updatesinfodata_p.h3
4 files changed, 17 insertions, 4 deletions
diff --git a/src/libs/kdtools/filedownloader.h b/src/libs/kdtools/filedownloader.h
index f02a4cc85..3990d849a 100644
--- a/src/libs/kdtools/filedownloader.h
+++ b/src/libs/kdtools/filedownloader.h
@@ -58,6 +58,8 @@ public:
QByteArray assumedSha1Sum() const;
void setAssumedSha1Sum(const QByteArray &sha1);
+ void setCheckSha1Sum(const bool checkSha1Sum);
+ bool checkSha1Sum() const;
QString scheme() const;
void setScheme(const QString &scheme);
diff --git a/src/libs/kdtools/updatesinfo.cpp b/src/libs/kdtools/updatesinfo.cpp
index fafeb4f18..8d70f54eb 100644
--- a/src/libs/kdtools/updatesinfo.cpp
+++ b/src/libs/kdtools/updatesinfo.cpp
@@ -71,8 +71,10 @@ void UpdatesInfoData::parseFile(const QString &updateXmlFile)
applicationName = reader.readElementText();
} else if (reader.name() == QLatin1String("ApplicationVersion")) {
applicationVersion = reader.readElementText();
+ } else if (reader.name() == QLatin1String("Checksum")) {
+ checkSha1CheckSum = (reader.readElementText());
} else if (reader.name() == QLatin1String("PackageUpdate")) {
- if (!parsePackageUpdateElement(reader))
+ if (!parsePackageUpdateElement(reader, checkSha1CheckSum))
return; //error handled in subroutine
} else {
reader.skipCurrentElement();
@@ -98,7 +100,7 @@ void UpdatesInfoData::parseFile(const QString &updateXmlFile)
error = UpdatesInfo::NoError;
}
-bool UpdatesInfoData::parsePackageUpdateElement(QXmlStreamReader &reader)
+bool UpdatesInfoData::parsePackageUpdateElement(QXmlStreamReader &reader, const QString &checkSha1CheckSum)
{
UpdateInfo info;
QHash<QString, QVariant> scriptHash;
@@ -156,7 +158,7 @@ bool UpdatesInfoData::parsePackageUpdateElement(QXmlStreamReader &reader)
setInvalidContentError(tr("PackageUpdate element without ReleaseDate"));
return false;
}
-
+ info.data[QLatin1String("CheckSha1CheckSum")] = checkSha1CheckSum;
updateInfoList.append(info);
return true;
}
@@ -282,6 +284,11 @@ QString UpdatesInfo::applicationVersion() const
return d->applicationVersion;
}
+QString UpdatesInfo::checkSha1CheckSum() const
+{
+ return d->checkSha1CheckSum;
+}
+
int UpdatesInfo::updateInfoCount() const
{
return d->updateInfoList.count();
diff --git a/src/libs/kdtools/updatesinfo_p.h b/src/libs/kdtools/updatesinfo_p.h
index 93e2fe8c6..8b9928ed9 100644
--- a/src/libs/kdtools/updatesinfo_p.h
+++ b/src/libs/kdtools/updatesinfo_p.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB)
+** Copyright (C) 2023 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the Qt Installer Framework.
@@ -72,6 +73,8 @@ public:
QString applicationName() const;
QString applicationVersion() const;
+ QString checkSha1CheckSum() const;
+
int updateInfoCount() const;
UpdateInfo updateInfo(int index) const;
QList<UpdateInfo> updatesInfo() const;
diff --git a/src/libs/kdtools/updatesinfodata_p.h b/src/libs/kdtools/updatesinfodata_p.h
index 9c3c7dce0..9229f8577 100644
--- a/src/libs/kdtools/updatesinfodata_p.h
+++ b/src/libs/kdtools/updatesinfodata_p.h
@@ -51,10 +51,11 @@ public:
QString updateXmlFile;
QString applicationName;
QString applicationVersion;
+ QString checkSha1CheckSum;
QList<UpdateInfo> updateInfoList;
void parseFile(const QString &updateXmlFile);
- bool parsePackageUpdateElement(QXmlStreamReader &reader);
+ bool parsePackageUpdateElement(QXmlStreamReader &reader, const QString &checkSha1CheckSum);
void setInvalidContentError(const QString &detail);