Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package qt6-networkauth for openSUSE:Factory checked in at 2023-04-05 21:31:56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/qt6-networkauth (Old) and /work/SRC/openSUSE:Factory/.qt6-networkauth.new.19717 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "qt6-networkauth" Wed Apr 5 21:31:56 2023 rev:20 rq:1077332 version:6.5.0 Changes: -------- --- /work/SRC/openSUSE:Factory/qt6-networkauth/qt6-networkauth.changes 2023-03-17 17:03:52.401558091 +0100 +++ /work/SRC/openSUSE:Factory/.qt6-networkauth.new.19717/qt6-networkauth.changes 2023-04-05 21:36:46.774953560 +0200 @@ -1,0 +2,6 @@ +Mon Apr 3 10:02:16 UTC 2023 - Christophe Marin <christo...@krop.fr> + +- Update to 6.5.0 + * https://www.qt.io/blog/qt-6.5-lts-released + +------------------------------------------------------------------- Old: ---- qtnetworkauth-everywhere-src-6.4.3.tar.xz New: ---- qtnetworkauth-everywhere-src-6.5.0.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ qt6-networkauth.spec ++++++ --- /var/tmp/diff_new_pack.ladSci/_old 2023-04-05 21:36:47.266956368 +0200 +++ /var/tmp/diff_new_pack.ladSci/_new 2023-04-05 21:36:47.274956414 +0200 @@ -1,7 +1,7 @@ # # spec file for package qt6-networkauth # -# Copyright (c) 2022 SUSE LLC +# Copyright (c) 2023 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -16,8 +16,8 @@ # -%define real_version 6.4.3 -%define short_version 6.4 +%define real_version 6.5.0 +%define short_version 6.5 %define short_name qtnetworkauth %define tar_name qtnetworkauth-everywhere-src %define tar_suffix %{nil} @@ -28,7 +28,7 @@ %endif # Name: qt6-networkauth%{?pkg_suffix} -Version: 6.4.3 +Version: 6.5.0 Release: 0 Summary: Set of APIs to obtain limited access to online accounts and HTTP services License: GPL-3.0-only WITH Qt-GPL-exception-1.0 @@ -37,9 +37,9 @@ Source99: qt6-networkauth-rpmlintrc BuildRequires: pkgconfig BuildRequires: qt6-core-private-devel -BuildRequires: cmake(Qt6Core) -BuildRequires: cmake(Qt6Network) -BuildRequires: cmake(Qt6Widgets) +BuildRequires: cmake(Qt6Core) = %{real_version} +BuildRequires: cmake(Qt6Network) = %{real_version} +BuildRequires: cmake(Qt6Widgets) = %{real_version} %if "%{qt6_flavor}" == "docs" BuildRequires: qt6-tools %{qt6_doc_packages} @@ -61,7 +61,7 @@ %package devel Summary: Qt 6 NetworkAuth library - Development files Requires: libQt6NetworkAuth6 = %{version} -Requires: cmake(Qt6Network) +Requires: cmake(Qt6Network) = %{real_version} %description devel Development files for the Qt 6 NetworkAuth library. ++++++ qtnetworkauth-everywhere-src-6.4.3.tar.xz -> qtnetworkauth-everywhere-src-6.5.0.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.4.3/.cmake.conf new/qtnetworkauth-everywhere-src-6.5.0/.cmake.conf --- old/qtnetworkauth-everywhere-src-6.4.3/.cmake.conf 2023-03-11 19:16:48.000000000 +0100 +++ new/qtnetworkauth-everywhere-src-6.5.0/.cmake.conf 2023-03-25 20:28:41.000000000 +0100 @@ -1,2 +1,3 @@ -set(QT_REPO_MODULE_VERSION "6.4.3") +set(QT_REPO_MODULE_VERSION "6.5.0") set(QT_REPO_MODULE_PRERELEASE_VERSION_SEGMENT "alpha1") +set(QT_EXTRA_INTERNAL_TARGET_DEFINES "QT_NO_AS_CONST=1") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.4.3/.tag new/qtnetworkauth-everywhere-src-6.5.0/.tag --- old/qtnetworkauth-everywhere-src-6.4.3/.tag 2023-03-11 19:16:48.000000000 +0100 +++ new/qtnetworkauth-everywhere-src-6.5.0/.tag 2023-03-25 20:28:41.000000000 +0100 @@ -1 +1 @@ -a75318d429cb98ba4d0aed52a13423b220209140 +87db582c720f62e7e4a1df0a63c351735749d627 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.4.3/CMakeLists.txt new/qtnetworkauth-everywhere-src-6.5.0/CMakeLists.txt --- old/qtnetworkauth-everywhere-src-6.4.3/CMakeLists.txt 2023-03-11 19:16:48.000000000 +0100 +++ new/qtnetworkauth-everywhere-src-6.5.0/CMakeLists.txt 2023-03-25 20:28:41.000000000 +0100 @@ -1,3 +1,6 @@ +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: BSD-3-Clause + # Generated from qtnetworkauth.pro. cmake_minimum_required(VERSION 3.16) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.4.3/dependencies.yaml new/qtnetworkauth-everywhere-src-6.5.0/dependencies.yaml --- old/qtnetworkauth-everywhere-src-6.4.3/dependencies.yaml 2023-03-11 19:16:48.000000000 +0100 +++ new/qtnetworkauth-everywhere-src-6.5.0/dependencies.yaml 2023-03-25 20:28:41.000000000 +0100 @@ -1,4 +1,4 @@ dependencies: ../qtbase: - ref: 519d2d8f442409e86a0ee2fa16bd543342180861 + ref: aea92807be2567c4212b96ae67de7137075ba4ee required: true diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.4.3/examples/CMakeLists.txt new/qtnetworkauth-everywhere-src-6.5.0/examples/CMakeLists.txt --- old/qtnetworkauth-everywhere-src-6.4.3/examples/CMakeLists.txt 2023-03-11 19:16:48.000000000 +0100 +++ new/qtnetworkauth-everywhere-src-6.5.0/examples/CMakeLists.txt 2023-03-25 20:28:41.000000000 +0100 @@ -1,3 +1,6 @@ +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: BSD-3-Clause + # Generated from examples.pro. qt_examples_build_begin(EXTERNAL_BUILD) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.4.3/examples/oauth/CMakeLists.txt new/qtnetworkauth-everywhere-src-6.5.0/examples/oauth/CMakeLists.txt --- old/qtnetworkauth-everywhere-src-6.4.3/examples/oauth/CMakeLists.txt 2023-03-11 19:16:48.000000000 +0100 +++ new/qtnetworkauth-everywhere-src-6.5.0/examples/oauth/CMakeLists.txt 2023-03-25 20:28:41.000000000 +0100 @@ -1,3 +1,6 @@ +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: BSD-3-Clause + # Generated from oauth.pro. if(TARGET Qt::Widgets) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.4.3/examples/oauth/redditclient/CMakeLists.txt new/qtnetworkauth-everywhere-src-6.5.0/examples/oauth/redditclient/CMakeLists.txt --- old/qtnetworkauth-everywhere-src-6.4.3/examples/oauth/redditclient/CMakeLists.txt 2023-03-11 19:16:48.000000000 +0100 +++ new/qtnetworkauth-everywhere-src-6.5.0/examples/oauth/redditclient/CMakeLists.txt 2023-03-25 20:28:41.000000000 +0100 @@ -1,3 +1,6 @@ +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: BSD-3-Clause + # Generated from redditclient.pro. cmake_minimum_required(VERSION 3.16) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.4.3/examples/oauth/redditclient/conanfile.txt new/qtnetworkauth-everywhere-src-6.5.0/examples/oauth/redditclient/conanfile.txt --- old/qtnetworkauth-everywhere-src-6.4.3/examples/oauth/redditclient/conanfile.txt 2023-03-11 19:16:48.000000000 +0100 +++ new/qtnetworkauth-everywhere-src-6.5.0/examples/oauth/redditclient/conanfile.txt 2023-03-25 20:28:41.000000000 +0100 @@ -1,5 +1,5 @@ [requires] -qtnetworkauth/6.4.3@qt/snapshot +qtnetworkauth/6.5.0@qt/snapshot [generators] virtualenv diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.4.3/examples/oauth/twittertimeline/CMakeLists.txt new/qtnetworkauth-everywhere-src-6.5.0/examples/oauth/twittertimeline/CMakeLists.txt --- old/qtnetworkauth-everywhere-src-6.4.3/examples/oauth/twittertimeline/CMakeLists.txt 2023-03-11 19:16:48.000000000 +0100 +++ new/qtnetworkauth-everywhere-src-6.5.0/examples/oauth/twittertimeline/CMakeLists.txt 2023-03-25 20:28:41.000000000 +0100 @@ -1,3 +1,6 @@ +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: BSD-3-Clause + # Generated from twittertimeline.pro. cmake_minimum_required(VERSION 3.16) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.4.3/examples/oauth/twittertimeline/conanfile.txt new/qtnetworkauth-everywhere-src-6.5.0/examples/oauth/twittertimeline/conanfile.txt --- old/qtnetworkauth-everywhere-src-6.4.3/examples/oauth/twittertimeline/conanfile.txt 2023-03-11 19:16:48.000000000 +0100 +++ new/qtnetworkauth-everywhere-src-6.5.0/examples/oauth/twittertimeline/conanfile.txt 2023-03-25 20:28:41.000000000 +0100 @@ -1,5 +1,5 @@ [requires] -qtnetworkauth/6.4.3@qt/snapshot +qtnetworkauth/6.5.0@qt/snapshot [generators] virtualenv diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.4.3/include/QtNetworkAuth/6.4.3/QtNetworkAuth/private/qabstractoauth2_p.h new/qtnetworkauth-everywhere-src-6.5.0/include/QtNetworkAuth/6.4.3/QtNetworkAuth/private/qabstractoauth2_p.h --- old/qtnetworkauth-everywhere-src-6.4.3/include/QtNetworkAuth/6.4.3/QtNetworkAuth/private/qabstractoauth2_p.h 2023-03-11 19:16:48.000000000 +0100 +++ new/qtnetworkauth-everywhere-src-6.5.0/include/QtNetworkAuth/6.4.3/QtNetworkAuth/private/qabstractoauth2_p.h 1970-01-01 01:00:00.000000000 +0100 @@ -1 +0,0 @@ -#include "../../../../../src/oauth/qabstractoauth2_p.h" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.4.3/include/QtNetworkAuth/6.4.3/QtNetworkAuth/private/qabstractoauth_p.h new/qtnetworkauth-everywhere-src-6.5.0/include/QtNetworkAuth/6.4.3/QtNetworkAuth/private/qabstractoauth_p.h --- old/qtnetworkauth-everywhere-src-6.4.3/include/QtNetworkAuth/6.4.3/QtNetworkAuth/private/qabstractoauth_p.h 2023-03-11 19:16:48.000000000 +0100 +++ new/qtnetworkauth-everywhere-src-6.5.0/include/QtNetworkAuth/6.4.3/QtNetworkAuth/private/qabstractoauth_p.h 1970-01-01 01:00:00.000000000 +0100 @@ -1 +0,0 @@ -#include "../../../../../src/oauth/qabstractoauth_p.h" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.4.3/include/QtNetworkAuth/6.4.3/QtNetworkAuth/private/qabstractoauthreplyhandler_p.h new/qtnetworkauth-everywhere-src-6.5.0/include/QtNetworkAuth/6.4.3/QtNetworkAuth/private/qabstractoauthreplyhandler_p.h --- old/qtnetworkauth-everywhere-src-6.4.3/include/QtNetworkAuth/6.4.3/QtNetworkAuth/private/qabstractoauthreplyhandler_p.h 2023-03-11 19:16:48.000000000 +0100 +++ new/qtnetworkauth-everywhere-src-6.5.0/include/QtNetworkAuth/6.4.3/QtNetworkAuth/private/qabstractoauthreplyhandler_p.h 1970-01-01 01:00:00.000000000 +0100 @@ -1 +0,0 @@ -#include "../../../../../src/oauth/qabstractoauthreplyhandler_p.h" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.4.3/include/QtNetworkAuth/6.4.3/QtNetworkAuth/private/qoauth1_p.h new/qtnetworkauth-everywhere-src-6.5.0/include/QtNetworkAuth/6.4.3/QtNetworkAuth/private/qoauth1_p.h --- old/qtnetworkauth-everywhere-src-6.4.3/include/QtNetworkAuth/6.4.3/QtNetworkAuth/private/qoauth1_p.h 2023-03-11 19:16:48.000000000 +0100 +++ new/qtnetworkauth-everywhere-src-6.5.0/include/QtNetworkAuth/6.4.3/QtNetworkAuth/private/qoauth1_p.h 1970-01-01 01:00:00.000000000 +0100 @@ -1 +0,0 @@ -#include "../../../../../src/oauth/qoauth1_p.h" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.4.3/include/QtNetworkAuth/6.4.3/QtNetworkAuth/private/qoauth1signature_p.h new/qtnetworkauth-everywhere-src-6.5.0/include/QtNetworkAuth/6.4.3/QtNetworkAuth/private/qoauth1signature_p.h --- old/qtnetworkauth-everywhere-src-6.4.3/include/QtNetworkAuth/6.4.3/QtNetworkAuth/private/qoauth1signature_p.h 2023-03-11 19:16:48.000000000 +0100 +++ new/qtnetworkauth-everywhere-src-6.5.0/include/QtNetworkAuth/6.4.3/QtNetworkAuth/private/qoauth1signature_p.h 1970-01-01 01:00:00.000000000 +0100 @@ -1 +0,0 @@ -#include "../../../../../src/oauth/qoauth1signature_p.h" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.4.3/include/QtNetworkAuth/6.4.3/QtNetworkAuth/private/qoauth2authorizationcodeflow_p.h new/qtnetworkauth-everywhere-src-6.5.0/include/QtNetworkAuth/6.4.3/QtNetworkAuth/private/qoauth2authorizationcodeflow_p.h --- old/qtnetworkauth-everywhere-src-6.4.3/include/QtNetworkAuth/6.4.3/QtNetworkAuth/private/qoauth2authorizationcodeflow_p.h 2023-03-11 19:16:48.000000000 +0100 +++ new/qtnetworkauth-everywhere-src-6.5.0/include/QtNetworkAuth/6.4.3/QtNetworkAuth/private/qoauth2authorizationcodeflow_p.h 1970-01-01 01:00:00.000000000 +0100 @@ -1 +0,0 @@ -#include "../../../../../src/oauth/qoauth2authorizationcodeflow_p.h" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.4.3/include/QtNetworkAuth/6.4.3/QtNetworkAuth/private/qoauthhttpserverreplyhandler_p.h new/qtnetworkauth-everywhere-src-6.5.0/include/QtNetworkAuth/6.4.3/QtNetworkAuth/private/qoauthhttpserverreplyhandler_p.h --- old/qtnetworkauth-everywhere-src-6.4.3/include/QtNetworkAuth/6.4.3/QtNetworkAuth/private/qoauthhttpserverreplyhandler_p.h 2023-03-11 19:16:48.000000000 +0100 +++ new/qtnetworkauth-everywhere-src-6.5.0/include/QtNetworkAuth/6.4.3/QtNetworkAuth/private/qoauthhttpserverreplyhandler_p.h 1970-01-01 01:00:00.000000000 +0100 @@ -1 +0,0 @@ -#include "../../../../../src/oauth/qoauthhttpserverreplyhandler_p.h" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.4.3/include/QtNetworkAuth/QAbstractOAuth new/qtnetworkauth-everywhere-src-6.5.0/include/QtNetworkAuth/QAbstractOAuth --- old/qtnetworkauth-everywhere-src-6.4.3/include/QtNetworkAuth/QAbstractOAuth 2023-03-11 19:16:48.000000000 +0100 +++ new/qtnetworkauth-everywhere-src-6.5.0/include/QtNetworkAuth/QAbstractOAuth 1970-01-01 01:00:00.000000000 +0100 @@ -1 +0,0 @@ -#include "qabstractoauth.h" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.4.3/include/QtNetworkAuth/QAbstractOAuth2 new/qtnetworkauth-everywhere-src-6.5.0/include/QtNetworkAuth/QAbstractOAuth2 --- old/qtnetworkauth-everywhere-src-6.4.3/include/QtNetworkAuth/QAbstractOAuth2 2023-03-11 19:16:48.000000000 +0100 +++ new/qtnetworkauth-everywhere-src-6.5.0/include/QtNetworkAuth/QAbstractOAuth2 1970-01-01 01:00:00.000000000 +0100 @@ -1 +0,0 @@ -#include "qabstractoauth2.h" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.4.3/include/QtNetworkAuth/QAbstractOAuthReplyHandler new/qtnetworkauth-everywhere-src-6.5.0/include/QtNetworkAuth/QAbstractOAuthReplyHandler --- old/qtnetworkauth-everywhere-src-6.4.3/include/QtNetworkAuth/QAbstractOAuthReplyHandler 2023-03-11 19:16:48.000000000 +0100 +++ new/qtnetworkauth-everywhere-src-6.5.0/include/QtNetworkAuth/QAbstractOAuthReplyHandler 1970-01-01 01:00:00.000000000 +0100 @@ -1 +0,0 @@ -#include "qabstractoauthreplyhandler.h" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.4.3/include/QtNetworkAuth/QOAuth1 new/qtnetworkauth-everywhere-src-6.5.0/include/QtNetworkAuth/QOAuth1 --- old/qtnetworkauth-everywhere-src-6.4.3/include/QtNetworkAuth/QOAuth1 2023-03-11 19:16:48.000000000 +0100 +++ new/qtnetworkauth-everywhere-src-6.5.0/include/QtNetworkAuth/QOAuth1 1970-01-01 01:00:00.000000000 +0100 @@ -1 +0,0 @@ -#include "qoauth1.h" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.4.3/include/QtNetworkAuth/QOAuth1Signature new/qtnetworkauth-everywhere-src-6.5.0/include/QtNetworkAuth/QOAuth1Signature --- old/qtnetworkauth-everywhere-src-6.4.3/include/QtNetworkAuth/QOAuth1Signature 2023-03-11 19:16:48.000000000 +0100 +++ new/qtnetworkauth-everywhere-src-6.5.0/include/QtNetworkAuth/QOAuth1Signature 1970-01-01 01:00:00.000000000 +0100 @@ -1 +0,0 @@ -#include "qoauth1signature.h" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.4.3/include/QtNetworkAuth/QOAuth2AuthorizationCodeFlow new/qtnetworkauth-everywhere-src-6.5.0/include/QtNetworkAuth/QOAuth2AuthorizationCodeFlow --- old/qtnetworkauth-everywhere-src-6.4.3/include/QtNetworkAuth/QOAuth2AuthorizationCodeFlow 2023-03-11 19:16:48.000000000 +0100 +++ new/qtnetworkauth-everywhere-src-6.5.0/include/QtNetworkAuth/QOAuth2AuthorizationCodeFlow 1970-01-01 01:00:00.000000000 +0100 @@ -1 +0,0 @@ -#include "qoauth2authorizationcodeflow.h" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.4.3/include/QtNetworkAuth/QOAuthHttpServerReplyHandler new/qtnetworkauth-everywhere-src-6.5.0/include/QtNetworkAuth/QOAuthHttpServerReplyHandler --- old/qtnetworkauth-everywhere-src-6.4.3/include/QtNetworkAuth/QOAuthHttpServerReplyHandler 2023-03-11 19:16:48.000000000 +0100 +++ new/qtnetworkauth-everywhere-src-6.5.0/include/QtNetworkAuth/QOAuthHttpServerReplyHandler 1970-01-01 01:00:00.000000000 +0100 @@ -1 +0,0 @@ -#include "qoauthhttpserverreplyhandler.h" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.4.3/include/QtNetworkAuth/QOAuthOobReplyHandler new/qtnetworkauth-everywhere-src-6.5.0/include/QtNetworkAuth/QOAuthOobReplyHandler --- old/qtnetworkauth-everywhere-src-6.4.3/include/QtNetworkAuth/QOAuthOobReplyHandler 2023-03-11 19:16:48.000000000 +0100 +++ new/qtnetworkauth-everywhere-src-6.5.0/include/QtNetworkAuth/QOAuthOobReplyHandler 1970-01-01 01:00:00.000000000 +0100 @@ -1 +0,0 @@ -#include "qoauthoobreplyhandler.h" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.4.3/include/QtNetworkAuth/QtNetworkAuth new/qtnetworkauth-everywhere-src-6.5.0/include/QtNetworkAuth/QtNetworkAuth --- old/qtnetworkauth-everywhere-src-6.4.3/include/QtNetworkAuth/QtNetworkAuth 2023-03-12 11:00:41.250246000 +0100 +++ new/qtnetworkauth-everywhere-src-6.5.0/include/QtNetworkAuth/QtNetworkAuth 1970-01-01 01:00:00.000000000 +0100 @@ -1,14 +0,0 @@ -#ifndef QT_QTNETWORKAUTH_MODULE_H -#define QT_QTNETWORKAUTH_MODULE_H -#include <QtNetworkAuth/QtNetworkAuthDepends> -#include "qoauthglobal.h" -#include "qabstractoauth.h" -#include "qabstractoauth2.h" -#include "qabstractoauthreplyhandler.h" -#include "qoauth1.h" -#include "qoauth1signature.h" -#include "qoauth2authorizationcodeflow.h" -#include "qoauthhttpserverreplyhandler.h" -#include "qoauthoobreplyhandler.h" -#include "qtnetworkauthversion.h" -#endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.4.3/include/QtNetworkAuth/QtNetworkAuthVersion new/qtnetworkauth-everywhere-src-6.5.0/include/QtNetworkAuth/QtNetworkAuthVersion --- old/qtnetworkauth-everywhere-src-6.4.3/include/QtNetworkAuth/QtNetworkAuthVersion 2023-03-12 11:00:41.250246000 +0100 +++ new/qtnetworkauth-everywhere-src-6.5.0/include/QtNetworkAuth/QtNetworkAuthVersion 1970-01-01 01:00:00.000000000 +0100 @@ -1 +0,0 @@ -#include "qtnetworkauthversion.h" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.4.3/include/QtNetworkAuth/headers.pri new/qtnetworkauth-everywhere-src-6.5.0/include/QtNetworkAuth/headers.pri --- old/qtnetworkauth-everywhere-src-6.4.3/include/QtNetworkAuth/headers.pri 2023-03-12 11:00:41.250246000 +0100 +++ new/qtnetworkauth-everywhere-src-6.5.0/include/QtNetworkAuth/headers.pri 1970-01-01 01:00:00.000000000 +0100 @@ -1,6 +0,0 @@ -SYNCQT.HEADER_FILES = qabstractoauth.h qabstractoauth2.h qabstractoauthreplyhandler.h qoauth1.h qoauth1signature.h qoauth2authorizationcodeflow.h qoauthglobal.h qoauthhttpserverreplyhandler.h qoauthoobreplyhandler.h -SYNCQT.GENERATED_HEADER_FILES = QAbstractOAuth QAbstractOAuth2 QAbstractOAuthReplyHandler QOAuth1 QOAuth1Signature QOAuth2AuthorizationCodeFlow QOAuthHttpServerReplyHandler QOAuthOobReplyHandler qtnetworkauthversion.h QtNetworkAuthVersion QtNetworkAuth -SYNCQT.PRIVATE_HEADER_FILES = qabstractoauth2_p.h qabstractoauth_p.h qabstractoauthreplyhandler_p.h qoauth1_p.h qoauth1signature_p.h qoauth2authorizationcodeflow_p.h qoauthhttpserverreplyhandler_p.h -SYNCQT.QPA_HEADER_FILES = -SYNCQT.CLEAN_HEADER_FILES = qabstractoauth.h qabstractoauth2.h qabstractoauthreplyhandler.h qoauth1.h qoauth1signature.h qoauth2authorizationcodeflow.h qoauthglobal.h qoauthhttpserverreplyhandler.h qoauthoobreplyhandler.h -SYNCQT.INJECTIONS = diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.4.3/include/QtNetworkAuth/qabstractoauth.h new/qtnetworkauth-everywhere-src-6.5.0/include/QtNetworkAuth/qabstractoauth.h --- old/qtnetworkauth-everywhere-src-6.4.3/include/QtNetworkAuth/qabstractoauth.h 2023-03-11 19:16:48.000000000 +0100 +++ new/qtnetworkauth-everywhere-src-6.5.0/include/QtNetworkAuth/qabstractoauth.h 1970-01-01 01:00:00.000000000 +0100 @@ -1 +0,0 @@ -#include "../../src/oauth/qabstractoauth.h" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.4.3/include/QtNetworkAuth/qabstractoauth2.h new/qtnetworkauth-everywhere-src-6.5.0/include/QtNetworkAuth/qabstractoauth2.h --- old/qtnetworkauth-everywhere-src-6.4.3/include/QtNetworkAuth/qabstractoauth2.h 2023-03-11 19:16:48.000000000 +0100 +++ new/qtnetworkauth-everywhere-src-6.5.0/include/QtNetworkAuth/qabstractoauth2.h 1970-01-01 01:00:00.000000000 +0100 @@ -1 +0,0 @@ -#include "../../src/oauth/qabstractoauth2.h" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.4.3/include/QtNetworkAuth/qabstractoauthreplyhandler.h new/qtnetworkauth-everywhere-src-6.5.0/include/QtNetworkAuth/qabstractoauthreplyhandler.h --- old/qtnetworkauth-everywhere-src-6.4.3/include/QtNetworkAuth/qabstractoauthreplyhandler.h 2023-03-11 19:16:48.000000000 +0100 +++ new/qtnetworkauth-everywhere-src-6.5.0/include/QtNetworkAuth/qabstractoauthreplyhandler.h 1970-01-01 01:00:00.000000000 +0100 @@ -1 +0,0 @@ -#include "../../src/oauth/qabstractoauthreplyhandler.h" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.4.3/include/QtNetworkAuth/qoauth1.h new/qtnetworkauth-everywhere-src-6.5.0/include/QtNetworkAuth/qoauth1.h --- old/qtnetworkauth-everywhere-src-6.4.3/include/QtNetworkAuth/qoauth1.h 2023-03-11 19:16:48.000000000 +0100 +++ new/qtnetworkauth-everywhere-src-6.5.0/include/QtNetworkAuth/qoauth1.h 1970-01-01 01:00:00.000000000 +0100 @@ -1 +0,0 @@ -#include "../../src/oauth/qoauth1.h" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.4.3/include/QtNetworkAuth/qoauth1signature.h new/qtnetworkauth-everywhere-src-6.5.0/include/QtNetworkAuth/qoauth1signature.h --- old/qtnetworkauth-everywhere-src-6.4.3/include/QtNetworkAuth/qoauth1signature.h 2023-03-11 19:16:48.000000000 +0100 +++ new/qtnetworkauth-everywhere-src-6.5.0/include/QtNetworkAuth/qoauth1signature.h 1970-01-01 01:00:00.000000000 +0100 @@ -1 +0,0 @@ -#include "../../src/oauth/qoauth1signature.h" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.4.3/include/QtNetworkAuth/qoauth2authorizationcodeflow.h new/qtnetworkauth-everywhere-src-6.5.0/include/QtNetworkAuth/qoauth2authorizationcodeflow.h --- old/qtnetworkauth-everywhere-src-6.4.3/include/QtNetworkAuth/qoauth2authorizationcodeflow.h 2023-03-11 19:16:48.000000000 +0100 +++ new/qtnetworkauth-everywhere-src-6.5.0/include/QtNetworkAuth/qoauth2authorizationcodeflow.h 1970-01-01 01:00:00.000000000 +0100 @@ -1 +0,0 @@ -#include "../../src/oauth/qoauth2authorizationcodeflow.h" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.4.3/include/QtNetworkAuth/qoauthglobal.h new/qtnetworkauth-everywhere-src-6.5.0/include/QtNetworkAuth/qoauthglobal.h --- old/qtnetworkauth-everywhere-src-6.4.3/include/QtNetworkAuth/qoauthglobal.h 2023-03-11 19:16:48.000000000 +0100 +++ new/qtnetworkauth-everywhere-src-6.5.0/include/QtNetworkAuth/qoauthglobal.h 1970-01-01 01:00:00.000000000 +0100 @@ -1 +0,0 @@ -#include "../../src/oauth/qoauthglobal.h" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.4.3/include/QtNetworkAuth/qoauthhttpserverreplyhandler.h new/qtnetworkauth-everywhere-src-6.5.0/include/QtNetworkAuth/qoauthhttpserverreplyhandler.h --- old/qtnetworkauth-everywhere-src-6.4.3/include/QtNetworkAuth/qoauthhttpserverreplyhandler.h 2023-03-11 19:16:48.000000000 +0100 +++ new/qtnetworkauth-everywhere-src-6.5.0/include/QtNetworkAuth/qoauthhttpserverreplyhandler.h 1970-01-01 01:00:00.000000000 +0100 @@ -1 +0,0 @@ -#include "../../src/oauth/qoauthhttpserverreplyhandler.h" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.4.3/include/QtNetworkAuth/qoauthoobreplyhandler.h new/qtnetworkauth-everywhere-src-6.5.0/include/QtNetworkAuth/qoauthoobreplyhandler.h --- old/qtnetworkauth-everywhere-src-6.4.3/include/QtNetworkAuth/qoauthoobreplyhandler.h 2023-03-11 19:16:48.000000000 +0100 +++ new/qtnetworkauth-everywhere-src-6.5.0/include/QtNetworkAuth/qoauthoobreplyhandler.h 1970-01-01 01:00:00.000000000 +0100 @@ -1 +0,0 @@ -#include "../../src/oauth/qoauthoobreplyhandler.h" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.4.3/include/QtNetworkAuth/qtnetworkauthversion.h new/qtnetworkauth-everywhere-src-6.5.0/include/QtNetworkAuth/qtnetworkauthversion.h --- old/qtnetworkauth-everywhere-src-6.4.3/include/QtNetworkAuth/qtnetworkauthversion.h 2023-03-12 11:00:41.250246000 +0100 +++ new/qtnetworkauth-everywhere-src-6.5.0/include/QtNetworkAuth/qtnetworkauthversion.h 1970-01-01 01:00:00.000000000 +0100 @@ -1,9 +0,0 @@ -/* This file was generated by syncqt. */ -#ifndef QT_QTNETWORKAUTH_VERSION_H -#define QT_QTNETWORKAUTH_VERSION_H - -#define QTNETWORKAUTH_VERSION_STR "6.4.3" - -#define QTNETWORKAUTH_VERSION 0x060403 - -#endif // QT_QTNETWORKAUTH_VERSION_H diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.4.3/src/CMakeLists.txt new/qtnetworkauth-everywhere-src-6.5.0/src/CMakeLists.txt --- old/qtnetworkauth-everywhere-src-6.4.3/src/CMakeLists.txt 2023-03-11 19:16:48.000000000 +0100 +++ new/qtnetworkauth-everywhere-src-6.5.0/src/CMakeLists.txt 2023-03-25 20:28:41.000000000 +0100 @@ -1,3 +1,6 @@ +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: BSD-3-Clause + # Generated from src.pro. add_subdirectory(oauth) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.4.3/src/oauth/CMakeLists.txt new/qtnetworkauth-everywhere-src-6.5.0/src/oauth/CMakeLists.txt --- old/qtnetworkauth-everywhere-src-6.4.3/src/oauth/CMakeLists.txt 2023-03-11 19:16:48.000000000 +0100 +++ new/qtnetworkauth-everywhere-src-6.5.0/src/oauth/CMakeLists.txt 2023-03-25 20:28:41.000000000 +0100 @@ -1,3 +1,6 @@ +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: BSD-3-Clause + # Generated from oauth.pro. ##################################################################### diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.4.3/src/oauth/qabstractoauth2.cpp new/qtnetworkauth-everywhere-src-6.5.0/src/oauth/qabstractoauth2.cpp --- old/qtnetworkauth-everywhere-src-6.4.3/src/oauth/qabstractoauth2.cpp 2023-03-11 19:16:48.000000000 +0100 +++ new/qtnetworkauth-everywhere-src-6.5.0/src/oauth/qabstractoauth2.cpp 2023-03-25 20:28:41.000000000 +0100 @@ -18,8 +18,14 @@ #include <QtNetwork/qnetworkaccessmanager.h> #include <QtNetwork/qhttpmultipart.h> +#ifndef QT_NO_SSL +#include <QtNetwork/qsslconfiguration.h> +#endif + QT_BEGIN_NAMESPACE +using namespace Qt::StringLiterals; + /*! \class QAbstractOAuth2 \inmodule QtNetworkAuth @@ -87,23 +93,23 @@ from the server. */ -using Key = QAbstractOAuth2Private::OAuth2KeyString; -const QString Key::accessToken = QStringLiteral("access_token"); -const QString Key::apiKey = QStringLiteral("api_key"); -const QString Key::clientIdentifier = QStringLiteral("client_id"); -const QString Key::clientSharedSecret = QStringLiteral("client_secret"); -const QString Key::code = QStringLiteral("code"); -const QString Key::error = QStringLiteral("error"); -const QString Key::errorDescription = QStringLiteral("error_description"); -const QString Key::errorUri = QStringLiteral("error_uri"); -const QString Key::expiresIn = QStringLiteral("expires_in"); -const QString Key::grantType = QStringLiteral("grant_type"); -const QString Key::redirectUri = QStringLiteral("redirect_uri"); -const QString Key::refreshToken = QStringLiteral("refresh_token"); -const QString Key::responseType = QStringLiteral("response_type"); -const QString Key::scope = QStringLiteral("scope"); -const QString Key::state = QStringLiteral("state"); -const QString Key::tokenType = QStringLiteral("token_type"); +using OAuth2 = QAbstractOAuth2Private::OAuth2KeyString; +const QString OAuth2::accessToken = u"access_token"_s; +const QString OAuth2::apiKey = u"api_key"_s; +const QString OAuth2::clientIdentifier = u"client_id"_s; +const QString OAuth2::clientSharedSecret = u"client_secret"_s; +const QString OAuth2::code = u"code"_s; +const QString OAuth2::error = u"error"_s; +const QString OAuth2::errorDescription = u"error_description"_s; +const QString OAuth2::errorUri = u"error_uri"_s; +const QString OAuth2::expiresIn = u"expires_in"_s; +const QString OAuth2::grantType = u"grant_type"_s; +const QString OAuth2::redirectUri = u"redirect_uri"_s; +const QString OAuth2::refreshToken = u"refresh_token"_s; +const QString OAuth2::responseType = u"response_type"_s; +const QString OAuth2::scope = u"scope"_s; +const QString OAuth2::state = u"state"_s; +const QString OAuth2::tokenType = u"token_type"_s; QAbstractOAuth2Private::QAbstractOAuth2Private(const QPair<QString, QString> &clientCredentials, const QUrl &authorizationUrl, @@ -207,7 +213,7 @@ } QUrl ret = url; QUrlQuery query(ret.query()); - query.addQueryItem(Key::accessToken, d->token); + query.addQueryItem(OAuth2::accessToken, d->token); for (auto it = parameters.begin(), end = parameters.end(); it != end ;++it) query.addQueryItem(it.key(), it.value().toString()); ret.setQuery(query); @@ -480,6 +486,52 @@ } } +#ifndef QT_NO_SSL +/*! + \since 6.5 + + Returns the TLS configuration to be used when establishing a mutual TLS + connection between the client and the Authorization Server. + + \sa setSslConfiguration(), sslConfigurationChanged() +*/ +QSslConfiguration QAbstractOAuth2::sslConfiguration() const +{ + Q_D(const QAbstractOAuth2); + return d->sslConfiguration.value_or(QSslConfiguration()); +} + +/*! + \since 6.5 + + Sets the TLS \a configuration to be used when establishing + a mutual TLS connection between the client and the Authorization Server. + + \sa sslConfiguration(), sslConfigurationChanged() +*/ +void QAbstractOAuth2::setSslConfiguration(const QSslConfiguration &configuration) +{ + Q_D(QAbstractOAuth2); + const bool configChanged = !d->sslConfiguration || (*d->sslConfiguration != configuration); + if (configChanged) { + d->sslConfiguration = configuration; + Q_EMIT sslConfigurationChanged(configuration); + } +} + +/*! + \fn void QAbstractOAuth2::sslConfigurationChanged(const QSslConfiguration &configuration) + \since 6.5 + + The signal is emitted when the TLS configuration has changed. + The \a configuration parameter contains the new TLS configuration. + + \sa sslConfiguration(), setSslConfiguration() +*/ +#endif // !QT_NO_SSL + QT_END_NAMESPACE +#include "moc_qabstractoauth2.cpp" + #endif // QT_NO_HTTP diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.4.3/src/oauth/qabstractoauth2.h new/qtnetworkauth-everywhere-src-6.5.0/src/oauth/qabstractoauth2.h --- old/qtnetworkauth-everywhere-src-6.4.3/src/oauth/qabstractoauth2.h 2023-03-11 19:16:48.000000000 +0100 +++ new/qtnetworkauth-everywhere-src-6.5.0/src/oauth/qabstractoauth2.h 2023-03-25 20:28:41.000000000 +0100 @@ -13,6 +13,7 @@ QT_BEGIN_NAMESPACE +class QSslConfiguration; class QHttpMultiPart; class QAbstractOAuth2Private; class Q_OAUTH_EXPORT QAbstractOAuth2 : public QAbstractOAuth @@ -72,6 +73,11 @@ QString refreshToken() const; void setRefreshToken(const QString &refreshToken); +#ifndef QT_NO_SSL + QSslConfiguration sslConfiguration() const; + void setSslConfiguration(const QSslConfiguration &configuration); +#endif + void prepareRequest(QNetworkRequest *request, const QByteArray &verb, const QByteArray &body = QByteArray()) override; @@ -83,6 +89,9 @@ void stateChanged(const QString &state); void expirationAtChanged(const QDateTime &expiration); void refreshTokenChanged(const QString &refreshToken); +#ifndef QT_NO_SSL + void sslConfigurationChanged(const QSslConfiguration &configuration); +#endif void error(const QString &error, const QString &errorDescription, const QUrl &uri); void authorizationCallbackReceived(const QVariantMap &data); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.4.3/src/oauth/qabstractoauth2_p.h new/qtnetworkauth-everywhere-src-6.5.0/src/oauth/qabstractoauth2_p.h --- old/qtnetworkauth-everywhere-src-6.4.3/src/oauth/qabstractoauth2_p.h 2023-03-11 19:16:48.000000000 +0100 +++ new/qtnetworkauth-everywhere-src-6.5.0/src/oauth/qabstractoauth2_p.h 2023-03-25 20:28:41.000000000 +0100 @@ -17,6 +17,8 @@ #ifndef QT_NO_HTTP +#include <optional> + #include <private/qabstractoauth_p.h> #include <QtNetworkAuth/qoauthglobal.h> @@ -52,6 +54,9 @@ const QString bearerFormat = QStringLiteral("Bearer %1"); // Case sensitive QDateTime expiresAt; QString refreshToken; +#ifndef QT_NO_SSL + std::optional<QSslConfiguration> sslConfiguration; +#endif struct OAuth2KeyString { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.4.3/src/oauth/qoauth1.cpp new/qtnetworkauth-everywhere-src-6.5.0/src/oauth/qoauth1.cpp --- old/qtnetworkauth-everywhere-src-6.4.3/src/oauth/qoauth1.cpp 2023-03-11 19:16:48.000000000 +0100 +++ new/qtnetworkauth-everywhere-src-6.5.0/src/oauth/qoauth1.cpp 2023-03-25 20:28:41.000000000 +0100 @@ -25,6 +25,8 @@ QT_BEGIN_NAMESPACE +using namespace Qt::StringLiterals; + /*! \class QOAuth1 \inmodule QtNetworkAuth @@ -74,18 +76,18 @@ {PLAINTEXT} signature method. */ -using Key = QOAuth1Private::OAuth1KeyString; -const QString Key::oauthCallback = QStringLiteral("oauth_callback"); -const QString Key::oauthCallbackConfirmed = QStringLiteral("oauth_callback_confirmed"); -const QString Key::oauthConsumerKey = QStringLiteral("oauth_consumer_key"); -const QString Key::oauthNonce = QStringLiteral("oauth_nonce"); -const QString Key::oauthSignature = QStringLiteral("oauth_signature"); -const QString Key::oauthSignatureMethod = QStringLiteral("oauth_signature_method"); -const QString Key::oauthTimestamp = QStringLiteral("oauth_timestamp"); -const QString Key::oauthToken = QStringLiteral("oauth_token"); -const QString Key::oauthTokenSecret = QStringLiteral("oauth_token_secret"); -const QString Key::oauthVerifier = QStringLiteral("oauth_verifier"); -const QString Key::oauthVersion = QStringLiteral("oauth_version"); +using OAuth1 = QOAuth1Private::OAuth1KeyString; +const QString OAuth1::oauthCallback = u"oauth_callback"_s; +const QString OAuth1::oauthCallbackConfirmed = u"oauth_callback_confirmed"_s; +const QString OAuth1::oauthConsumerKey = u"oauth_consumer_key"_s; +const QString OAuth1::oauthNonce = u"oauth_nonce"_s; +const QString OAuth1::oauthSignature = u"oauth_signature"_s; +const QString OAuth1::oauthSignatureMethod = u"oauth_signature_method"_s; +const QString OAuth1::oauthTimestamp = u"oauth_timestamp"_s; +const QString OAuth1::oauthToken = u"oauth_token"_s; +const QString OAuth1::oauthTokenSecret = u"oauth_token_secret"_s; +const QString OAuth1::oauthVerifier = u"oauth_verifier"_s; +const QString OAuth1::oauthVersion = u"oauth_version"_s; QOAuth1Private::QOAuth1Private(const QPair<QString, QString> &clientCredentials, QNetworkAccessManager *networkAccessManager) : @@ -103,11 +105,11 @@ { const auto currentDateTime = QDateTime::currentDateTimeUtc(); - headers->insert(Key::oauthNonce, QOAuth1::nonce()); - headers->insert(Key::oauthConsumerKey, clientIdentifier); - headers->insert(Key::oauthTimestamp, QString::number(currentDateTime.toSecsSinceEpoch())); - headers->insert(Key::oauthVersion, oauthVersion); - headers->insert(Key::oauthSignatureMethod, signatureMethodString().toUtf8()); + headers->insert(OAuth1::oauthNonce, QOAuth1::nonce()); + headers->insert(OAuth1::oauthConsumerKey, clientIdentifier); + headers->insert(OAuth1::oauthTimestamp, QString::number(currentDateTime.toSecsSinceEpoch())); + headers->insert(OAuth1::oauthVersion, oauthVersion); + headers->insert(OAuth1::oauthSignatureMethod, signatureMethodString().toUtf8()); } void QOAuth1Private::appendSignature(QAbstractOAuth::Stage stage, @@ -124,7 +126,7 @@ modifyParametersFunction(stage, &allParameters); signature = generateSignature(allParameters, url, operation); } - headers->insert(Key::oauthSignature, signature); + headers->insert(OAuth1::oauthSignature, signature); } QNetworkReply *QOAuth1Private::requestToken(QNetworkAccessManager::Operation operation, @@ -161,7 +163,7 @@ remainingParameters.insert(key, value); } if (!token.first.isEmpty()) { - headers.insert(Key::oauthToken, token.first); + headers.insert(OAuth1::oauthToken, token.first); stage = QAbstractOAuth::Stage::RequestingAccessToken; } appendSignature(stage, &headers, url, operation, remainingParameters); @@ -257,12 +259,12 @@ const auto currentDateTime = QDateTime::currentDateTimeUtc(); - oauthParams.insert(Key::oauthConsumerKey, clientIdentifier); - oauthParams.insert(Key::oauthVersion, QStringLiteral("1.0")); - oauthParams.insert(Key::oauthToken, token); - oauthParams.insert(Key::oauthSignatureMethod, signatureMethodString()); - oauthParams.insert(Key::oauthNonce, QOAuth1::nonce()); - oauthParams.insert(Key::oauthTimestamp, QString::number(currentDateTime.toSecsSinceEpoch())); + oauthParams.insert(OAuth1::oauthConsumerKey, clientIdentifier); + oauthParams.insert(OAuth1::oauthVersion, QStringLiteral("1.0")); + oauthParams.insert(OAuth1::oauthToken, token); + oauthParams.insert(OAuth1::oauthSignatureMethod, signatureMethodString()); + oauthParams.insert(OAuth1::oauthNonce, QOAuth1::nonce()); + oauthParams.insert(OAuth1::oauthTimestamp, QString::number(currentDateTime.toSecsSinceEpoch())); return oauthParams; } @@ -304,11 +306,11 @@ if (tokenRequested) // 'Reset' tokenRequested now that we've gotten new tokens tokenRequested = false; - QPair<QString, QString> credential(tokens.value(Key::oauthToken).toString(), - tokens.value(Key::oauthTokenSecret).toString()); + QPair<QString, QString> credential(tokens.value(OAuth1::oauthToken).toString(), + tokens.value(OAuth1::oauthTokenSecret).toString()); switch (status) { case QAbstractOAuth::Status::NotAuthenticated: - if (tokens.value(Key::oauthCallbackConfirmed, true).toBool()) { + if (tokens.value(OAuth1::oauthCallbackConfirmed, true).toBool()) { q->setTokenCredentials(credential); setStatus(QAbstractOAuth::Status::TemporaryCredentialsReceived); } else { @@ -699,7 +701,7 @@ d->token.clear(); d->tokenSecret.clear(); QVariantMap allParameters(parameters); - allParameters.insert(Key::oauthCallback, callback()); + allParameters.insert(OAuth1::oauthCallback, callback()); return d->requestToken(operation, url, qMakePair(d->token, d->tokenSecret), allParameters); } @@ -741,7 +743,7 @@ QMultiMap<QString, QVariant> parameters(oauthParams); parameters.unite(QMultiMap<QString, QVariant>(signingParameters)); const auto signature = d->generateSignature(parameters, request->url(), operation); - oauthParams.insert(Key::oauthSignature, signature); + oauthParams.insert(OAuth1::oauthSignature, signature); } if (operation == QNetworkAccessManager::GetOperation) { @@ -782,7 +784,7 @@ QMultiMap<QString, QVariant> parameters(oauthParams); parameters.unite(QMultiMap<QString, QVariant>(signingParameters)); const auto signature = d->generateSignature(parameters, request->url(), operationVerb); - oauthParams.insert(Key::oauthSignature, signature); + oauthParams.insert(OAuth1::oauthSignature, signature); } request->setRawHeader("Authorization", generateAuthorizationHeader(oauthParams)); @@ -839,8 +841,6 @@ void QOAuth1::grant() { Q_D(QOAuth1); - using Key = QOAuth1Private::OAuth1KeyString; - if (d->temporaryCredentialsUrl.isEmpty()) { qCWarning(d->loggingCategory, "requestTokenUrl is empty"); return; @@ -867,7 +867,7 @@ connect(reply, &QNetworkReply::finished, reply, &QNetworkReply::deleteLater); } else { QMultiMap<QString, QVariant> parameters; - parameters.insert(Key::oauthToken, d->token); + parameters.insert(OAuth1::oauthToken, d->token); if (d->modifyParametersFunction) d->modifyParametersFunction(Stage::RequestingAuthorization, ¶meters); @@ -885,10 +885,10 @@ if (httpReplyHandler) { connect(httpReplyHandler, &QOAuthHttpServerReplyHandler::callbackReceived, [&]( const QVariantMap &values) { - QString verifier = values.value(Key::oauthVerifier).toString(); + QString verifier = values.value(OAuth1::oauthVerifier).toString(); if (verifier.isEmpty()) { qCWarning(d->loggingCategory, "%s not found in the callback", - qPrintable(Key::oauthVerifier)); + qPrintable(OAuth1::oauthVerifier)); return; } continueGrantWithVerifier(verifier); @@ -912,7 +912,7 @@ Q_D(QOAuth1); QVariantMap parameters; - parameters.insert(Key::oauthVerifier, verifier); + parameters.insert(OAuth1::oauthVerifier, verifier); auto reply = requestTokenCredentials(QNetworkAccessManager::PostOperation, d->tokenCredentialsUrl, qMakePair(d->token, d->tokenSecret), diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.4.3/src/oauth/qoauth2authorizationcodeflow.cpp new/qtnetworkauth-everywhere-src-6.5.0/src/oauth/qoauth2authorizationcodeflow.cpp --- old/qtnetworkauth-everywhere-src-6.4.3/src/oauth/qoauth2authorizationcodeflow.cpp 2023-03-11 19:16:48.000000000 +0100 +++ new/qtnetworkauth-everywhere-src-6.5.0/src/oauth/qoauth2authorizationcodeflow.cpp 2023-03-25 20:28:41.000000000 +0100 @@ -295,6 +295,10 @@ QMultiMap<QString, QVariant> parameters; QNetworkRequest request(d->accessTokenUrl); +#ifndef QT_NO_SSL + if (d->sslConfiguration && !d->sslConfiguration->isNull()) + request.setSslConfiguration(*d->sslConfiguration); +#endif QUrlQuery query; parameters.insert(Key::grantType, QStringLiteral("refresh_token")); parameters.insert(Key::refreshToken, d->refreshToken); @@ -369,6 +373,10 @@ QMultiMap<QString, QVariant> parameters; QNetworkRequest request(d->accessTokenUrl); +#ifndef QT_NO_SSL + if (d->sslConfiguration && !d->sslConfiguration->isNull()) + request.setSslConfiguration(*d->sslConfiguration); +#endif QUrlQuery query; parameters.insert(Key::grantType, QStringLiteral("authorization_code")); parameters.insert(Key::code, QUrl::toPercentEncoding(code)); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.4.3/src/oauth/qoauthglobal.h new/qtnetworkauth-everywhere-src-6.5.0/src/oauth/qoauthglobal.h --- old/qtnetworkauth-everywhere-src-6.4.3/src/oauth/qoauthglobal.h 2023-03-11 19:16:48.000000000 +0100 +++ new/qtnetworkauth-everywhere-src-6.5.0/src/oauth/qoauthglobal.h 2023-03-25 20:28:41.000000000 +0100 @@ -5,6 +5,7 @@ #define QOAUTHGLOBAL_H #include <QtCore/qglobal.h> +#include <QtNetwork/qtnetworkglobal.h> QT_BEGIN_NAMESPACE diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.4.3/tests/CMakeLists.txt new/qtnetworkauth-everywhere-src-6.5.0/tests/CMakeLists.txt --- old/qtnetworkauth-everywhere-src-6.4.3/tests/CMakeLists.txt 2023-03-11 19:16:48.000000000 +0100 +++ new/qtnetworkauth-everywhere-src-6.5.0/tests/CMakeLists.txt 2023-03-25 20:28:41.000000000 +0100 @@ -1,3 +1,6 @@ +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: BSD-3-Clause + # Generated from tests.pro. if(QT_BUILD_STANDALONE_TESTS) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.4.3/tests/auto/CMakeLists.txt new/qtnetworkauth-everywhere-src-6.5.0/tests/auto/CMakeLists.txt --- old/qtnetworkauth-everywhere-src-6.4.3/tests/auto/CMakeLists.txt 2023-03-11 19:16:48.000000000 +0100 +++ new/qtnetworkauth-everywhere-src-6.5.0/tests/auto/CMakeLists.txt 2023-03-25 20:28:41.000000000 +0100 @@ -1,3 +1,6 @@ +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: BSD-3-Clause + # Generated from auto.pro. # add_subdirectory(cmake) special case remove diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.4.3/tests/auto/abstractoauth/CMakeLists.txt new/qtnetworkauth-everywhere-src-6.5.0/tests/auto/abstractoauth/CMakeLists.txt --- old/qtnetworkauth-everywhere-src-6.4.3/tests/auto/abstractoauth/CMakeLists.txt 2023-03-11 19:16:48.000000000 +0100 +++ new/qtnetworkauth-everywhere-src-6.5.0/tests/auto/abstractoauth/CMakeLists.txt 2023-03-25 20:28:41.000000000 +0100 @@ -1,3 +1,6 @@ +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: BSD-3-Clause + # Generated from abstractoauth.pro. ##################################################################### @@ -7,7 +10,7 @@ qt_internal_add_test(tst_abstractoauth SOURCES tst_abstractoauth.cpp - PUBLIC_LIBRARIES + LIBRARIES Qt::CorePrivate Qt::Network Qt::NetworkAuth diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.4.3/tests/auto/cmake/CMakeLists.txt new/qtnetworkauth-everywhere-src-6.5.0/tests/auto/cmake/CMakeLists.txt --- old/qtnetworkauth-everywhere-src-6.4.3/tests/auto/cmake/CMakeLists.txt 2023-03-11 19:16:48.000000000 +0100 +++ new/qtnetworkauth-everywhere-src-6.5.0/tests/auto/cmake/CMakeLists.txt 2023-03-25 20:28:41.000000000 +0100 @@ -1,3 +1,6 @@ +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: BSD-3-Clause + cmake_minimum_required(VERSION 3.16) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.4.3/tests/auto/oauth1/CMakeLists.txt new/qtnetworkauth-everywhere-src-6.5.0/tests/auto/oauth1/CMakeLists.txt --- old/qtnetworkauth-everywhere-src-6.4.3/tests/auto/oauth1/CMakeLists.txt 2023-03-11 19:16:48.000000000 +0100 +++ new/qtnetworkauth-everywhere-src-6.5.0/tests/auto/oauth1/CMakeLists.txt 2023-03-25 20:28:41.000000000 +0100 @@ -1,3 +1,6 @@ +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: BSD-3-Clause + # Generated from oauth1.pro. ##################################################################### @@ -10,7 +13,7 @@ tst_oauth1.cpp INCLUDE_DIRECTORIES ../shared - PUBLIC_LIBRARIES + LIBRARIES Qt::CorePrivate Qt::Network Qt::NetworkAuth diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.4.3/tests/auto/oauth1signature/CMakeLists.txt new/qtnetworkauth-everywhere-src-6.5.0/tests/auto/oauth1signature/CMakeLists.txt --- old/qtnetworkauth-everywhere-src-6.4.3/tests/auto/oauth1signature/CMakeLists.txt 2023-03-11 19:16:48.000000000 +0100 +++ new/qtnetworkauth-everywhere-src-6.5.0/tests/auto/oauth1signature/CMakeLists.txt 2023-03-25 20:28:41.000000000 +0100 @@ -1,3 +1,6 @@ +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: BSD-3-Clause + # Generated from oauth1signature.pro. ##################################################################### @@ -7,7 +10,7 @@ qt_internal_add_test(tst_oauth1signature SOURCES tst_oauth1signature.cpp - PUBLIC_LIBRARIES + LIBRARIES Qt::CorePrivate Qt::NetworkAuth ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.4.3/tests/auto/oauth2/CMakeLists.txt new/qtnetworkauth-everywhere-src-6.5.0/tests/auto/oauth2/CMakeLists.txt --- old/qtnetworkauth-everywhere-src-6.4.3/tests/auto/oauth2/CMakeLists.txt 2023-03-11 19:16:48.000000000 +0100 +++ new/qtnetworkauth-everywhere-src-6.5.0/tests/auto/oauth2/CMakeLists.txt 2023-03-25 20:28:41.000000000 +0100 @@ -1,20 +1,27 @@ +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: BSD-3-Clause + # Generated from oauth2.pro. ##################################################################### ## tst_oauth2 Test: ##################################################################### +list(APPEND test_data "certs") + qt_internal_add_test(tst_oauth2 SOURCES ../shared/webserver.h + ../shared/tlswebserver.h tst_oauth2.cpp INCLUDE_DIRECTORIES ../shared - PUBLIC_LIBRARIES + LIBRARIES Qt::CorePrivate Qt::Network Qt::NetworkAuth Qt::NetworkAuthPrivate + TESTDATA ${test_data} ) #### Keys ignored in scope 1:.:.:oauth2.pro:<TRUE>: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.4.3/tests/auto/oauth2/certs/selfsigned-client.crt new/qtnetworkauth-everywhere-src-6.5.0/tests/auto/oauth2/certs/selfsigned-client.crt --- old/qtnetworkauth-everywhere-src-6.4.3/tests/auto/oauth2/certs/selfsigned-client.crt 1970-01-01 01:00:00.000000000 +0100 +++ new/qtnetworkauth-everywhere-src-6.5.0/tests/auto/oauth2/certs/selfsigned-client.crt 2023-03-25 20:28:41.000000000 +0100 @@ -0,0 +1,18 @@ +-----BEGIN CERTIFICATE----- +MIIC6TCCAdECCC/r9KvmbWTKMA0GCSqGSIb3DQEBCwUAMDUxFDASBgNVBAMMC0F1 +c3dlaXNBcHAyMR0wGwYDVQQFExQxODIzNTE0MTY0NzI5NDg5NDM3MTAiGA8xOTcw +MDEwMTAwMDAwMFoYDzk5OTkxMjMxMjM1OTU5WjA1MRQwEgYDVQQDDAtBdXN3ZWlz +QXBwMjEdMBsGA1UEBRMUMTgyMzUxNDE2NDcyOTQ4OTQzNzEwggEiMA0GCSqGSIb3 +DQEBAQUAA4IBDwAwggEKAoIBAQCahBpcZyr+PJBCpolzQeFVvDKABwlpdRKGZ8qq +jD4sq2L7VlBJslgJGv5vsB5oJbnX1FFEu4Uw2kYb/LhnFCEXEFtGKRpWOEZOOqWb +4l4q2MCa82ZCoIDt8yoAt0sSShbtR6pjW+l0lwAOEpfGvMaMVo5JUyspRxhl1dSu +sS2Wf65zliqF5VSM2r4xMfJ6LVytxDZsGfTe/HFT2OYYrF+UQZg0mNL39rYWOK4R +xoOz8eLl3K5hKuHNfn5zPt5QtMhaIvebijBg23xJpl+BeoS37WzaK1f+NyWZKPFb +rttvSnFxpkyRHqJJ5piNGH6pkQ1+zhd7uh7eOIwxktjYBOFzAgMBAAEwDQYJKoZI +hvcNAQELBQADggEBADw3MYPft+X78OK/2HAltzsKjfxv/D5qVizm9hcyG1GYe5pS +qgFn0trCyJopYdbRr+hP7CuHwMmv62CZiHSog3CBPoUh19JENUDGbHXxTEFleB0i +Fd8I2+WvRjbQ+ehaeTJPx88v5kkJnB2tZUNZuhEws8emCwr1G0TQv1tRYCR1Lp9i +8/I3FSFpL1zyk47WfM/THa279MPw9WtrFGA6oi36gH9mYxek7n/zQTVi54xDx9GT +KigBYqavjFdNXryjLTCCtJpMTDePgP66NAUnxn0D/amI2vSbIN++PSTsBm+n4Ti5 +QW/ShFQDNb4bDiwjtTKCeKwvAp2/6GSHVkYy28M= +-----END CERTIFICATE----- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.4.3/tests/auto/oauth2/certs/selfsigned-client.key new/qtnetworkauth-everywhere-src-6.5.0/tests/auto/oauth2/certs/selfsigned-client.key --- old/qtnetworkauth-everywhere-src-6.4.3/tests/auto/oauth2/certs/selfsigned-client.key 1970-01-01 01:00:00.000000000 +0100 +++ new/qtnetworkauth-everywhere-src-6.5.0/tests/auto/oauth2/certs/selfsigned-client.key 2023-03-25 20:28:41.000000000 +0100 @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEogIBAAKCAQEAmoQaXGcq/jyQQqaJc0HhVbwygAcJaXUShmfKqow+LKti+1ZQ +SbJYCRr+b7AeaCW519RRRLuFMNpGG/y4ZxQhFxBbRikaVjhGTjqlm+JeKtjAmvNm +QqCA7fMqALdLEkoW7UeqY1vpdJcADhKXxrzGjFaOSVMrKUcYZdXUrrEtln+uc5Yq +heVUjNq+MTHyei1crcQ2bBn03vxxU9jmGKxflEGYNJjS9/a2FjiuEcaDs/Hi5dyu +YSrhzX5+cz7eULTIWiL3m4owYNt8SaZfgXqEt+1s2itX/jclmSjxW67bb0pxcaZM +kR6iSeaYjRh+qZENfs4Xe7oe3jiMMZLY2AThcwIDAQABAoIBAFjgvc0C5t8AdTZx +VsS+U2Aedang4lAPsE0xbIj3TFgjaTcLKfmKJUtvhIU39/WOJbz4+pofhvhXxVYZ +4vQfxvzeQrIzuFt52S7sWxA0gFgC/57hfKO8cQzt/u4UgJEPnupze5XVa47NwJFX +rof5U/erXgLdXQlMRMNm4QRvE7rp58E2MkSYNur0Xgy9L7cRcUQJ8iuMaxBpOzhS +fbNFi5zT7RCGcQSIDcb1JFlgs5tMUs6jzLoDSVD2+vvsN4i4LAAPkJSGTGed5vY1 +xn4G8KPR4HHrnBYEb0SGu4ZTznOnQ+JSKhQrbnvEzXM4RTfjqn0YvF8x70+pWSMi +Fb4mlBECgYEAzW82O79HAlMm8LD7J4byPfVc/1M5/JOnE9H+RR5Vt4jZQGyjCmJu +cj4UeZyVim0xg30sSYrJ2Urd27CtHp+sMgHkvJt3/ZgcfMZJbMKNGq/OUtV8s/cA +nkU++/LgeW8r7wpaDjT7bfnOdcf16mYoXrmk0rTJvRqGXCBvCxtt5bsCgYEAwIxu +vZjPV4Vu/VX6sH2d31D9EFZuZKjGhqukFVtRqLbeosqT9mA+LhQ/wP5qoR2gLQbe +EwxJLJwGFjUhyhbHNlo6oHv3fWkzmHIMPwDRRI3Ktwi/50SwNSnyERUQcLaiwqKx +BqaxPYNnspUt0nKE0LFZsSlrfEyxajqAlUEgm6kCgYAV+uQumFScpxDvh8AXhpS8 +lFgS6XC22YVy1XEDLC+3p2i3P+hh4A45IvNF378QRIabrvTiGXtnSF9cdhbPw/3E +i/dRRsEb3P6PSxfoDxjR1iWZL0Zcav0h8f6/LkleNMralJz2EC0moye36mEhZzTC +jdJYyQccuI3PpZi7839aqQKBgGezOnEiO4kHdB88jyc+gCglliWWZx4PR9x/1H8s +D26uDnneYJHwg4yNm0h1vTfInNujNzdLBp3f6edL9kbAvcmoDqsgGMqSPhd8VNwZ +tJsXQnYRYElN1RjM3nIUxiXuNvpcZLsQS6S1gMPNVEBjLOS4n3WquRjYtTRhDZ9U +1BsBAoGAUFrIatOLFhcgaqENHyUbMx5uSx0lIfF6Xd5KIAgi+btdmugHe+NK8Cd2 +Rc2bQLQ9K1SvKFX6nFuEsGxnXkKuyhL/j0Kgm8nZin4uAcrtFnNdFumvCL6YgYSc +IvvM+uVfGEdbqm4pTuiLBfzOXIIy3kVlLGo402QG1pBzOtmsRMs= +-----END RSA PRIVATE KEY----- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.4.3/tests/auto/oauth2/certs/selfsigned-server.crt new/qtnetworkauth-everywhere-src-6.5.0/tests/auto/oauth2/certs/selfsigned-server.crt --- old/qtnetworkauth-everywhere-src-6.4.3/tests/auto/oauth2/certs/selfsigned-server.crt 1970-01-01 01:00:00.000000000 +0100 +++ new/qtnetworkauth-everywhere-src-6.5.0/tests/auto/oauth2/certs/selfsigned-server.crt 2023-03-25 20:28:41.000000000 +0100 @@ -0,0 +1,18 @@ +-----BEGIN CERTIFICATE----- +MIIC5TCCAc0CCAO22gNi0v20MA0GCSqGSIb3DQEBCwUAMDMxFDASBgNVBAMMC0F1 +c3dlaXNBcHAyMRswGQYDVQQFExIyNTIxMTE1NjY3NjM2MjExODgwIhgPMTk3MDAx +MDEwMDAwMDBaGA85OTk5MTIzMTIzNTk1OVowMzEUMBIGA1UEAwwLQXVzd2Vpc0Fw +cDIxGzAZBgNVBAUTEjI1MjExMTU2Njc2MzYyMTE4ODCCASIwDQYJKoZIhvcNAQEB +BQADggEPADCCAQoCggEBAL+Fl6v5dcU7qk7vbINclWOhvCe/uklKnXV2QU382x7g +qpbYxJiJvz24C6tgDMmE0pwEz6PiCbh1dkc8+9cdp37eBcFLCOXYQb27gqVVyVtu +xO0LLVXPCv48bGSwljOz0FRC3FolzWxzrZogM/i2b/lmehHJ3D4ejmINmIgtFJ9P +JNNCH4Oh5YEbaFFlNf2m7lCoSuQkOlLZcGeLoipK2XvhZJff6c1uxValh/Mx5dNB +5Mgd5cOZSSEhwf7mcE8C3SHVfjeNfZGIqlkwdY8lvAOjirAtj6Yl88sJOUID/Q/N +hU9D8IZy6+Bk2cJQwI/Gzr590VYvlSTI+6lXr//oBBECAwEAATANBgkqhkiG9w0B +AQsFAAOCAQEArSMO88AYT+9tPCl5lXtSRa0OycqKNlW58GujxIDuR8WX1eFmGSHQ +uijo5KPYUnqydZzAewGC8NvC9WcLwFltNZ9igXikUHiAHc1JLfW7+7SgKpwOUb02 +rJkUkpPA/SmwkLSKYiR1prt5wgSulU1HPBESep05DfR8MCU5+KHkLyXDqtrbudJ4 +lQd9dSKJFn+cSjUC5JNxCPHoIISe7hfGFMLkd0/tVfSIXLVOAZG4K6zExUdjyPi8 +qEuPq6QCRyIJbYQc5HfnARgwK6GXHqkyLWlqK946Yz8VOba7Nan5uQ6xCjUMHw8Z +z/673o/3DCaQ9N6dWahNQ09a9ZH8U1X4iA== +-----END CERTIFICATE----- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.4.3/tests/auto/oauth2/certs/selfsigned-server.key new/qtnetworkauth-everywhere-src-6.5.0/tests/auto/oauth2/certs/selfsigned-server.key --- old/qtnetworkauth-everywhere-src-6.4.3/tests/auto/oauth2/certs/selfsigned-server.key 1970-01-01 01:00:00.000000000 +0100 +++ new/qtnetworkauth-everywhere-src-6.5.0/tests/auto/oauth2/certs/selfsigned-server.key 2023-03-25 20:28:41.000000000 +0100 @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEpAIBAAKCAQEAv4WXq/l1xTuqTu9sg1yVY6G8J7+6SUqddXZBTfzbHuCqltjE +mIm/PbgLq2AMyYTSnATPo+IJuHV2Rzz71x2nft4FwUsI5dhBvbuCpVXJW27E7Qst +Vc8K/jxsZLCWM7PQVELcWiXNbHOtmiAz+LZv+WZ6EcncPh6OYg2YiC0Un08k00If +g6HlgRtoUWU1/abuUKhK5CQ6UtlwZ4uiKkrZe+Fkl9/pzW7FVqWH8zHl00HkyB3l +w5lJISHB/uZwTwLdIdV+N419kYiqWTB1jyW8A6OKsC2PpiXzywk5QgP9D82FT0Pw +hnLr4GTZwlDAj8bOvn3RVi+VJMj7qVev/+gEEQIDAQABAoIBADdoXsjSEtBMwqiz +e6FFV7LLR7P4M9ygSY2B+MKnNH1qYe/iJn4626jvZfDeiNSEKKoaejffXRCQaveR +HQrO+XYqpV+WZayZM+vAI7vRZb+d/DrX0PXSQEvtDy7SJ6Itk0fNUBKEfTmy/bZp +Op/pp9tvWkFrNNyD2o1jgY1j/WNY8g605m0oURJ9WQsMUu/Kzu+NMoaKTIoQGb3d +dP71F4KaTXHYxj3B0c+y0NedKbrvnBsP6XbEpgJBaXjtD9z+z/aMF6dmuvpkx7uY +qzwPMRw05QPyJ9x+1V/v4TytY5f596NgW2niVj77BunkZasTYIEX7bjByrlTeLdx +xvPRpAECgYEA5KkM/ORbhN1oaw9+tQxA48oG2DFqChBr+vc4NU4j5SNFn9ks5nHI +xdJNZ9k+bjVUkBP4m88Wd07SW9zXCL8Q5lczb+p5SWl/Pp7ltqaxpH17uzamsaIv +KIBkeJTOU5TuWdXiV5FY+ofK9ojyEaqX1tmylWnoVe4bIMRWXE5bMSkCgYEA1mvJ +snkNzPFG0RK7ikjsNxrhzE07+7RSnoM9WeW8y2lvQ9MjdR6eOgqnnlcdk2A7OVbf +culNgLc0qx/PxZ4BV+8yLLb1EBBGvuVG+x4a6H2mLHdFCJekByZHaQNs9ogVLvdv +3z8D59KknBUjtj9dCw90Z41yMM4kpWMG9yfSEKkCgYEAvuCvytwF2d/JrrV8nD3i +XUTkecymLEiRGysMbNMR+9F56XotlSEe7KQloa8kAnPaZ3uEaOxyYJ4X1D+B8fct +cFsSwTYGkVXTtr6GG/cDC8EEbL+uX1J382Nae54croEAh1WYYGkg0eJRd4PSLxUt +M1j/TuLd4/2j/7JmNR/j2CECgYBdB3MBHghgzKXe+/OmMbFazyz8SN4nfLsDzwkF +QenBj0MY+DhADkK0B/9lcYKBeJT5cbmMz7AykkolnK22nbETh9ILGG4GxCkNlchQ +F2WxTSKV1EF9Ut11xKPi6fuSksQuFmjRQTPelsOYfIt7/M3PiKsGapYKmsXHg8l3 +3i0D0QKBgQCi+HNOaYqduxwjrj8h4eUbiwjID8DCNJ+jXsuGVa6jcsfFpdpivx2c +ytYSXuTXLRq0I3c1ChUOGQQeztJ5GtCPnXjLHHMf3f6yr7Pk56AUmUsaIlR1Q2Zo +gqpFD8zYD5UFc2KM7Y38YTh4j82uDzDvHBBFpli7dEmSn2WpcmzFag== +-----END RSA PRIVATE KEY----- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.4.3/tests/auto/oauth2/tst_oauth2.cpp new/qtnetworkauth-everywhere-src-6.5.0/tests/auto/oauth2/tst_oauth2.cpp --- old/qtnetworkauth-everywhere-src-6.4.3/tests/auto/oauth2/tst_oauth2.cpp 2023-03-11 19:16:48.000000000 +0100 +++ new/qtnetworkauth-everywhere-src-6.5.0/tests/auto/oauth2/tst_oauth2.cpp 2023-03-25 20:28:41.000000000 +0100 @@ -3,20 +3,33 @@ #include <QtTest> +#ifndef QT_NO_SSL +#include <QSslKey> +#endif + #include <QtNetworkAuth/qabstractoauthreplyhandler.h> #include <QtNetworkAuth/qoauth2authorizationcodeflow.h> #include "webserver.h" +#include "tlswebserver.h" class tst_OAuth2 : public QObject { Q_OBJECT private Q_SLOTS: + void initTestCase(); void getToken(); void refreshToken(); void getAndRefreshToken(); void prepareRequest(); +#ifndef QT_NO_SSL + void setSslConfig(); + void tlsAuthentication(); +#endif + +private: + QString testDataDir; }; struct ReplyHandler : QAbstractOAuthReplyHandler @@ -41,6 +54,15 @@ } }; +void tst_OAuth2::initTestCase() +{ + testDataDir = QFileInfo(QFINDTESTDATA("certs")).absolutePath(); + if (testDataDir.isEmpty()) + testDataDir = QCoreApplication::applicationDirPath(); + if (!testDataDir.endsWith(QLatin1String("/"))) + testDataDir += QLatin1String("/"); +} + void tst_OAuth2::getToken() { WebServer webServer([](const WebServer::HttpRequest &request, QTcpSocket *socket) { @@ -70,7 +92,7 @@ }); QSignalSpy grantedSpy(&oauth2, &QOAuth2AuthorizationCodeFlow::granted); oauth2.grant(); - QTRY_COMPARE(grantedSpy.count(), 1); + QTRY_COMPARE(grantedSpy.size(), 1); QCOMPARE(oauth2.token(), QLatin1String("token")); } @@ -95,7 +117,7 @@ oauth2.setRefreshToken(QLatin1String("refresh_token")); QSignalSpy grantedSpy(&oauth2, &QOAuth2AuthorizationCodeFlow::granted); oauth2.refreshAccessToken(); - QTRY_COMPARE(grantedSpy.count(), 1); + QTRY_COMPARE(grantedSpy.size(), 1); QCOMPARE(oauth2.token(), QLatin1String("token")); } @@ -133,11 +155,11 @@ }); QSignalSpy grantedSpy(&oauth2, &QOAuth2AuthorizationCodeFlow::granted); oauth2.grant(); - QTRY_COMPARE(grantedSpy.count(), 1); + QTRY_COMPARE(grantedSpy.size(), 1); QCOMPARE(oauth2.token(), QLatin1String("authorization_code")); grantedSpy.clear(); oauth2.refreshAccessToken(); - QTRY_COMPARE(grantedSpy.count(), 1); + QTRY_COMPARE(grantedSpy.size(), 1); QCOMPARE(oauth2.token(), QLatin1String("refresh_token")); } @@ -151,5 +173,119 @@ QCOMPARE(request.rawHeader("Authorization"), QByteArray("Bearer access_token")); } +#ifndef QT_NO_SSL +static QSslConfiguration createSslConfiguration(QString keyFileName, QString certificateFileName) +{ + QSslConfiguration configuration(QSslConfiguration::defaultConfiguration()); + + QFile keyFile(keyFileName); + if (keyFile.open(QIODevice::ReadOnly)) { + QSslKey key(keyFile.readAll(), QSsl::Rsa, QSsl::Pem, QSsl::PrivateKey); + if (!key.isNull()) { + configuration.setPrivateKey(key); + } else { + qCritical() << "Could not parse key: " << keyFileName; + } + } else { + qCritical() << "Could not find key: " << keyFileName; + } + + QList<QSslCertificate> localCert = QSslCertificate::fromPath(certificateFileName); + if (!localCert.isEmpty() && !localCert.first().isNull()) { + configuration.setLocalCertificate(localCert.first()); + } else { + qCritical() << "Could not find certificate: " << certificateFileName; + } + + configuration.setPeerVerifyMode(QSslSocket::VerifyPeer); + + return configuration; +} + +void tst_OAuth2::setSslConfig() +{ + QOAuth2AuthorizationCodeFlow oauth2; + QSignalSpy sslConfigSpy(&oauth2, &QAbstractOAuth2::sslConfigurationChanged); + + QVERIFY(sslConfigSpy.isValid()); + QCOMPARE(oauth2.sslConfiguration(), QSslConfiguration()); + QCOMPARE(sslConfigSpy.size(), 0); + + auto config = createSslConfiguration(testDataDir + "certs/selfsigned-server.key", + testDataDir + "certs/selfsigned-server.crt"); + oauth2.setSslConfiguration(config); + + QCOMPARE(oauth2.sslConfiguration(), config); + QCOMPARE(sslConfigSpy.size(), 1); + + // set same config - nothing happens + oauth2.setSslConfiguration(config); + QCOMPARE(sslConfigSpy.size(), 1); + + // change config + config.setPeerVerifyMode(QSslSocket::VerifyNone); + oauth2.setSslConfiguration(config); + QCOMPARE(oauth2.sslConfiguration(), config); + QCOMPARE(sslConfigSpy.size(), 2); +} + +void tst_OAuth2::tlsAuthentication() +{ + if (!QSslSocket::supportsSsl()) + QSKIP("This test will fail because the backend does not support TLS"); + + // erros may vary, depending on backend + const QSet<QSslError::SslError> expectedErrors{ QSslError::SelfSignedCertificate, + QSslError::CertificateUntrusted, + QSslError::HostNameMismatch }; + auto serverConfig = createSslConfiguration(testDataDir + "certs/selfsigned-server.key", + testDataDir + "certs/selfsigned-server.crt"); + TlsWebServer tlsServer([](const WebServer::HttpRequest &request, QTcpSocket *socket) { + if (request.url.path() == QLatin1String("/accessToken")) { + const QString text = "access_token=token&token_type=bearer"; + const QByteArray replyMessage { + "HTTP/1.0 200 OK\r\n" + "Content-Type: application/x-www-form-urlencoded; charset=\"utf-8\"\r\n" + "Content-Length: " + QByteArray::number(text.size()) + "\r\n\r\n" + + text.toUtf8() + }; + socket->write(replyMessage); + } + }, serverConfig); + tlsServer.setExpectedSslErrors(expectedErrors); + + auto clientConfig = createSslConfiguration(testDataDir + "certs/selfsigned-client.key", + testDataDir + "certs/selfsigned-client.crt"); + QNetworkAccessManager nam; + QOAuth2AuthorizationCodeFlow oauth2; + oauth2.setNetworkAccessManager(&nam); + oauth2.setSslConfiguration(clientConfig); + oauth2.setAuthorizationUrl(tlsServer.url(QLatin1String("authorization"))); + oauth2.setAccessTokenUrl(tlsServer.url(QLatin1String("accessToken"))); + ReplyHandler replyHandler; + oauth2.setReplyHandler(&replyHandler); + connect(&oauth2, &QOAuth2AuthorizationCodeFlow::authorizeWithBrowser, [&](const QUrl &url) { + const QUrlQuery query(url.query()); + replyHandler.emitCallbackReceived(QVariantMap { + { QLatin1String("code"), QLatin1String("test") }, + { QLatin1String("state"), + query.queryItemValue(QLatin1String("state")) } + }); + }); + connect(&nam, &QNetworkAccessManager::sslErrors, + [&expectedErrors](QNetworkReply *r, const QList<QSslError> &errors) { + QCOMPARE(errors.size(), 2); + for (const auto &err : errors) + QVERIFY(expectedErrors.contains(err.error())); + r->ignoreSslErrors(); + }); + + QSignalSpy grantedSpy(&oauth2, &QOAuth2AuthorizationCodeFlow::granted); + oauth2.grant(); + QTRY_COMPARE(grantedSpy.size(), 1); + QCOMPARE(oauth2.token(), QLatin1String("token")); +} +#endif // !QT_NO_SSL + QTEST_MAIN(tst_OAuth2) #include "tst_oauth2.moc" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.4.3/tests/auto/oauthhttpserverreplyhandler/CMakeLists.txt new/qtnetworkauth-everywhere-src-6.5.0/tests/auto/oauthhttpserverreplyhandler/CMakeLists.txt --- old/qtnetworkauth-everywhere-src-6.4.3/tests/auto/oauthhttpserverreplyhandler/CMakeLists.txt 2023-03-11 19:16:48.000000000 +0100 +++ new/qtnetworkauth-everywhere-src-6.5.0/tests/auto/oauthhttpserverreplyhandler/CMakeLists.txt 2023-03-25 20:28:41.000000000 +0100 @@ -1,3 +1,6 @@ +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: BSD-3-Clause + # Generated from oauthhttpserverreplyhandler.pro. ##################################################################### @@ -7,7 +10,7 @@ qt_internal_add_test(tst_oauthhttpserverreplyhandler SOURCES tst_oauthhttpserverreplyhandler.cpp - PUBLIC_LIBRARIES + LIBRARIES Qt::CorePrivate Qt::Network Qt::NetworkAuth diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.4.3/tests/auto/shared/tlswebserver.h new/qtnetworkauth-everywhere-src-6.5.0/tests/auto/shared/tlswebserver.h --- old/qtnetworkauth-everywhere-src-6.4.3/tests/auto/shared/tlswebserver.h 1970-01-01 01:00:00.000000000 +0100 +++ new/qtnetworkauth-everywhere-src-6.5.0/tests/auto/shared/tlswebserver.h 2023-03-25 20:28:41.000000000 +0100 @@ -0,0 +1,121 @@ +// Copyright (C) 2022 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only + +#ifndef TLSWEBSERVER_H +#define TLSWEBSERVER_H + +#include <QtNetworkAuth/qoauthglobal.h> + +#ifndef QT_NO_SSL + +#include "webserver.h" + +#include <QSslServer> +#include <QSslSocket> +#include <QSslConfiguration> + +class TlsWebServer : public QSslServer +{ +public: + using HttpRequest = WebServer::HttpRequest; + using Handler = std::function<void(const HttpRequest &request, QTcpSocket *socket)>; + + TlsWebServer(Handler handler, const QSslConfiguration &config, QObject *parent = nullptr); + QUrl url(const QString &path); + void setExpectedSslErrors(const QSet<QSslError::SslError> &errors); + +private: + Handler handler; + QMap<QTcpSocket *, HttpRequest> clients; + QSet<QSslError::SslError> expectedSslErrors; +}; + +TlsWebServer::TlsWebServer(Handler h, const QSslConfiguration &config, QObject *parent) : + QSslServer(parent), + handler(h) +{ + connect(this, &QSslServer::pendingConnectionAvailable, [this]() { + auto socket = nextPendingConnection(); + Q_ASSERT(socket); + auto sslSocket = qobject_cast<QSslSocket *>(socket); + Q_ASSERT(sslSocket); + connect(socket, &QTcpSocket::disconnected, socket, &QTcpSocket::deleteLater); + connect(sslSocket, &QSslSocket::sslErrors, [sslSocket](const QList<QSslError> &errors) { + qDebug() << errors; + sslSocket->ignoreSslErrors(); + }); + connect(socket, &QTcpSocket::readyRead, [this, socket]() { + if (!clients.contains(socket)) + clients[socket].port = serverPort(); + + auto *request = &clients[socket]; + auto ok = true; + + while (socket->bytesAvailable()) { + if (Q_LIKELY(request->state == HttpRequest::State::ReadingMethod)) + if (Q_UNLIKELY(!(ok = request->readMethod(socket)))) + qWarning("Invalid Method"); + + if (Q_LIKELY(ok && request->state == HttpRequest::State::ReadingUrl)) + if (Q_UNLIKELY(!(ok = request->readUrl(socket)))) + qWarning("Invalid URL"); + + if (Q_LIKELY(ok && request->state == HttpRequest::State::ReadingStatus)) + if (Q_UNLIKELY(!(ok = request->readStatus(socket)))) + qWarning("Invalid Status"); + + if (Q_LIKELY(ok && request->state == HttpRequest::State::ReadingHeader)) + if (Q_UNLIKELY(!(ok = request->readHeaders(socket)))) + qWarning("Invalid Header"); + + if (Q_LIKELY(ok && request->state == HttpRequest::State::ReadingBody)) + if (Q_UNLIKELY(!(ok = request->readBody(socket)))) + qWarning("Invalid Body"); + } + if (Q_UNLIKELY(!ok)) { + socket->disconnectFromHost(); + clients.remove(socket); + } else if (Q_LIKELY(request->state == HttpRequest::State::AllDone)) { + Q_ASSERT(handler); + if (request->headers.contains("Host")) { + const auto parts = request->headers["Host"].split(':'); + request->url.setHost(parts.at(0)); + if (parts.size() == 2) + request->url.setPort(parts.at(1).toUInt()); + } + handler(*request, socket); + socket->disconnectFromHost(); + clients.remove(socket); + } + }); + }); + connect(this, &QSslServer::sslErrors, [this](QSslSocket *s, const QList<QSslError> &errors) { + bool hasOnlyExpectedErrors = true; + for (const auto &err : errors) + hasOnlyExpectedErrors &= expectedSslErrors.contains(err.error()); + if (hasOnlyExpectedErrors) + s->ignoreSslErrors(); + else + qWarning() << "Got unexpected SSL errors" << errors; + }); + + setSslConfiguration(config); + const bool ok = listen(QHostAddress::LocalHost); + Q_ASSERT(ok); +} + +QUrl TlsWebServer::url(const QString &path) +{ + using namespace Qt::StringLiterals; + return QUrl(u"https://127.0.0.1:%1%2"_s.arg(serverPort()).arg(path.startsWith('/') + ? path : "/" + path)); +} + +void TlsWebServer::setExpectedSslErrors(const QSet<QSslError::SslError> &errors) +{ + expectedSslErrors = errors; +} + +#endif // !QT_NO_SSL + +#endif // TLSWEBSERVER_H diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtnetworkauth-everywhere-src-6.4.3/tests/auto/shared/webserver.h new/qtnetworkauth-everywhere-src-6.5.0/tests/auto/shared/webserver.h --- old/qtnetworkauth-everywhere-src-6.4.3/tests/auto/shared/webserver.h 2023-03-11 19:16:48.000000000 +0100 +++ new/qtnetworkauth-everywhere-src-6.5.0/tests/auto/shared/webserver.h 2023-03-25 20:28:41.000000000 +0100 @@ -15,6 +15,7 @@ public: class HttpRequest { friend class WebServer; + friend class TlsWebServer; quint16 port = 0; enum class State {