Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package AusweisApp for openSUSE:Factory checked in at 2026-04-12 21:14:00 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/AusweisApp (Old) and /work/SRC/openSUSE:Factory/.AusweisApp.new.21863 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "AusweisApp" Sun Apr 12 21:14:00 2026 rev:19 rq:1346209 version:2.5.1 Changes: -------- --- /work/SRC/openSUSE:Factory/AusweisApp/AusweisApp.changes 2026-04-09 16:12:00.215103687 +0200 +++ /work/SRC/openSUSE:Factory/.AusweisApp.new.21863/AusweisApp.changes 2026-04-12 21:14:02.332862207 +0200 @@ -1,0 +2,10 @@ +Sun Apr 12 16:20:07 UTC 2026 - John Paul Adrian Glaubitz <[email protected]> + +- New upstream release + + Version 2.5.1 + - Fix an error regarding the minimum supported macOS version. + - Update of OpenSSL to version 3.6.2. + - Fix version number on Android mistakenly including the + architecture. + +------------------------------------------------------------------- Old: ---- 2.5.0.tar.gz New: ---- 2.5.1.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ AusweisApp.spec ++++++ --- /var/tmp/diff_new_pack.ce7pgT/_old 2026-04-12 21:14:03.036890918 +0200 +++ /var/tmp/diff_new_pack.ce7pgT/_new 2026-04-12 21:14:03.036890918 +0200 @@ -17,7 +17,7 @@ Name: AusweisApp -Version: 2.5.0 +Version: 2.5.1 Release: 0 Summary: Official authentication app for German ID cards and residence permits License: EUPL-1.2 ++++++ 2.5.0.tar.gz -> 2.5.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AusweisApp-2.5.0/.gitlab-ci-child.yml new/AusweisApp-2.5.1/.gitlab-ci-child.yml --- old/AusweisApp-2.5.0/.gitlab-ci-child.yml 2026-04-08 11:18:17.000000000 +0200 +++ new/AusweisApp-2.5.1/.gitlab-ci-child.yml 2026-04-12 12:11:17.000000000 +0200 @@ -228,11 +228,11 @@ matrix: - openssl: - "1.1.1w" - - "3.0.18" - - "3.5.5" + - "3.0.20" + - "3.5.6" legacy: 'OFF' - openssl: - - "3.6.1" + - "3.6.2" legacy: 'ON' script: - apk add gcovr @@ -344,7 +344,6 @@ - key: "${CI_JOB_NAME}-gradle" paths: - .gradle/caches/ - - .gradle/wrapper/ before_script: - !reference [.prepare, setup] - apk add gcompat maven gradle ccache unzip perl bash g++ linux-headers libxslt diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AusweisApp-2.5.0/Dockerfile new/AusweisApp-2.5.1/Dockerfile --- old/AusweisApp-2.5.0/Dockerfile 2026-04-08 11:18:17.000000000 +0200 +++ new/AusweisApp-2.5.1/Dockerfile 2026-04-12 12:11:17.000000000 +0200 @@ -2,7 +2,13 @@ FROM alpine:$ALPINE_VERSION AS builder # Install development stuff -RUN apk --no-cache upgrade -a && \ +ARG MIRROR_ALPINE="" +ARG MIRROR_GITHUB="" +ARG MIRROR_QT="" +RUN if [ -n "$MIRROR_ALPINE" ]; then \ + sed -i "s|https://[^/]*/alpine/|$MIRROR_ALPINE/|g" /etc/apk/repositories; \ + fi && \ + apk --no-cache upgrade -a && \ apk --no-cache add patch cmake ccache make ninja g++ pkgconf pcsc-lite-dev binutils-gold eudev-libs perl python3 linux-headers # Use optional remote ccache diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AusweisApp-2.5.0/Dockerfile.vnc new/AusweisApp-2.5.1/Dockerfile.vnc --- old/AusweisApp-2.5.0/Dockerfile.vnc 2026-04-08 11:18:17.000000000 +0200 +++ new/AusweisApp-2.5.1/Dockerfile.vnc 2026-04-12 12:11:17.000000000 +0200 @@ -2,7 +2,11 @@ FROM alpine:$ALPINE_VERSION AS builder # Install development stuff -RUN apk --no-cache upgrade -a && \ +ARG MIRROR_ALPINE="" +RUN if [ -n "$MIRROR_ALPINE" ]; then \ + sed -i "s|https://[^/]*/alpine/|$MIRROR_ALPINE/|g" /etc/apk/repositories; \ + fi && \ + apk --no-cache upgrade -a && \ apk --no-cache add patch cmake ccache make ninja g++ pkgconf pcsc-lite-dev binutils-gold eudev-libs \ llhttp-dev openssl-dev \ qt6-qtbase-dev qt6-qtsvg-dev qt6-qtwebsockets-dev qt6-qttools-dev qt6-qtdeclarative-dev qt6-qtscxml-dev qt6-qtconnectivity-dev qt6-qtimageformats-dev qt6-qtimageformats @@ -46,7 +50,10 @@ COPY --from=builder /usr/local/share /usr/local/share COPY --from=builder /usr/local/bin/AusweisApp /usr/local/bin/AusweisApp -RUN apk --no-cache upgrade -a && \ +RUN if [ -n "$MIRROR_ALPINE" ]; then \ + sed -i "s|https://[^/]*/alpine/|$MIRROR_ALPINE/|g" /etc/apk/repositories; \ + fi && \ + apk --no-cache upgrade -a && \ apk --no-cache add tini pcsc-lite-libs eudev-libs doas ttf-freefont \ llhttp qt6-qtbase qt6-qtsvg qt6-qtwebsockets qt6-qtdeclarative qt6-qtscxml qt6-qtconnectivity qt6-qtimageformats && \ echo 'permit nopass :wheel' > /etc/doas.d/wheel.conf && \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AusweisApp-2.5.0/LICENSE.officially.txt new/AusweisApp-2.5.1/LICENSE.officially.txt --- old/AusweisApp-2.5.0/LICENSE.officially.txt 2026-04-08 11:18:17.000000000 +0200 +++ new/AusweisApp-2.5.1/LICENSE.officially.txt 2026-04-12 12:11:17.000000000 +0200 @@ -260,7 +260,7 @@ OpenSSL Lizenz: Apache 2.0 - Version: 3.6.1 + Version: 3.6.2 Adresse: https://www.openssl.org/ Qt diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AusweisApp-2.5.0/LICENSE.txt new/AusweisApp-2.5.1/LICENSE.txt --- old/AusweisApp-2.5.0/LICENSE.txt 2026-04-08 11:18:17.000000000 +0200 +++ new/AusweisApp-2.5.1/LICENSE.txt 2026-04-12 12:11:17.000000000 +0200 @@ -228,7 +228,7 @@ OpenSSL Lizenz: Apache 2.0 - Version: 3.6.1 + Version: 3.6.2 Adresse: https://www.openssl.org/ Qt diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AusweisApp-2.5.0/ci/presets/macOS.json new/AusweisApp-2.5.1/ci/presets/macOS.json --- old/AusweisApp-2.5.0/ci/presets/macOS.json 2026-04-08 11:18:17.000000000 +0200 +++ new/AusweisApp-2.5.1/ci/presets/macOS.json 2026-04-12 12:11:17.000000000 +0200 @@ -18,6 +18,7 @@ "name": "ci-macos-release", "inherits": "ci-with-libs", "generator": "Xcode", + "toolchainFile": "${sourceDir}/cmake/macOS.toolchain.cmake", "cacheVariables": { "CMAKE_BUILD_TYPE": "MinSizeRel" } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AusweisApp-2.5.0/ci/scripts/Container.cmake new/AusweisApp-2.5.1/ci/scripts/Container.cmake --- old/AusweisApp-2.5.0/ci/scripts/Container.cmake 2026-04-08 11:18:17.000000000 +0200 +++ new/AusweisApp-2.5.1/ci/scripts/Container.cmake 2026-04-12 12:11:17.000000000 +0200 @@ -28,13 +28,19 @@ set(CACHE_REGISTRY $ENV{CI_REGISTRY_IMAGE}/cache/${TARGET}) +foreach(entry CCACHE_REMOTE_STORAGE MIRROR_ALPINE MIRROR_GITHUB MIRROR_QT) + if(DEFINED ENV{${entry}}) + list(APPEND BUILD_ARGS --build-arg "${entry}=$ENV{${entry}}") + endif() +endforeach() + step(${CMD} build --pull --layers --cache-from ${CACHE_REGISTRY} --cache-to ${CACHE_REGISTRY} -t ${IMAGE} - --build-arg CCACHE_REMOTE_STORAGE=$ENV{CCACHE_REMOTE_STORAGE} + ${BUILD_ARGS} ${Dockerfile} ${CMAKE_SOURCE_DIR} ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AusweisApp-2.5.0/ci/scripts/Deploy.cmake/GitHub.cmake new/AusweisApp-2.5.1/ci/scripts/Deploy.cmake/GitHub.cmake --- old/AusweisApp-2.5.0/ci/scripts/Deploy.cmake/GitHub.cmake 2026-04-08 11:18:17.000000000 +0200 +++ new/AusweisApp-2.5.1/ci/scripts/Deploy.cmake/GitHub.cmake 2026-04-12 12:11:17.000000000 +0200 @@ -68,7 +68,7 @@ "${WORKSPACE}/*.dmg" "${WORKSPACE}/*.dmg.sha*" "${WORKSPACE}/*-ReleaseNotes.pdf" - "${WORKSPACE}/*-NetInstallation_Integration.pdf" + "${WORKSPACE}/*-NetInstallation_Integration_*.pdf" "${WORKSPACE}/*-SDK.pdf" "${WORKSPACE}/*-Lizenz.txt" ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AusweisApp-2.5.0/ci/scripts/SonarQube.cmake new/AusweisApp-2.5.1/ci/scripts/SonarQube.cmake --- old/AusweisApp-2.5.0/ci/scripts/SonarQube.cmake 2026-04-08 11:18:17.000000000 +0200 +++ new/AusweisApp-2.5.1/ci/scripts/SonarQube.cmake 2026-04-12 12:11:17.000000000 +0200 @@ -10,10 +10,10 @@ endif() message(STATUS "Use PACKAGES_DIR: ${PACKAGES_DIR}") -set(SONARSCANNERCLI_VERSION 7.3.0.5189) # https://binaries.sonarsource.com/?prefix=Distribution/sonar-scanner-cli/ +set(SONARSCANNERCLI_VERSION 8.0.1.6346) # https://binaries.sonarsource.com/?prefix=Distribution/sonar-scanner-cli/ set(SONARSCANNERCLI_ZIP_NAME sonar-scanner-cli-${SONARSCANNERCLI_VERSION}.zip) set(SONARSCANNERCLI_URL https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/${SONARSCANNERCLI_ZIP_NAME}) -set(SONARSCANNERCLI_HASH a251d0793cb6bd889e4fd30299bb5dc4e07433e57133b16fc227aca98f8d2c2d) +set(SONARSCANNERCLI_HASH 8fbfb1eb546b734a60fc3e537108f06e389a8ca124fbab3a16236a8a51edcc15) set(SONARQUBETOOLS_DIR ${WORKSPACE}/sonarqubetools) step(${CMAKE_COMMAND} -E make_directory ${SONARQUBETOOLS_DIR}) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AusweisApp-2.5.0/cmake/DVCS.cmake new/AusweisApp-2.5.1/cmake/DVCS.cmake --- old/AusweisApp-2.5.0/cmake/DVCS.cmake 2026-04-08 11:18:17.000000000 +0200 +++ new/AusweisApp-2.5.1/cmake/DVCS.cmake 2026-04-12 12:11:17.000000000 +0200 @@ -32,23 +32,20 @@ endfunction() -function(DVCS_CALL _name _sep ${ARGN}) +function(DVCS_CALL _name ${ARGN}) DVCS_EXECUTE(_exec ${ARGN}) if(DEFINED _exec) message(STATUS "DVCS ${_name}: ${_exec}") set(dvcs_${_name} ${_exec} PARENT_SCOPE) - if(NOT "${_sep}" STREQUAL "") - set(VERSION_DVCS ${VERSION_DVCS}${_sep}${_exec} PARENT_SCOPE) - endif() endif() endfunction() macro(CHECK_DVCS) if(HG_FOUND) - DVCS_CALL("tag" "" id -t) + DVCS_CALL("tag" id -t) elseif(GIT_FOUND) - DVCS_CALL("tag" "" tag -l --points-at HEAD) + DVCS_CALL("tag" tag -l --points-at HEAD) endif() if(NOT "${dvcs_tag}" STREQUAL "tip" AND NOT "${dvcs_tag}" STREQUAL "" AND NOT "${dvcs_tag}" STREQUAL "undefined") if(NOT dvcs_tag STREQUAL PROJECT_VERSION) @@ -60,30 +57,29 @@ DVCS_EXECUTE(dvcs_distance log -r ${PROJECT_VERSION}::. --template 1) string(LENGTH "${dvcs_distance}" dvcs_distance) message(STATUS "DVCS distance: ${dvcs_distance}") - set(VERSION_DVCS ${VERSION_DVCS}+${dvcs_distance}) elseif(GIT_FOUND) - DVCS_CALL("distance" "+" rev-list --count ${PROJECT_VERSION}...HEAD) + DVCS_CALL("distance" rev-list --count ${PROJECT_VERSION}...HEAD) endif() - - GET_DVCS_INFO() endif() + + GET_DVCS_INFO() endmacro() macro(GET_DVCS_INFO) if(HG_FOUND) - DVCS_CALL("branch" "-" branch) + DVCS_CALL("branch" branch) elseif(GIT_FOUND) - DVCS_CALL("branch" "-" rev-parse --abbrev-ref HEAD) + DVCS_CALL("branch" rev-parse --abbrev-ref HEAD) endif() if(HG_FOUND) - DVCS_CALL("revision" "-" id -i) + DVCS_CALL("revision" id -i) elseif(GIT_FOUND) - DVCS_CALL("revision" "-" rev-parse --verify --short HEAD) + DVCS_CALL("revision" rev-parse --verify --short HEAD) endif() if(HG_FOUND) - DVCS_CALL("phase" "" log -r . -T {phase}) + DVCS_CALL("phase" log -r . -T {phase}) if(DEFINED dvcs_phase) if("${dvcs_phase}" STREQUAL "public") if("${dvcs_revision}" MATCHES "\\+") @@ -91,14 +87,15 @@ else() unset(dvcs_phase) endif() - else() - set(VERSION_DVCS ${VERSION_DVCS}-${dvcs_phase}) + endif() + + if(DEFINED dvcs_phase) + set(USE_ARTIFACT_DEV_VERSION ON) endif() endif() endif() endmacro() -set(VERSION_DVCS ${PROJECT_VERSION}) FIND_DVCS(${CMAKE_SOURCE_DIR}) if(DVCS_FOUND) option(ENABLE_DVCS "Check consistency of version/tag and get additional revision data" true) @@ -108,7 +105,7 @@ endif() function(CHECK_FINAL_VERSION _out) - if(PROJECT_VERSION_MINOR LESS 100 AND PROJECT_VERSION_PATCH LESS 100 AND NOT dvcs_revision) + if(PROJECT_VERSION_MINOR LESS 100 AND PROJECT_VERSION_PATCH LESS 100 AND NOT USE_ARTIFACT_DEV_VERSION) set(${_out} true PARENT_SCOPE) return() endif() @@ -120,26 +117,35 @@ message(STATUS "DVCS final: ${IS_FINAL_VERSION}") -set(ARTIFACT_VERSION ${PROJECT_VERSION}) - -if(CMAKE_ANDROID_ARCH_ABI) - set(ARTIFACT_VERSION ${ARTIFACT_VERSION}-${CMAKE_ANDROID_ARCH_ABI}) -endif() - if(DEFINED dvcs_distance) - set(ARTIFACT_VERSION ${ARTIFACT_VERSION}+${dvcs_distance}) + set(ARTIFACT_DEV_VERSION ${ARTIFACT_DEV_VERSION}+${dvcs_distance}) endif() if(DEFINED dvcs_branch) - set(ARTIFACT_VERSION ${ARTIFACT_VERSION}-${dvcs_branch}) + set(ARTIFACT_DEV_VERSION ${ARTIFACT_DEV_VERSION}-${dvcs_branch}) endif() if(DEFINED dvcs_phase) - set(ARTIFACT_VERSION ${ARTIFACT_VERSION}-${dvcs_phase}) + set(ARTIFACT_DEV_VERSION ${ARTIFACT_DEV_VERSION}-${dvcs_phase}) endif() if(DEFINED dvcs_revision) - set(ARTIFACT_VERSION ${ARTIFACT_VERSION}-${dvcs_revision}) + set(ARTIFACT_DEV_VERSION ${ARTIFACT_DEV_VERSION}-${dvcs_revision}) endif() -set(ARTIFACT_FILENAME ${PROJECT_NAME}-${ARTIFACT_VERSION}) + +set(ARTIFACT_FILENAME ${PROJECT_NAME}-${PROJECT_VERSION}) +if(CMAKE_ANDROID_ARCH_ABI) + set(ARTIFACT_FILENAME ${ARTIFACT_FILENAME}-${CMAKE_ANDROID_ARCH_ABI}) +endif() + +set(ARTIFACT_VERSION ${PROJECT_VERSION}) + +if(USE_ARTIFACT_DEV_VERSION) + set(ARTIFACT_FILENAME ${ARTIFACT_FILENAME}${ARTIFACT_DEV_VERSION}) + set(ARTIFACT_VERSION ${ARTIFACT_VERSION}${ARTIFACT_DEV_VERSION}) +endif() + +if(CMAKE_BUILD_TYPE STREQUAL "DEBUG") + set(ARTIFACT_FILENAME ${ARTIFACT_FILENAME}-debug) +endif() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AusweisApp-2.5.0/cmake/Libraries.cmake new/AusweisApp-2.5.1/cmake/Libraries.cmake --- old/AusweisApp-2.5.0/cmake/Libraries.cmake 2026-04-08 11:18:17.000000000 +0200 +++ new/AusweisApp-2.5.1/cmake/Libraries.cmake 2026-04-12 12:11:17.000000000 +0200 @@ -85,7 +85,7 @@ if(LIBS_GOVERNIKUS) set(MIN_OPENSSL_VERSION ${LIBS_OPENSSL}) - string(REGEX REPLACE "[a-z]" "" MIN_OPENSSL_VERSION "${MIN_OPENSSL_VERSION}") + string(REGEX REPLACE "[-a-zA-Z].*$" "" MIN_OPENSSL_VERSION "${MIN_OPENSSL_VERSION}") else() set(MIN_OPENSSL_VERSION 1.1.1) endif() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AusweisApp-2.5.0/cmake/Packaging.android.cmake new/AusweisApp-2.5.1/cmake/Packaging.android.cmake --- old/AusweisApp-2.5.0/cmake/Packaging.android.cmake 2026-04-08 11:18:17.000000000 +0200 +++ new/AusweisApp-2.5.1/cmake/Packaging.android.cmake 2026-04-12 12:11:17.000000000 +0200 @@ -42,6 +42,18 @@ endif() +if(DEFINED ENV{MIRROR_GITHUB}) + file(READ "${QT_INSTALL_ARCHDATA}/src/3rdparty/gradle/gradle/wrapper/gradle-wrapper.properties" BUILD_GRADLE_WRAPPER_PROPERTIES) + string(REGEX MATCH "gradle-([0-9]+\\.[0-9]+\\.[0-9]+)-bin\\.zip" _match "${BUILD_GRADLE_WRAPPER_PROPERTIES}") + set(GRADLE_VERSION "${CMAKE_MATCH_1}") + + set(GRADLE_WRAPPER_URL "$ENV{MIRROR_GITHUB}/gradle/gradle-distributions/releases/download/v${GRADLE_VERSION}/gradle-${GRADLE_VERSION}-bin.zip") + string(REGEX REPLACE "distributionUrl=.*" "distributionUrl=${GRADLE_WRAPPER_URL}" BUILD_GRADLE_WRAPPER_PROPERTIES "${BUILD_GRADLE_WRAPPER_PROPERTIES}") + string(REPLACE "://" "\\://" BUILD_GRADLE_WRAPPER_PROPERTIES "${BUILD_GRADLE_WRAPPER_PROPERTIES}") + + file(WRITE "${ANDROID_BUILD_DIR}/gradle/wrapper/gradle-wrapper.properties" "${BUILD_GRADLE_WRAPPER_PROPERTIES}") +endif() + set(QT_BUILD_GRADLE "${QT_INSTALL_ARCHDATA}/src/android/templates/build.gradle") set(BUILD_GRADLE_APPEND "${PACKAGING_DIR}/android/build.gradle.append") set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS "${QT_BUILD_GRADLE}") @@ -76,7 +88,7 @@ if(INTEGRATED_SDK) set(ANDROID_FILE_EXT aar) file(APPEND "${ANDROID_BUILD_DIR}/build.gradle" "android.defaultConfig.consumerProguardFiles 'consumer-rules.pro'\n") - if(DEFINED dvcs_revision) + if(USE_ARTIFACT_DEV_VERSION) set(POM_SNAPSHOT "-SNAPSHOT") endif() configure_file(${PACKAGING_DIR}/android/pom.xml.in ${ANDROID_BUILD_DIR}/${CPACK_PACKAGE_FILE_NAME}.pom @ONLY) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AusweisApp-2.5.0/cmake/Version.cmake new/AusweisApp-2.5.1/cmake/Version.cmake --- old/AusweisApp-2.5.0/cmake/Version.cmake 2026-04-08 11:18:17.000000000 +0200 +++ new/AusweisApp-2.5.1/cmake/Version.cmake 2026-04-12 12:11:17.000000000 +0200 @@ -1,6 +1,6 @@ set(PROJECT_VERSION_MAJOR 2) set(PROJECT_VERSION_MINOR 5) -set(PROJECT_VERSION_PATCH 0) +set(PROJECT_VERSION_PATCH 1) #set(PROJECT_VERSION_TWEAK 0) unset(PROJECT_VERSION) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AusweisApp-2.5.0/docs/releasenotes/2.5.1.rst new/AusweisApp-2.5.1/docs/releasenotes/2.5.1.rst --- old/AusweisApp-2.5.0/docs/releasenotes/2.5.1.rst 1970-01-01 01:00:00.000000000 +0100 +++ new/AusweisApp-2.5.1/docs/releasenotes/2.5.1.rst 2026-04-12 12:11:17.000000000 +0200 @@ -0,0 +1,16 @@ +AusweisApp 2.5.1 +^^^^^^^^^^^^^^^^ + +**Releasedatum:** 11. April 2026 + + +Anwender +"""""""" +- Fehlerkorrektur der minimal unterstützten macOS Version. + + +Entwickler +"""""""""" +- Aktualisierung von OpenSSL auf die Version 3.6.2. + +- Unter Android enthielt die Version irrtümlich die Architektur. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AusweisApp-2.5.0/docs/releasenotes/versions.rst new/AusweisApp-2.5.1/docs/releasenotes/versions.rst --- old/AusweisApp-2.5.0/docs/releasenotes/versions.rst 2026-04-08 11:18:17.000000000 +0200 +++ new/AusweisApp-2.5.1/docs/releasenotes/versions.rst 2026-04-12 12:11:17.000000000 +0200 @@ -6,6 +6,7 @@ .. toctree:: :maxdepth: 1 + 2.5.1 2.5.0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AusweisApp-2.5.0/libs/CMakeLists.txt new/AusweisApp-2.5.1/libs/CMakeLists.txt --- old/AusweisApp-2.5.0/libs/CMakeLists.txt 2026-04-08 11:18:17.000000000 +0200 +++ new/AusweisApp-2.5.1/libs/CMakeLists.txt 2026-04-12 12:11:17.000000000 +0200 @@ -163,7 +163,15 @@ list(APPEND OPENSSL_URLS ${OPENSSL_SOURCE}/snapshot/${OPENSSL_FILE}) else() string(SUBSTRING ${OPENSSL} 0 5 OPENSSL_SUBVERSION) - list(APPEND OPENSSL_URLS $ENV{MIRROR_GITHUB}/openssl/openssl/releases/download/openssl-${OPENSSL}/${OPENSSL_FILE}) + set(OPENSSL_GITHUB $ENV{MIRROR_GITHUB}/openssl/openssl/releases/download) + + list(APPEND OPENSSL_URLS ${OPENSSL_GITHUB}/openssl-${OPENSSL}/${OPENSSL_FILE}) + + if(OPENSSL VERSION_LESS 3) + string(REPLACE "." "_" OPENSSL_ALTERNATIVE "${OPENSSL}") + list(APPEND OPENSSL_URLS ${OPENSSL_GITHUB}/OpenSSL_${OPENSSL_ALTERNATIVE}/${OPENSSL_FILE}) + endif() + list(APPEND OPENSSL_URLS ${OPENSSL_SOURCE}/old/${OPENSSL_SUBVERSION}/${OPENSSL_FILE}) endif() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AusweisApp-2.5.0/libs/Versions.cmake new/AusweisApp-2.5.1/libs/Versions.cmake --- old/AusweisApp-2.5.0/libs/Versions.cmake 2026-04-08 11:18:17.000000000 +0200 +++ new/AusweisApp-2.5.1/libs/Versions.cmake 2026-04-12 12:11:17.000000000 +0200 @@ -14,15 +14,15 @@ ######################################## OpenSSL if(NOT DEFINED OPENSSL) - set(OPENSSL 3.6.1) + set(OPENSSL 3.6.2) set(OPENSSL_PATCHES ON) endif() if(NOT OPENSSL_HASH) set(OPENSSL_HASH_1.1.1w cf3098950cb4d853ad95c0841f1f9c6d3dc102dccfcacd521d93925208b76ac8) - set(OPENSSL_HASH_3.0.18 d80c34f5cf902dccf1f1b5df5ebb86d0392e37049e5d73df1b3abae72e4ffe8b) - set(OPENSSL_HASH_3.5.5 b28c91532a8b65a1f983b4c28b7488174e4a01008e29ce8e69bd789f28bc2a89) - set(OPENSSL_HASH_3.6.1 b1bfedcd5b289ff22aee87c9d600f515767ebf45f77168cb6d64f231f518a82e) + set(OPENSSL_HASH_3.0.20 c80a01dfc70ece4dc21168932c37739042d404d46ccc81a5986dd75314ecda6f) + set(OPENSSL_HASH_3.5.6 deae7c80cba99c4b4f940ecadb3c3338b13cb77418409238e57d7f31f2a3b736) + set(OPENSSL_HASH_3.6.2 aaf51a1fe064384f811daeaeb4ec4dce7340ec8bd893027eee676af31e83a04f) set(OPENSSL_HASH ${OPENSSL_HASH_${OPENSSL}}) endif() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AusweisApp-2.5.0/libs/patches/openssl-0001-android-shlib_variant.patch new/AusweisApp-2.5.1/libs/patches/openssl-0001-android-shlib_variant.patch --- old/AusweisApp-2.5.0/libs/patches/openssl-0001-android-shlib_variant.patch 2026-04-08 11:18:17.000000000 +0200 +++ new/AusweisApp-2.5.1/libs/patches/openssl-0001-android-shlib_variant.patch 2026-04-12 12:11:17.000000000 +0200 @@ -1,4 +1,4 @@ -From 04b838e3abb9dd8a7f2aae7b1f26bc62845f139b Mon Sep 17 00:00:00 2001 +From c7224c60cad63c7a50e923aa9924eecf29e4d652 Mon Sep 17 00:00:00 2001 From: Lars Schmertmann <[email protected]> Date: Tue, 19 Jan 2021 17:07:51 +0100 Subject: android shlib_variant diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AusweisApp-2.5.0/libs/patches/openssl-0002-Fix-group-tuple-handling-in-DEFAULT-expansion.patch new/AusweisApp-2.5.1/libs/patches/openssl-0002-Fix-group-tuple-handling-in-DEFAULT-expansion.patch --- old/AusweisApp-2.5.0/libs/patches/openssl-0002-Fix-group-tuple-handling-in-DEFAULT-expansion.patch 2026-04-08 11:18:17.000000000 +0200 +++ new/AusweisApp-2.5.1/libs/patches/openssl-0002-Fix-group-tuple-handling-in-DEFAULT-expansion.patch 1970-01-01 01:00:00.000000000 +0100 @@ -1,483 +0,0 @@ -From 1d4c0f85dadf5b5d0c91ffd8bd77413d999d7836 Mon Sep 17 00:00:00 2001 -From: Viktor Dukhovni <[email protected]> -Date: Tue, 17 Feb 2026 18:37:06 +1100 -Subject: Fix group tuple handling in DEFAULT expansion - -Also fine-tune docs and add tests. - -Fixes: #30109 -Fixes: CVE-2026-2673 - -Reviewed-by: Matt Caswell <[email protected]> -Reviewed-by: Paul Dale <[email protected]> -Reviewed-by: Tomas Mraz <[email protected]> -MergeDate: Fri Mar 13 12:42:50 2026 -(Merged from https://github.com/openssl/openssl/pull/30111) -(cherry picked from commit 2157c9d81f7b0bd7dfa25b960e928ec28e8dd63f) ---- - CHANGES.md | 12 +++ - NEWS.md | 7 ++ - doc/man3/SSL_CTX_set1_curves.pod | 123 +++++++++++++++++++++---------- - ssl/t1_lib.c | 89 ++++++++++++---------- - test/tls13groupselection_test.c | 37 ++++++++-- - 5 files changed, 187 insertions(+), 81 deletions(-) - -diff --git x/CHANGES.md y/CHANGES.md -index e5a0bed1389a14587b2bccc2c6866c252262802b..58993024a3b9bde12e0a16d3e5d6276d6fc45e58 100644 ---- x/CHANGES.md -+++ y/CHANGES.md -@@ -29,6 +29,17 @@ OpenSSL Releases - OpenSSL 3.6 - ----------- - -+### Changes between 3.6.1 and 3.6.2 -+ -+ * Fixed loss of key agreement group tuple structure when the `DEFAULT` keyword -+ is used in the server-side configuration of the key-agreement group list. -+ This could result in accepting a less preferred than intended client -+ keyshare. -+ -+ ([CVE-2026-2673]) -+ -+ *Viktor Dukhovni* -+ - ### Changes between 3.6.0 and 3.6.1 [27 Jan 2026] - - * Fixed Improper validation of PBMAC1 parameters in PKCS#12 MAC verification. -@@ -21850,6 +21861,7 @@ ndif - - <!-- Links --> - -+[CVE-2026-2673]: https://www.openssl.org/news/vulnerabilities.html#CVE-2026-2673 - [CVE-2026-22796]: https://www.openssl.org/news/vulnerabilities.html#CVE-2026-22796 - [CVE-2026-22795]: https://www.openssl.org/news/vulnerabilities.html#CVE-2026-22795 - [CVE-2025-69421]: https://www.openssl.org/news/vulnerabilities.html#CVE-2025-69421 -diff --git x/NEWS.md y/NEWS.md -index 2a382f39ada814808e7c9f47ebe7937bf43cc1ac..5606333783060c79537bd341de09f1532d8aa3f1 100644 ---- x/NEWS.md -+++ y/NEWS.md -@@ -24,6 +24,12 @@ OpenSSL Releases - OpenSSL 3.6 - ----------- - -+### Major changes between OpenSSL 3.6.1 and OpenSSL 3.6.2 -+ -+ * Fixed loss of key agreement group tuple structure when the `DEFAULT` keyword -+ is used in the server-side configuration of the key-agreement group list. -+ ([CVE-2026-2673]) -+ - ### Major changes between OpenSSL 3.6.0 and OpenSSL 3.6.1 [27 Jan 2026] - - OpenSSL 3.6.1 is a security patch release. The most severe CVE fixed in this -@@ -2028,6 +2034,7 @@ OpenSSL 0.9.x - * Support for various new platforms - - <!-- Links --> -+[CVE-2026-2673]: https://www.openssl.org/news/vulnerabilities.html#CVE-2026-2673 - [CVE-2026-22796]: https://www.openssl.org/news/vulnerabilities.html#CVE-2026-22796 - [CVE-2026-22795]: https://www.openssl.org/news/vulnerabilities.html#CVE-2026-22795 - [CVE-2025-69421]: https://www.openssl.org/news/vulnerabilities.html#CVE-2025-69421 -diff --git x/doc/man3/SSL_CTX_set1_curves.pod y/doc/man3/SSL_CTX_set1_curves.pod -index 352fe343471ae54c6b807426b24f2700a2fb9ee3..bcf792023c65fc70dcb1530b73348bf23fbc1b82 100755 ---- x/doc/man3/SSL_CTX_set1_curves.pod -+++ y/doc/man3/SSL_CTX_set1_curves.pod -@@ -40,13 +40,13 @@ SSL_get1_curves, SSL_get_shared_curve, SSL_CTX_get0_implemented_groups - - For all of the functions below that set the supported groups there must be at - least one group in the list. A number of these functions identify groups via a --unique integer NID value. However, support for some groups may be added by --external providers. In this case there will be no NID assigned for the group. -+unique integer B<NID> value. However, support for some groups may be added by -+external providers. In this case there will be no B<NID> assigned for the group. - When setting such groups applications should use the "list" form of these - functions (i.e. SSL_CTX_set1_groups_list() and SSL_set1_groups_list()). - - SSL_CTX_set1_groups() sets the supported groups for B<ctx> to B<glistlen> --groups in the array B<glist>. The array consist of all NIDs of supported groups. -+groups in the array B<glist>. The array consist of all B<NIDs> of supported groups. - The supported groups for B<TLSv1.3> include: - B<NID_X9_62_prime256v1>, - B<NID_secp384r1>, -@@ -73,20 +73,27 @@ B<SSL_OP_SERVER_PREFERENCE> is set, the order of the elements in the - array determines the selected group. Otherwise, the order is ignored and the - client's order determines the selection. - --For a TLS 1.3 server, the groups determine the selected group, but --selection is more complex. A TLS 1.3 client sends both a group list as well as a --predicted subset of groups. Choosing a group outside the predicted subset incurs --an extra roundtrip. However, in some situations, the most preferred group may --not be predicted. OpenSSL considers all supported groups in I<clist> to be comparable --in security and prioritizes avoiding roundtrips above either client or server --preference order. If an application uses an external provider to extend OpenSSL --with, e.g., a post-quantum algorithm, this behavior may allow a network attacker --to downgrade connections to a weaker algorithm. It is therefore recommended --to use SSL_CTX_set1_groups_list() with the ability to specify group tuples. -+For a TLS 1.3 server, the groups determine the selected group, but selection is -+more complex. -+A TLS 1.3 client sends both a group list and predicted keyshares for a subset -+of groups. -+A server choosing a group outside the client's predicted subset incurs an extra -+roundtrip. -+However, in some situations, the most preferred group may not be predicted. -+ -+When groups are specified via SSL_CTX_set1_groups() as a list of B<NID> -+values, OpenSSL considers all supported groups in I<clist> to be comparable in -+security and prioritises avoiding roundtrips above either client or server -+preference order. -+If an application uses an external provider to extend OpenSSL with, e.g., a -+post-quantum algorithm, this behavior may allow a network attacker to downgrade -+connections to a weaker algorithm. -+It is therefore recommended to use SSL_CTX_set1_groups_list() instead, making -+it possible to specify group tuples as described below. - - SSL_CTX_set1_groups_list() sets the supported groups for B<ctx> to - string I<list>. In contrast to SSL_CTX_set1_groups(), the names of the --groups, rather than their NIDs, are used. -+groups, rather than their B<NIDs>, are used. - - The commands below list the available groups for TLS 1.2 and TLS 1.3, - respectively: -@@ -102,30 +109,72 @@ The preferred group names are those defined by - L<IANA|https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-parameters-8>. - - The I<list> can be used to define several group tuples of comparable security --levels, and can specify which key shares should be sent by a client. --The specified list elements can optionally be ignored, if not implemented -+levels, and can specify which predicted key shares should be sent by a client. -+Group tuples are used by OpenSSL TLS servers to decide whether to request a -+stronger keyshare than those predicted by sending a Hello Retry Request -+(B<HRR>) even if some of the predicted groups are supported. -+OpenSSL clients ignore tuple boundaries, and pay attenion only to the overall -+order of I<list> elements and which groups are selected as predicted keyshares -+as described below. -+ -+The specified list elements can optionally be ignored if not implemented - (listing unknown groups otherwise results in error). --It is also possible to specify the built-in default set of groups, and to explicitly --remove a group from that list. -- --In its simplest form, the string I<list> is just a colon separated list --of group names, for example "P-521:P-384:P-256:X25519:ffdhe2048". The first --group listed will also be used for the B<key_share> sent by a client in a --TLSv1.3 B<ClientHello>. For servers note the discussion above. The list should --be in order of preference with the most preferred group first. -- --Group tuples of comparable security are defined by separating them from each --other by a tuple separator C</>. Keyshares to be sent by a client are specified --by prepending a C<*> to the group name, while any C<*> will be ignored by a --server. The following string I<list> for example defines three tuples when --used on the server-side, and triggers the generation of three key shares --when used on the client-side: P-521:*P-256/*P-384/*X25519:P-384:ffdhe2048. -- --If a group name is preceded with the C<?> character, it will be ignored if an --implementation is missing. If a group name is preceded with the C<-> character, it --will be removed from the list of groups if present (including not sending a --key share for this group), ignored otherwise. The pseudo group name --C<DEFAULT> can be used to select the OpenSSL built-in default list of groups. -+It is also possible to specify the built-in default set of groups, and to -+explicitly remove a group from that list. -+ -+In its simplest legacy form, the string I<list> is just a colon separated list -+of group names, for example "P-521:P-384:P-256:X25519:ffdhe2048". -+The first group listed will in this case be used as the sole predicted -+B<key_share> sent by a client in a TLSv1.3 B<ClientHello>. -+The list should be in order of preference with the most preferred group first. -+ -+A more expressive syntax supports definition of group tuples of comparable -+security by separating them from each other with C</> characters. -+ -+The predicted keyshares to be sent by clients can be explicitly specified by -+adding a C<*> prefix to the associated group name. -+These C<*> prefixes are ignored by servers. -+ -+If a group name is prefixed with the C<?> character, it will be ignored if an -+implementation is missing. -+Otherwise, listing an unknown group name will cause a failure to parse the -+I<list>. -+Note that whether a group is known or not may depend on the OpenSSL version, -+how OpenSSL was compiled and/or which providers are loaded. -+Make sure you have the correct spelling of the group name and when in doubt -+prefix it with a C<?> to handle configurations in which it might nevertheless -+be unknown. -+ -+If a group name is prefixed with the C<-> character, it will be removed from -+the list of groups specified up to that point. -+It can be added again if specified later. -+Removal of groups that have not been included earlier in the list is silently -+ignored. -+ -+The pseudo group name C<DEFAULT> can be used to select the OpenSSL built-in -+default list of groups. -+Prepending one or more groups to C<DEFAULT> using only C<:> separators prepends those -+groups to the built-in default list's first tuple. -+Additional tuples can be prepended by use of the C</> separator. -+Appending a set of groups to C<DEFAULT> using only C<:> separators appends those -+groups to the built-in default list's last tuple. -+Additional tuples can be appended by use of the C</> separator. -+ -+The B<DEFAULT> list selects B<X25519MLKEM768> as one of the predicted keyshares. -+In rare cases this can lead to failures or timeouts because the resulting -+larger TLS Client Hello message may no longer fit in a single TCP segment and -+firewall software may erroneously disrupt the TLS handshake. -+If this is an issue or concern, prepending C<?X25519MLKEM768:> without a C<*> -+prefix leads to its occurrence in the default list to be ignored as a duplicate, -+and along with that also the keyshare prediction. -+The group will then only be selected by servers that specifically expect it, -+after a Hello Retry Request (HRR). -+Servers that specifically prefer B<X25519MLKEM768>, are much less likely to be -+found behind problematic firewalls. -+ -+The following string I<list> for example defines three tuples when used on the -+server-side, and triggers the generation of three key shares when used on the -+client-side: P-521:*P-256/*P-384/*X25519:P-384:ffdhe2048. - - For a TLS 1.3 client, all the groups in the string I<list> are added to the - supported groups extension of a C<ClientHello>, in the order in which they are listed, -diff --git x/ssl/t1_lib.c y/ssl/t1_lib.c -index 9ece318950351d22f5f6cc75a15111fb89ce4fa4..9adbabe5eef5fc16cb983424ddff2ba947459ec9 100644 ---- x/ssl/t1_lib.c -+++ y/ssl/t1_lib.c -@@ -215,7 +215,7 @@ static const uint16_t suiteb_curves[] = { - - /* Group list string of the built-in pseudo group DEFAULT_SUITE_B */ - #define SUITE_B_GROUP_NAME "DEFAULT_SUITE_B" --#define SUITE_B_GROUP_LIST "secp256r1:secp384r1", -+#define SUITE_B_GROUP_LIST "?secp256r1:?secp384r1", - - struct provider_ctx_data_st { - SSL_CTX *ctx; -@@ -1248,8 +1248,8 @@ typedef struct { - size_t ksidcnt; /* Number of key shares */ - uint16_t *ksid_arr; /* The IDs of the key share groups (flat list) */ - /* Variable to keep state between execution of callback or helper functions */ -- size_t tuple_mode; /* Keeps track whether tuple_cb called from 'the top' or from gid_cb */ -- int ignore_unknown_default; /* Flag such that unknown groups for DEFAULT[_XYZ] are ignored */ -+ int inner; /* Are we expanding a DEFAULT list */ -+ int first; /* First tuple of possibly nested expansion? */ - } gid_cb_st; - - /* Forward declaration of tuple callback function */ -@@ -1324,16 +1324,16 @@ static int gid_cb(const char *elem, int len, void *arg) - for (i = 0; i < OSSL_NELEM(default_group_strings); i++) { - if ((size_t)len == (strlen(default_group_strings[i].list_name)) - && OPENSSL_strncasecmp(default_group_strings[i].list_name, elem, len) == 0) { -+ int saved_first; -+ - /* - * We're asked to insert an entire list of groups from a - * DEFAULT[_XYZ] 'pseudo group' which we do by - * recursively calling this function (indirectly via - * CONF_parse_list and tuple_cb); essentially, we treat a DEFAULT - * group string like a tuple which is appended to the current tuple -- * rather then starting a new tuple. Variable tuple_mode is the flag which -- * controls append tuple vs start new tuple. -+ * rather then starting a new tuple. - */ -- - if (ignore_unknown || remove_group) - return -1; /* removal or ignore not allowed here -> syntax error */ - -@@ -1354,15 +1354,17 @@ static int gid_cb(const char *elem, int len, void *arg) - default_group_strings[i].group_string, - strlen(default_group_strings[i].group_string)); - restored_default_group_string[strlen(default_group_strings[i].group_string) + restored_prefix_index] = '\0'; -- /* We execute the recursive call */ -- garg->ignore_unknown_default = 1; /* We ignore unknown groups for DEFAULT_XYZ */ -- /* we enforce group mode (= append tuple) for DEFAULT_XYZ group lists */ -- garg->tuple_mode = 0; -- /* We use the tuple_cb callback to process the pseudo group tuple */ -+ /* -+ * Append first tuple of result to current tuple, and don't -+ * terminate the last tuple until we return to a top-level -+ * tuple_cb. -+ */ -+ saved_first = garg->first; -+ garg->inner = garg->first = 1; - retval = CONF_parse_list(restored_default_group_string, - TUPLE_DELIMITER_CHARACTER, 1, tuple_cb, garg); -- garg->tuple_mode = 1; /* next call to tuple_cb will again start new tuple */ -- garg->ignore_unknown_default = 0; /* reset to original value */ -+ garg->inner = 0; -+ garg->first = saved_first; - /* We don't need the \0-terminated string anymore */ - OPENSSL_free(restored_default_group_string); - -@@ -1382,9 +1384,6 @@ static int gid_cb(const char *elem, int len, void *arg) - if (len == 0) - return -1; /* Seems we have prefxes without a group name -> syntax error */ - -- if (garg->ignore_unknown_default == 1) /* Always ignore unknown groups for DEFAULT[_XYZ] */ -- ignore_unknown = 1; -- - /* Memory management in case more groups are present compared to initial allocation */ - if (garg->gidcnt == garg->gidmax) { - uint16_t *tmp = OPENSSL_realloc_array(garg->gid_arr, -@@ -1520,7 +1519,7 @@ static int gid_cb(const char *elem, int len, void *arg) - /* and update the book keeping for the number of groups in current tuple */ - garg->tuplcnt_arr[garg->tplcnt]++; - -- /* We memorize if needed that we want to add a key share for the current group */ -+ /* We want to add a key share for the current group */ - if (add_keyshare) - garg->ksid_arr[garg->ksidcnt++] = gid; - } -@@ -1529,6 +1528,35 @@ done: - return retval; - } - -+static int grow_tuples(gid_cb_st *garg) -+{ -+ if (garg->tplcnt == garg->tplmax) { -+ size_t newcnt = garg->tplmax + GROUPLIST_INCREMENT; -+ size_t *tmp = OPENSSL_realloc_array(garg->tuplcnt_arr, -+ newcnt, sizeof(*garg->tuplcnt_arr)); -+ -+ if (tmp == NULL) -+ return 0; -+ -+ garg->tplmax = newcnt; -+ garg->tuplcnt_arr = tmp; -+ } -+ return 1; -+} -+ -+static int close_tuple(gid_cb_st *garg) -+{ -+ size_t gidcnt = garg->tuplcnt_arr[garg->tplcnt]; -+ -+ if (gidcnt == 0) -+ return 1; -+ if (!grow_tuples(garg)) -+ return 0; -+ -+ garg->tuplcnt_arr[++garg->tplcnt] = 0; -+ return 1; -+} -+ - /* Extract and process a tuple of groups */ - static int tuple_cb(const char *tuple, int len, void *arg) - { -@@ -1542,17 +1570,9 @@ static int tuple_cb(const char *tuple, int len, void *arg) - return 0; - } - -- /* Memory management for tuples */ -- if (garg->tplcnt == garg->tplmax) { -- size_t *tmp = OPENSSL_realloc_array(garg->tuplcnt_arr, -- garg->tplmax + GROUPLIST_INCREMENT, -- sizeof(*garg->tuplcnt_arr)); -- -- if (tmp == NULL) -- return 0; -- garg->tplmax += GROUPLIST_INCREMENT; -- garg->tuplcnt_arr = tmp; -- } -+ if (garg->inner && !garg->first && !close_tuple(garg)) -+ return 0; -+ garg->first = 0; - - /* Convert to \0-terminated string */ - restored_tuple_string = OPENSSL_malloc(len + 1 /* \0 */); -@@ -1567,15 +1587,8 @@ static int tuple_cb(const char *tuple, int len, void *arg) - /* We don't need the \o-terminated string anymore */ - OPENSSL_free(restored_tuple_string); - -- if (garg->tuplcnt_arr[garg->tplcnt] > 0) { /* Some valid groups are present in current tuple... */ -- if (garg->tuple_mode) { -- /* We 'close' the tuple */ -- garg->tplcnt++; -- garg->tuplcnt_arr[garg->tplcnt] = 0; /* Next tuple is initialized to be empty */ -- garg->tuple_mode = 1; /* next call will start a tuple (unless overridden in gid_cb) */ -- } -- } -- -+ if (!garg->inner && !close_tuple(garg)) -+ return 0; - return retval; - } - -@@ -1606,8 +1619,6 @@ int tls1_set_groups_list(SSL_CTX *ctx, - } - - memset(&gcb, 0, sizeof(gcb)); -- gcb.tuple_mode = 1; /* We prepare to collect the first tuple */ -- gcb.ignore_unknown_default = 0; - gcb.gidmax = GROUPLIST_INCREMENT; - gcb.tplmax = GROUPLIST_INCREMENT; - gcb.ksidmax = GROUPLIST_INCREMENT; -diff --git x/test/tls13groupselection_test.c y/test/tls13groupselection_test.c -index 54e094464fdde97252abadd3a4b175bf9965be6b..98c81cde0707377f500d52d4831b03332f09cd52 100644 ---- x/test/tls13groupselection_test.c -+++ y/test/tls13groupselection_test.c -@@ -40,6 +40,12 @@ typedef enum SERVER_RESPONSE { - SH = 2 - } SERVER_RESPONSE; - -+static const char *response_desc[] = { -+ "HRR", -+ "INIT", -+ "SH", -+}; -+ - static char *cert = NULL; - static char *privkey = NULL; - -@@ -307,7 +313,23 @@ static const struct tls13groupselection_test_st tls13groupselection_tests[] = { - { "*brainpoolP256r1:X25519", /* test 43 */ - "X25519", - SERVER_PREFERENCE, -- NEGOTIATION_FAILURE, INIT } -+ NEGOTIATION_FAILURE, INIT }, -+ -+ /* DEFAULT retains tuple structure */ -+ { "*X25519:secp256r1", -+ "secp256r1:DEFAULT", /* test 44 */ -+ SERVER_PREFERENCE, -+ "secp256r1", HRR }, -+#ifndef OPENSSL_NO_DH -+ { "*ffdhe2048:secp256r1", -+ "DEFAULT:ffdhe4096", /* test 45 */ -+ CLIENT_PREFERENCE, -+ "secp256r1", HRR }, -+ { "x25519:ffdhe2048:*ffdhe4096", -+ "DEFAULT:ffdhe4096", /* test 46 */ -+ SERVER_PREFERENCE, -+ "x25519", HRR }, -+#endif - }; - - static void server_response_check_cb(int write_p, int version, -@@ -318,10 +340,12 @@ static void server_response_check_cb(int write_p, int version, - enum SERVER_RESPONSE *server_response = (enum SERVER_RESPONSE *)arg; - /* Prepare check for HRR */ - const uint8_t *incoming_random = (uint8_t *)buf + 6; -- const uint8_t magic_HRR_random[32] = { 0xCF, 0x21, 0xAD, 0x74, 0xE5, 0x9A, 0x61, 0x11, -+ const uint8_t magic_HRR_random[32] = { -+ 0xCF, 0x21, 0xAD, 0x74, 0xE5, 0x9A, 0x61, 0x11, - 0xBE, 0x1D, 0x8C, 0x02, 0x1E, 0x65, 0xB8, 0x91, - 0xC2, 0xA2, 0x11, 0x16, 0x7A, 0xBB, 0x8C, 0x5E, -- 0x07, 0x9E, 0x09, 0xE2, 0xC8, 0xA8, 0x33, 0x9C }; -+ 0x07, 0x9E, 0x09, 0xE2, 0xC8, 0xA8, 0x33, 0x9C -+ }; - - /* Did a server hello arrive? */ - if (write_p == 0 && /* Incoming data... */ -@@ -450,13 +474,16 @@ static int test_groupnegotiation(const struct tls13groupselection_test_st *curre - group_name_client = SSL_group_to_name(clientssl, negotiated_group_client); - if (!TEST_int_eq(negotiated_group_client, negotiated_group_server)) - goto end; -- if (!TEST_int_eq((int)current_test_vector->expected_server_response, (int)server_response)) -+ if (!TEST_str_eq(response_desc[current_test_vector->expected_server_response], -+ response_desc[server_response])) - goto end; - if (TEST_str_eq(group_name_client, current_test_vector->expected_group)) - ok = 1; - } else { - TEST_false_or_end(create_ssl_connection(serverssl, clientssl, SSL_ERROR_NONE)); -- if (test_type == TEST_NEGOTIATION_FAILURE && !TEST_int_eq((int)current_test_vector->expected_server_response, (int)server_response)) -+ if (test_type == TEST_NEGOTIATION_FAILURE -+ && !TEST_str_eq(response_desc[current_test_vector->expected_server_response], -+ response_desc[server_response])) - goto end; - ok = 1; - } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AusweisApp-2.5.0/publiccode.yml new/AusweisApp-2.5.1/publiccode.yml --- old/AusweisApp-2.5.0/publiccode.yml 2026-04-08 11:18:17.000000000 +0200 +++ new/AusweisApp-2.5.1/publiccode.yml 2026-04-12 12:11:17.000000000 +0200 @@ -15,9 +15,10 @@ - android softwareType: standalone/mobile categories: + - citizen-services - identity-management - - security - - authentication + - it-security + - service-consolidation maintenance: type: contract contacts: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AusweisApp-2.5.0/resources/packaging/android/build.gradle.append new/AusweisApp-2.5.1/resources/packaging/android/build.gradle.append --- old/AusweisApp-2.5.0/resources/packaging/android/build.gradle.append 2026-04-08 11:18:17.000000000 +0200 +++ new/AusweisApp-2.5.1/resources/packaging/android/build.gradle.append 2026-04-12 12:11:17.000000000 +0200 @@ -22,7 +22,7 @@ lint { baseline = file('lint-baseline.xml') - disable += ['LintBaseline'] + disable += ['LintBaseline', 'AndroidGradlePluginVersion'] } buildFeatures { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AusweisApp-2.5.0/resources/packaging/android/lint.apk.xml new/AusweisApp-2.5.1/resources/packaging/android/lint.apk.xml --- old/AusweisApp-2.5.0/resources/packaging/android/lint.apk.xml 2026-04-08 11:18:17.000000000 +0200 +++ new/AusweisApp-2.5.1/resources/packaging/android/lint.apk.xml 2026-04-12 12:11:17.000000000 +0200 @@ -2,17 +2,6 @@ <issues format="6" by="lint 8.10.1" type="baseline" client="gradle" dependencies="false" name="AGP (8.10.1)" variant="all" version="8.10.1"> <issue - id="AndroidGradlePluginVersion" - message="A newer version of Gradle than 8.14.3 is available: 8.14.4" - errorLine1="distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip" - errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> - <location - file="gradle/wrapper/gradle-wrapper.properties" - line="3" - column="17"/> - </issue> - - <issue id="ChromeOsAbiSupport" message="Missing x86_64 ABI support for ChromeOS" errorLine1=" ndk.abiFilters = qtTargetAbiList.split(",")" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AusweisApp-2.5.0/resources/updatable-files/supported-readers.json new/AusweisApp-2.5.1/resources/updatable-files/supported-readers.json --- old/AusweisApp-2.5.0/resources/updatable-files/supported-readers.json 2026-04-08 11:18:17.000000000 +0200 +++ new/AusweisApp-2.5.1/resources/updatable-files/supported-readers.json 2026-04-12 12:11:17.000000000 +0200 @@ -120,7 +120,7 @@ "os": "mac" } ], - "URL": "https://www.reiner-sct.com/support/support-anfrage/?os=MacOS&productGroup=77304735&product=77304822&q=driver#choice5" + "URL": "https://help.reiner-sct.com/de/support/solutions/articles/101000480002" }, { "Platforms": [ @@ -226,7 +226,7 @@ "os": "mac" } ], - "URL": "https://www.reiner-sct.com/treiber-mac" + "URL": "https://help.reiner-sct.com/de/support/solutions/articles/101000480002" }, { "Platforms": [ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AusweisApp-2.5.0/test/qt/card/drivers/test_ReaderDetector.cpp new/AusweisApp-2.5.1/test/qt/card/drivers/test_ReaderDetector.cpp --- old/AusweisApp-2.5.0/test/qt/card/drivers/test_ReaderDetector.cpp 2026-04-08 11:18:17.000000000 +0200 +++ new/AusweisApp-2.5.1/test/qt/card/drivers/test_ReaderDetector.cpp 2026-04-12 12:11:17.000000000 +0200 @@ -17,7 +17,7 @@ #if defined(Q_OS_WIN) const QLatin1String KOMFORT_DRIVER_URL("https://www.reiner-sct.com/support/support-anfrage/?os=Windows&productGroup=77304735&product=77304822&q=driver#choice5"); #elif defined(Q_OS_MACOS) -const QLatin1String KOMFORT_DRIVER_URL("https://www.reiner-sct.com/support/support-anfrage/?os=MacOS&productGroup=77304735&product=77304822&q=driver#choice5"); +const QLatin1String KOMFORT_DRIVER_URL("https://help.reiner-sct.com/de/support/solutions/articles/101000480002"); #else const QLatin1String KOMFORT_DRIVER_URL("https://www.reiner-sct.com/support/support-anfrage/?os=Linux&productGroup=77304735&product=77304822&q=driver#choice5"); #endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/AusweisApp-2.5.0/test/qt/configuration/test_ReaderConfiguration.cpp new/AusweisApp-2.5.1/test/qt/configuration/test_ReaderConfiguration.cpp --- old/AusweisApp-2.5.0/test/qt/configuration/test_ReaderConfiguration.cpp 2026-04-08 11:18:17.000000000 +0200 +++ new/AusweisApp-2.5.1/test/qt/configuration/test_ReaderConfiguration.cpp 2026-04-12 12:11:17.000000000 +0200 @@ -178,13 +178,13 @@ QTest::newRow("Simulator") << UsbId(0x0000, 0x0002) << "Simulator" << "Simulator"; QTest::newRow("REINER SCT cyberJack RFID komfort-windows-10-11") << UsbId(0x0C4B, 0x0501) << "REINER SCT cyberJack RFID komfort USB 1" << "REINER SCT cyberJack RFID komfort"; - QTest::newRow("REINER SCT cyberJack RFID komfort-macosx-12-15") << UsbId(0x0C4B, 0x0501) << "REINER SCT cyberJack RFID komfort" << "REINER SCT cyberJack RFID komfort"; + QTest::newRow("REINER SCT cyberJack RFID komfort-macosx-13-26") << UsbId(0x0C4B, 0x0501) << "REINER SCT cyberJack RFID komfort" << "REINER SCT cyberJack RFID komfort"; QTest::newRow("REINER SCT cyberJack RFID komfort-FON-windows-7-10") << UsbId(0x0C4B, 0x2007) << "REINER SCT cyberJack RFID komfort FON USB 52" << "REINER SCT cyberJack RFID komfort FON"; QTest::newRow("REINER SCT cyberJack RFID komfort-FON-macosx-10.13-11.0") << UsbId(0x0C4B, 0x2007) << "REINER SCT cyberJack RFID komfort FON" << "REINER SCT cyberJack RFID komfort FON"; QTest::newRow("REINER SCT cyberJack RFID standard-windows-10-11") << UsbId(0x0C4B, 0x0500) << "REINER SCT cyberJack RFID standard USB 1" << "REINER SCT cyberJack RFID standard"; - QTest::newRow("REINER SCT cyberJack RFID standard-macosx-12-15") << UsbId(0x0C4B, 0x0500) << "REINER SCT cyberJack RFID standard" << "REINER SCT cyberJack RFID standard"; + QTest::newRow("REINER SCT cyberJack RFID standard-macosx-13-26") << UsbId(0x0C4B, 0x0500) << "REINER SCT cyberJack RFID standard" << "REINER SCT cyberJack RFID standard"; QTest::newRow("REINER SCT cyberJack RFID basis-windows-10-11") << UsbId(0x0C4B, 0x9102) << "REINER SCT cyberJack RFID basis 0" << "REINER SCT cyberJack RFID basis"; QTest::newRow("REINER SCT cyberJack RFID basis-macosx-13-26") << UsbId(0x0C4B, 0x9102) << "REINER SCT cyberJack RFID basis" << "REINER SCT cyberJack RFID basis";
