summaryrefslogtreecommitdiff
path: root/utils/rbutilqt/base/httpget.h
diff options
context:
space:
mode:
authorDominik Riebeling <Dominik.Riebeling@gmail.com>2022-03-19 16:54:27 +0100
committerDominik Riebeling <Dominik.Riebeling@gmail.com>2022-03-19 16:57:41 +0100
commit7a2fdf3fd60a63c1a67986d9f83b321ea3758b9d (patch)
treeb01734a734d75b2507df4a0538dba388d4f201b7 /utils/rbutilqt/base/httpget.h
parenta0459de4d5b4bbb062536146cdefaad796480c7c (diff)
downloadrockbox-7a2fdf3fd60a63c1a67986d9f83b321ea3758b9d.tar.gz
rockbox-7a2fdf3fd60a63c1a67986d9f83b321ea3758b9d.zip
rbutil: Handle SSL certificate errors on first request.
Qt uses the systems certificate store. On old(er) systems the root certificate might not be present, so checking the certificate from the rockbox.org server might fail. On startup we try to download the build-info file. If this fails with a certificate error allow the user to temporarily accept the rockbox.org certificate for all successive requests. Change-Id: I459e12d53286aaedea4db659d90a5e057c56801f
Diffstat (limited to 'utils/rbutilqt/base/httpget.h')
-rw-r--r--utils/rbutilqt/base/httpget.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/utils/rbutilqt/base/httpget.h b/utils/rbutilqt/base/httpget.h
index 443a606e6d..fb5b920b47 100644
--- a/utils/rbutilqt/base/httpget.h
+++ b/utils/rbutilqt/base/httpget.h
@@ -73,6 +73,8 @@ class HttpGet : public QObject
73 //< set global user agent string 73 //< set global user agent string
74 static void setGlobalUserAgent(const QString& u) 74 static void setGlobalUserAgent(const QString& u)
75 { m_globalUserAgent = u; } 75 { m_globalUserAgent = u; }
76 static void addTrustedPeerCert(QSslCertificate cert)
77 { m_acceptedClientCerts.append(cert);}
76 78
77 public slots: 79 public slots:
78 void abort(void); 80 void abort(void);
@@ -81,14 +83,17 @@ class HttpGet : public QObject
81 void done(QNetworkReply::NetworkError error); 83 void done(QNetworkReply::NetworkError error);
82 void dataReadProgress(int, int); 84 void dataReadProgress(int, int);
83 void headerFinished(void); 85 void headerFinished(void);
86 void sslError(const QSslError& error, const QSslCertificate& peerCert);
84 87
85 private slots: 88 private slots:
86 void requestFinished(QNetworkReply* reply); 89 void requestFinished(QNetworkReply* reply);
87 void startRequest(QUrl url); 90 void startRequest(QUrl url);
88 void downloadProgress(qint64 received, qint64 total); 91 void downloadProgress(qint64 received, qint64 total);
89 void networkError(QNetworkReply::NetworkError error); 92 void networkError(QNetworkReply::NetworkError error);
93 void gotSslError(const QList<QSslError> &errors);
90 94
91 private: 95 private:
96 static QList<QSslCertificate> m_acceptedClientCerts;
92 static QString m_globalUserAgent; 97 static QString m_globalUserAgent;
93 static QNetworkProxy m_globalProxy; 98 static QNetworkProxy m_globalProxy;
94 QNetworkAccessManager m_mgr; 99 QNetworkAccessManager m_mgr;