diff options
author | Katja Marttila <katja.marttila@qt.io> | 2023-01-31 15:57:22 +0200 |
---|---|---|
committer | Katja Marttila <katja.marttila@qt.io> | 2023-02-09 07:36:56 +0200 |
commit | c9d7f2a3f72ced2dd576057b84bf03c6ece260af (patch) | |
tree | c3efe302ace3c4d544c9ea01b8d923332c921bb9 /src/libs/kdtools | |
parent | 399c010235bdb9079005930e125f301f53153808 (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.h | 2 | ||||
-rw-r--r-- | src/libs/kdtools/updatesinfo.cpp | 13 | ||||
-rw-r--r-- | src/libs/kdtools/updatesinfo_p.h | 3 | ||||
-rw-r--r-- | src/libs/kdtools/updatesinfodata_p.h | 3 |
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); |