42 changes: 21 additions & 21 deletions README.rst
@@ -1,5 +1,5 @@
AusweisApp2
===========
AusweisApp
==========

Kontakt
-------
Expand All @@ -13,7 +13,7 @@ Lizenz
------
Der vorliegende Quellcode wird unter der EUPL v1.2 bereitgestellt.
Die Datei ``LICENSE.officially.txt`` gilt ausschließlich für
die offizielle Version der AusweisApp2, welche von der Governikus GmbH & Co. KG
die offizielle Version der AusweisApp, welche von der Governikus GmbH & Co. KG
im Auftrag des Bundes unter https://www.ausweisapp.bund.de bereitgestellt wird.


Expand All @@ -30,7 +30,7 @@ notwendigen Bibliotheken mit den entsprechenden Patches.

Build
-----
Um die AusweisApp2 zu bauen, ist es notwendig, ein Makefile mittels CMake zu
Um die AusweisApp zu bauen, ist es notwendig, ein Makefile mittels CMake zu
generieren. Dazu kann CMake auf der Kommandozeile oder mit der von CMake
mitgelieferten CMake-GUI ausgeführt werden.

Expand All @@ -42,7 +42,7 @@ für den Build eingetragen wurden, über diesen Mechanismus an CMake übergeben
Als Generator für Makefiles sollte unter Windows für MinGW "MinGW Makefiles" und
für MSVC "NMake Makefiles" oder "Ninja" gewählt werden.

Beim Generieren des Makefiles ist zu beachten, dass die AusweisApp2 nur sogenannte
Beim Generieren des Makefiles ist zu beachten, dass die AusweisApp nur sogenannte
"out of source tree"-Builds erlaubt. Daher ist die empfohlene Variante von CMake
zwingend einzuhalten, und der Build-Ordner darf sich nicht im Source-Ordner
befinden.
Expand All @@ -51,14 +51,14 @@ Beispiel über die CLI:

::

C:/AusweisApp2/
C:/AusweisApp/
C:/qt/
C:/build/

::

C:>cd C:/build
C:\build>cmake -G "MinGW Makefiles" -DCMAKE_PREFIX_PATH=C:/qt/dist C:/AusweisApp2 -DCMAKE_BUILD_TYPE=release
C:\build>cmake -G "MinGW Makefiles" -DCMAKE_PREFIX_PATH=C:/qt/dist C:/AusweisApp -DCMAKE_BUILD_TYPE=release
-- The CXX compiler identification is GNU 11.2.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
Expand All @@ -76,12 +76,12 @@ Beispiel über die CLI:
-- DVCS phase: public
-- DVCS revision: 283adbf18b4e+
-- No documentation will be generated
-- CMAKE_INSTALL_PREFIX: C:/Program Files (x86)/AusweisApp2
-- CMAKE_INSTALL_PREFIX: C:/Program Files (x86)/AusweisApp
-- CMAKE_BUILD_TYPE: RELEASE
-- CMAKE_PREFIX_PATH: C:/qt/dist
-- CMAKE_INCLUDE_PATH:
-- CMAKE_LIBRARY_PATH:
-- CMAKE_SYSTEM_PREFIX_PATH: C:/Program Files;C:/Program Files (x86);C:/Program Files/CMake;C:/Program Files (x86)/AusweisApp2
-- CMAKE_SYSTEM_PREFIX_PATH: C:/Program Files;C:/Program Files (x86);C:/Program Files/CMake;C:/Program Files (x86)/AusweisApp
-- CMAKE_SYSTEM_INCLUDE_PATH:
-- CMAKE_VERSION: 3.23.2
-- CMAKE_SYSTEM_PROCESSOR: AMD64
Expand All @@ -90,7 +90,7 @@ Beispiel über die CLI:
[...]


Um die mobile Variante der AusweisApp2 zu bauen, benötigt man je nach Plattform zusätzliche
Um die mobile Variante der AusweisApp zu bauen, benötigt man je nach Plattform zusätzliche
externe Komponenten, die in der README in ``./libs`` im Abschnitt Android / iOS beschrieben
sind.

Expand All @@ -103,19 +103,19 @@ Bei Android ist zu beachten, dass ein CMAKE_TOOLCHAIN_FILE angegeben werden muss
::

$ cd build
$ cmake -DCMAKE_PREFIX_PATH=/home/governikus/Toolchain/dist -DCMAKE_TOOLCHAIN_FILE=../AusweisApp2/cmake/android.toolchain.cmake ../AusweisApp2
$ cmake -DCMAKE_PREFIX_PATH=/home/governikus/Toolchain/dist -DCMAKE_TOOLCHAIN_FILE=../AusweisApp/cmake/android.toolchain.cmake ../AusweisApp
$ make
$ make install
$ make apk

Unter dem Ordner "./dist/bin" ist nun ein "AusweisApp2...apk" erstellt worden.
Unter dem Ordner "./dist/bin" ist nun ein "AusweisApp...apk" erstellt worden.

Sofern der Parameter *CMAKE_BUILD_TYPE* auf RELEASE gesetzt wird, sind folgende CMake
Parameter notwendig um das APK zu signieren.

::

-DAPK_SIGN_KEYSTORE=/home/governikus/ausweisapp2.apk.keystore.jks
-DAPK_SIGN_KEYSTORE=/home/governikus/AusweisApp.apk.keystore.jks
-DAPK_SIGN_KEYSTORE_ALIAS=ausweisapp
-DAPK_SIGN_KEYSTORE_PSW=123456

Expand All @@ -137,14 +137,14 @@ freizuschalten bzw. den Schlüsselbund freizugeben.

security unlock-keychain -pPASSWORD ${HOME}/Library/Keychains/login.keychain

Für iOS wird die AusweisApp2 mittels XCode gebaut!
Für iOS wird die AusweisApp mittels XCode gebaut!

::

$ cd build
$ cmake -DCMAKE_PREFIX_PATH=/Users/governikus/Toolchain/dist -DCMAKE_TOOLCHAIN_FILE=../AusweisApp2/cmake/iOS.toolchain.cmake -DCMAKE_BUILD_TYPE=MinSizeRel ../AusweisApp2 -GXcode
$ xcodebuild -configuration MinSizeRel -archivePath AusweisApp2.xcarchive -scheme AusweisApp archive
$ xcodebuild -configuration MinSizeRel -archivePath AusweisApp2.xcarchive -exportArchive -exportOptionsPlist exportOptions.plist -exportPath .
$ cmake -DCMAKE_PREFIX_PATH=/Users/governikus/Toolchain/dist -DCMAKE_TOOLCHAIN_FILE=../AusweisApp/cmake/iOS.toolchain.cmake -DCMAKE_BUILD_TYPE=MinSizeRel ../AusweisApp -GXcode
$ xcodebuild -configuration MinSizeRel -archivePath AusweisApp.xcarchive -scheme AusweisAppBinary archive
$ xcodebuild -configuration MinSizeRel -archivePath AusweisApp.xcarchive -exportArchive -exportOptionsPlist exportOptions.plist -exportPath .


Im Build-Ordner befindet sich nun ein *.ipa und ein *.xcarchive, welches jeweils das
Expand All @@ -158,9 +158,9 @@ Nachdem die Build-Umgebung eingerichtet ist, kann je nach System ein Package ers

- Unter Windows ist hierfür noch das WiX Toolset (http://wixtoolset.org/ Getestet: 3.8 bis 3.10)
notwendig.
Mittels "mingw32-make package" wird die AusweisApp2 gebaut und ein MSI Paket bereitgestellt.
Mittels "mingw32-make package" wird die AusweisApp gebaut und ein MSI Paket bereitgestellt.

- Unter macOS wird mittels "make package" die AusweisApp2 gebaut und ein DMG bereitgestellt.
- Unter macOS wird mittels "make package" die AusweisApp gebaut und ein DMG bereitgestellt.

- Um ein APK für Android zu bauen, sind zwei Schritte notwendig, da CMake das Format bisher
nicht unterstützt. Daher sind nach der Konfiguration des Projektes folgende Befehle notwendig,
Expand All @@ -175,7 +175,7 @@ Nachdem die Build-Umgebung eingerichtet ist, kann je nach System ein Package ers

Reproduzierbarer Build
----------------------
Wir sind stets bemüht, den Build des offiziellen Binaries der AusweisApp2 nachvollziehbar zu gestalten.
Wir sind stets bemüht, den Build des offiziellen Binaries der AusweisApp nachvollziehbar zu gestalten.
Daher haben wir unter anderem eine README in dem Unterordner ``./libs`` hinterlegt, die den Aufbau
der Buildumgebung und den Build der externen Bibliotheken beschreibt.
Anhand dieser Anleitung können Sie nachvollziehen, wie unser internes Buildsystem aufgebaut ist und
Expand All @@ -184,7 +184,7 @@ welche Compiler bzw. Compiler-Versionen wir verwenden.
Im Unterordner ``./resources/jenkins/`` ist es möglich, unsere Konfiguration des CI-Servers einzusehen.
Die Konfiguration besteht aus mehreren Dockerfiles und JobDSL-Dateien.

Anhand dieser Skripte ist es möglich, den Build der AusweisApp2 zu reproduzieren.
Anhand dieser Skripte ist es möglich, den Build der AusweisApp zu reproduzieren.
Ein Unterschied zum offiziellen Binary sollte lediglich in eventuellen Pfaden,
einem Datum bzw. Zeitstempel und Signaturen bestehen.

Expand Down
6 changes: 1 addition & 5 deletions cmake/Appcast.cmake
Expand Up @@ -6,11 +6,7 @@ if(MAC OR LINUX OR WIN32)
string(TIMESTAMP APPCAST_DATE "%Y-%m-%dT%H:%M:%S")

foreach(filePath ${_files})
if(CMAKE_VERSION VERSION_LESS "3.14")
FILE_SIZE(fileSize ${filePath})
else()
file(SIZE ${filePath} fileSize)
endif()
file(SIZE ${filePath} fileSize)
get_filename_component(file ${filePath} NAME)

if(NOT DEFINED fileSize)
Expand Down
37 changes: 0 additions & 37 deletions cmake/Compat.cmake

This file was deleted.

26 changes: 10 additions & 16 deletions cmake/CompilerFlags.cmake
Expand Up @@ -15,7 +15,7 @@ add_compile_definitions($<$<NOT:$<CONFIG:Debug>>:QT_NO_CAST_FROM_ASCII>)

if(QT_VENDOR STREQUAL "Governikus")
add_definitions(-DGOVERNIKUS_QT)
add_definitions(-DQT_DISABLE_DEPRECATED_BEFORE=0x060301)
add_definitions(-DQT_DISABLE_DEPRECATED_BEFORE=0x060502)
endif()


Expand All @@ -40,6 +40,7 @@ set(CMAKE_POSITION_INDEPENDENT_CODE ON)

if(NOT DEFINED CMAKE_COMPILE_WARNING_AS_ERROR AND VENDOR_GOVERNIKUS)
set(CMAKE_COMPILE_WARNING_AS_ERROR ON)
add_definitions(-DOPENSSL_NO_DEPRECATED)
endif()


Expand All @@ -55,10 +56,7 @@ if(MSVC)
ADD_FLAG(/HIGHENTROPYVA)
ADD_FLAG(/guard:cf)
ADD_FLAG(/Qcf-protection)

if (QT6)
ADD_FLAG(/Zc:__cplusplus)
endif()
ADD_FLAG(/Zc:__cplusplus)

if(CMAKE_CXX_COMPILER_LAUNCHER MATCHES "ccache")
string(REPLACE "/Zi" "/Z7" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
Expand Down Expand Up @@ -124,20 +122,12 @@ else()
ADD_FLAG(-Wunused)
ADD_FLAG(-Wunused-template)
ADD_FLAG(-Wextra-semi)
ADD_FLAG(-Wextra-semi-stmt)
ADD_FLAG(-Wempty-init-stmt)
ADD_FLAG(-Wuseless-cast)
ADD_FLAG(-Wconversion)
ADD_FLAG(-Wno-gnu-zero-variadic-macro-arguments) # Qt (qDebug) is not compatible

if(CMAKE_VERSION VERSION_GREATER_EQUAL "3.14")
ADD_FLAG(-Wextra-semi-stmt)
ADD_FLAG(-Wuseless-cast)
endif()

if(QT6)
ADD_FLAG(-Wno-shorten-64-to-32)
else()
ADD_FLAG(-Wconversion)
endif()

if(ANDROID OR (INTEGRATED_SDK AND (NOT BUILD_SHARED_LIBS OR NOT BUILD_TESTING)))
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
endif()
Expand Down Expand Up @@ -188,6 +178,10 @@ else()
if(CMAKE_CXX_FLAGS MATCHES "-Wuseless-cast")
list(APPEND INCOMPATIBLE_QT_COMPILER_FLAGS "-Wno-useless-cast")
endif()

if(CMAKE_CXX_FLAGS MATCHES "-Wconversion" AND MAC)
list(APPEND INCOMPATIBLE_QT_COMPILER_FLAGS "-Wno-sign-conversion")
endif()
endif()


Expand Down
12 changes: 5 additions & 7 deletions cmake/DVCS.cmake
Expand Up @@ -104,15 +104,13 @@ if(DVCS_FOUND)
endif()

function(CHECK_VERSION _out)
if(PROJECT_VERSION_MINOR)
math(EXPR _odd "${PROJECT_VERSION_MINOR} % 2")
if(_odd OR dvcs_revision)
set(${_out} TRUE PARENT_SCOPE)
return()
endif()
if(PROJECT_VERSION_MINOR GREATER_EQUAL 100 OR PROJECT_VERSION_PATCH GREATER_EQUAL 100 OR dvcs_revision)
set(${_out} TRUE PARENT_SCOPE)
return()
endif()

set(${_out} FALSE PARENT_SCOPE)
endfunction()

CHECK_VERSION(IS_DEVELOPER_VERSION)
CHECK_VERSION(IS_BETA_VERSION)
message(STATUS "DVCS beta: ${IS_BETA_VERSION}")
27 changes: 1 addition & 26 deletions cmake/Helper.cmake
Expand Up @@ -263,9 +263,6 @@ function(ADD_PLATFORM_LIBRARY _name)
endif()

if(INCOMPATIBLE_QT_COMPILER_FLAGS)
if(CMAKE_VERSION VERSION_LESS "3.14")
message(WARNING "Compiler flags for mocs with 3.13.x and earlier leads to linker errors")
endif()
set_source_files_properties("${_name}_autogen/mocs_compilation.cpp" PROPERTIES COMPILE_OPTIONS "${INCOMPATIBLE_QT_COMPILER_FLAGS}")
endif()
endfunction()
Expand Down Expand Up @@ -327,28 +324,6 @@ if((WIN32 AND NOT WINDOWS_STORE) OR LINUX OR MAC OR CYGWIN OR BSD)
endif()


if(CMAKE_VERSION VERSION_LESS "3.14") # Use file(SIZE)
function(FILE_SIZE _outSize _file)
if(LINUX)
set(SIZE_COMMAND stat -c "%s" "${_file}")
elseif(MAC)
set(SIZE_COMMAND stat -f "%z" "${_file}")
else()
return()
endif()

execute_process(COMMAND ${SIZE_COMMAND}
OUTPUT_VARIABLE SIZE_OUTPUT
RESULT_VARIABLE SIZE_RESULT
ERROR_QUIET
OUTPUT_STRIP_TRAILING_WHITESPACE)

if(${SIZE_RESULT} EQUAL 0)
set(${_outSize} ${SIZE_OUTPUT} PARENT_SCOPE)
endif()
endfunction()
endif()

if(NOT COMMAND FIND_HOST_PACKAGE)
macro(FIND_HOST_PACKAGE)
find_package(${ARGN})
Expand Down Expand Up @@ -448,7 +423,7 @@ if(WIN32)
if(NOT WIN_SIGN_HASHALGO)
set(WIN_SIGN_HASHALGO SHA256)
endif()
set(SIGNTOOL_PARAMS sign /v /fd ${WIN_SIGN_HASHALGO} /d AusweisApp2 /du https://www.ausweisapp.bund.de)
set(SIGNTOOL_PARAMS sign /v /fd ${WIN_SIGN_HASHALGO} /d AusweisApp /du https://www.ausweisapp.bund.de)

if(WIN_SIGN_SUBJECT_NAME)
set(SIGNTOOL_PARAMS ${SIGNTOOL_PARAMS} /n ${WIN_SIGN_SUBJECT_NAME})
Expand Down
100 changes: 38 additions & 62 deletions cmake/Install.cmake
Expand Up @@ -46,9 +46,6 @@ set(DEPENDENCY_CHECK "
# qt qml plugins (fixup_bundle needs to know this to fetch their dependencies)
if((WIN32 OR MAC) AND TARGET ${Qt}::Qml)
set(modules QtQuick QtQml Qt)
if (NOT QT6)
list(APPEND modules QtQuick.2)
endif()

foreach(entry ${modules})
set(_lib_dir ${QT_INSTALL_ARCHDATA}/qml/${entry})
Expand Down Expand Up @@ -83,36 +80,22 @@ if(WIN32)
endif()
endif()

if (QT6)
if(QT_VERSION VERSION_LESS "6.4")
# Workaround for QTBUG-94066
include("${QT_INSTALL_ARCHDATA}/lib/cmake/Qt6Gui/Qt6QSvgPluginTargets.cmake")
include("${QT_INSTALL_ARCHDATA}/lib/cmake/Qt6Gui/Qt6QGifPluginTargets.cmake")
include("${QT_INSTALL_ARCHDATA}/lib/cmake/Qt6Gui/Qt6QJpegPluginTargets.cmake")
include("${QT_INSTALL_ARCHDATA}/lib/cmake/Qt6Gui/Qt6QWindowsIntegrationPluginTargets.cmake")
include("${QT_INSTALL_ARCHDATA}/lib/cmake/Qt6Widgets/Qt6QWindowsVistaStylePluginTargets.cmake")
include("${QT_INSTALL_ARCHDATA}/lib/cmake/Qt6Network/Qt6QTlsBackendOpenSSLPluginTargets.cmake")
endif()

FETCH_TARGET_LOCATION(openSslBackend "${Qt}::QTlsBackendOpenSSLPlugin")
install(FILES ${openSslBackend} DESTINATION tls COMPONENT Runtime)
list(APPEND LIBS ${openSslBackend})
endif()
FETCH_TARGET_LOCATION(openSslBackend "${Qt}::QTlsBackendOpenSSLPlugin")
install(FILES ${openSslBackend} DESTINATION tls COMPONENT Runtime)
list(APPEND LIBS ${openSslBackend})

FETCH_TARGET_LOCATION(pluginSvg "${Qt}::QSvgPlugin")
FETCH_TARGET_LOCATION(pluginGif "${Qt}::QGifPlugin")
FETCH_TARGET_LOCATION(pluginJpeg "${Qt}::QJpegPlugin")
if(WINDOWS_STORE AND NOT QT6)
FETCH_TARGET_LOCATION(platformWin "${Qt}::QWinRTIntegrationPlugin")
else()
FETCH_TARGET_LOCATION(platformWin "${Qt}::QWindowsIntegrationPlugin")
endif()
FETCH_TARGET_LOCATION(pluginWebP "${Qt}::QWebpPlugin")
FETCH_TARGET_LOCATION(platformWin "${Qt}::QWindowsIntegrationPlugin")
FETCH_TARGET_LOCATION(styleVista "${Qt}::QWindowsVistaStylePlugin")

install(TARGETS AusweisApp DESTINATION . COMPONENT Application)
install(TARGETS AusweisAppBinary DESTINATION . COMPONENT Application)
install(FILES ${pluginSvg} DESTINATION imageformats COMPONENT Runtime)
install(FILES ${pluginGif} DESTINATION imageformats COMPONENT Runtime)
install(FILES ${pluginJpeg} DESTINATION imageformats COMPONENT Runtime)
install(FILES ${pluginWebP} DESTINATION imageformats COMPONENT Runtime)
install(FILES ${platformWin} DESTINATION platforms COMPONENT Runtime)
install(FILES ${styleVista} DESTINATION styles COMPONENT Runtime)
list(APPEND LIBS ${pluginSvg} ${pluginGif} ${pluginJpeg} ${platformWin} ${styleVista})
Expand All @@ -134,8 +117,8 @@ elseif(MAC)
set(MACOS_BUNDLE_RESOURCES_DIR ${DEFAULT_FILE_DESTINATION}/../Resources)
set(MACOS_BUNDLE_LOGIN_ITEMS_DIR ${DEFAULT_FILE_DESTINATION}/../Library/LoginItems)

install(TARGETS AusweisApp BUNDLE DESTINATION . COMPONENT Application)
install(TARGETS AusweisApp2AutostartHelper BUNDLE DESTINATION ${MACOS_BUNDLE_LOGIN_ITEMS_DIR} COMPONENT Application)
install(TARGETS AusweisAppBinary BUNDLE DESTINATION . COMPONENT Application)
install(TARGETS AusweisAppAutostartHelper BUNDLE DESTINATION ${MACOS_BUNDLE_LOGIN_ITEMS_DIR} COMPONENT Application)

function(install_mac_plugins plugins)
foreach(plugin ${plugins})
Expand All @@ -159,28 +142,22 @@ elseif(MAC)
# depend on to be loaded as well, thus resulting in two sets of Qt
# libraries being loaded (ours from the bundle and the ones from the
# installation) and the program misbehaving (crashing).
if (QT6)
# Workaround for QTBUG-94066
include("${QT_INSTALL_ARCHDATA}/lib/cmake/Qt6Gui/Qt6QTuioTouchPluginTargets.cmake")
include("${QT_INSTALL_ARCHDATA}/lib/cmake/Qt6Gui/Qt6QSvgIconPluginTargets.cmake")
include("${QT_INSTALL_ARCHDATA}/lib/cmake/Qt6Gui/Qt6QGifPluginTargets.cmake")
include("${QT_INSTALL_ARCHDATA}/lib/cmake/Qt6Gui/Qt6QICNSPluginTargets.cmake")
include("${QT_INSTALL_ARCHDATA}/lib/cmake/Qt6Gui/Qt6QICOPluginTargets.cmake")
include("${QT_INSTALL_ARCHDATA}/lib/cmake/Qt6Gui/Qt6QJpegPluginTargets.cmake")
include("${QT_INSTALL_ARCHDATA}/lib/cmake/Qt6Gui/Qt6QMacHeifPluginTargets.cmake")
include("${QT_INSTALL_ARCHDATA}/lib/cmake/Qt6Gui/Qt6QMacJp2PluginTargets.cmake")
include("${QT_INSTALL_ARCHDATA}/lib/cmake/Qt6Gui/Qt6QSvgPluginTargets.cmake")
include("${QT_INSTALL_ARCHDATA}/lib/cmake/Qt6Gui/Qt6QCocoaIntegrationPluginTargets.cmake")
include("${QT_INSTALL_ARCHDATA}/lib/cmake/Qt6Widgets/Qt6QMacStylePluginTargets.cmake")
include("${QT_INSTALL_ARCHDATA}/lib/cmake/Qt6Network/Qt6QTlsBackendOpenSSLPluginTargets.cmake")

set(plugins ${Qt}::QTuioTouchPlugin ${Qt}::QSvgIconPlugin ${Qt}::QGifPlugin ${Qt}::QICNSPlugin ${Qt}::QICOPlugin ${Qt}::QJpegPlugin ${Qt}::QMacHeifPlugin ${Qt}::QMacJp2Plugin ${Qt}::QSvgPlugin ${Qt}::QCocoaIntegrationPlugin ${Qt}::QMacStylePlugin ${Qt}::QTlsBackendOpenSSLPlugin)
install_mac_plugins("${plugins}")
else()
foreach (qtComponent QtCore ${Qt}::Gui ${Qt}::Network ${Qt}::Svg ${Qt}::Widgets)
install_mac_plugins("${${qtComponent}_PLUGINS}")
endforeach()
endif()
# Workaround for QTBUG-94066
include("${QT_INSTALL_ARCHDATA}/lib/cmake/Qt6Gui/Qt6QTuioTouchPluginTargets.cmake")
include("${QT_INSTALL_ARCHDATA}/lib/cmake/Qt6Gui/Qt6QSvgIconPluginTargets.cmake")
include("${QT_INSTALL_ARCHDATA}/lib/cmake/Qt6Gui/Qt6QGifPluginTargets.cmake")
include("${QT_INSTALL_ARCHDATA}/lib/cmake/Qt6Gui/Qt6QICNSPluginTargets.cmake")
include("${QT_INSTALL_ARCHDATA}/lib/cmake/Qt6Gui/Qt6QICOPluginTargets.cmake")
include("${QT_INSTALL_ARCHDATA}/lib/cmake/Qt6Gui/Qt6QJpegPluginTargets.cmake")
include("${QT_INSTALL_ARCHDATA}/lib/cmake/Qt6Gui/Qt6QMacHeifPluginTargets.cmake")
include("${QT_INSTALL_ARCHDATA}/lib/cmake/Qt6Gui/Qt6QMacJp2PluginTargets.cmake")
include("${QT_INSTALL_ARCHDATA}/lib/cmake/Qt6Gui/Qt6QSvgPluginTargets.cmake")
include("${QT_INSTALL_ARCHDATA}/lib/cmake/Qt6Gui/Qt6QWebpPluginTargets.cmake")
include("${QT_INSTALL_ARCHDATA}/lib/cmake/Qt6Gui/Qt6QCocoaIntegrationPluginTargets.cmake")
include("${QT_INSTALL_ARCHDATA}/lib/cmake/Qt6Widgets/Qt6QMacStylePluginTargets.cmake")
include("${QT_INSTALL_ARCHDATA}/lib/cmake/Qt6Network/Qt6QTlsBackendOpenSSLPluginTargets.cmake")
set(plugins ${Qt}::QTuioTouchPlugin ${Qt}::QSvgIconPlugin ${Qt}::QGifPlugin ${Qt}::QICNSPlugin ${Qt}::QICOPlugin ${Qt}::QJpegPlugin ${Qt}::QMacHeifPlugin ${Qt}::QMacJp2Plugin ${Qt}::QSvgPlugin ${Qt}::QWebpPlugin ${Qt}::QCocoaIntegrationPlugin ${Qt}::QMacStylePlugin ${Qt}::QTlsBackendOpenSSLPlugin)
install_mac_plugins("${plugins}")

if(TARGET ${Qt}::Qml)
foreach(entry QtQuick QtQuick.2 QtQml Qt)
Expand Down Expand Up @@ -213,13 +190,13 @@ elseif(ANDROID)
set(ANDROID_PACKAGE_SRC_DIR ${PROJECT_BINARY_DIR}/package-src-dir)
set(ANDROID_DEST libs/${CMAKE_ANDROID_ARCH_ABI})
set(PERMISSIONS PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
install(TARGETS AusweisApp DESTINATION ${ANDROID_DEST} ${PERMISSIONS} COMPONENT Application)
install(TARGETS AusweisAppBinary DESTINATION ${ANDROID_DEST} ${PERMISSIONS} COMPONENT Application)

set(RESOURCES_IMG_ANDROID_DIR ${RESOURCES_DIR}/images/android)
if(BUILD_PREVIEW)
set(ANDROID_LAUNCHER_ICON "npa_preview.png")
set(ANDROID_SPLASH_SCREEN_ICON_NAME "splash_npa_preview.png")
elseif(IS_DEVELOPER_VERSION)
elseif(IS_BETA_VERSION)
set(ANDROID_LAUNCHER_ICON "npa_beta.png")
set(ANDROID_SPLASH_SCREEN_ICON_NAME "splash_npa_beta.png")
else()
Expand All @@ -229,7 +206,7 @@ elseif(ANDROID)

if(INTEGRATED_SDK)
set(ANDROID_MANIFEST AndroidManifest.xml.aar.in)
foreach(entry network/WifiInfo ui/aidl/AidlBinder android/LogHandler android/AusweisApp2Service android/AusweisApp2LocalIfdServiceConnection)
foreach(entry network/WifiInfo ui/aidl/AidlBinder android/LogHandler android/BootstrapHelper android/AusweisApp2Service android/AusweisApp2LocalIfdServiceConnection)
set(_java_file "${SRC_DIR}/${entry}.java")
if(NOT EXISTS "${_java_file}")
message(FATAL_ERROR "Cannot find file: ${_java_file}")
Expand All @@ -251,7 +228,6 @@ elseif(ANDROID)
install(FILES ${RESOURCES_IMG_ANDROID_DIR}/${entry}/background_npa.png DESTINATION ${ANDROID_PACKAGE_SRC_DIR}/res/mipmap-${entry} COMPONENT Runtime RENAME npa_background.png)
install(FILES ${RESOURCES_IMG_ANDROID_DIR}/${entry}/foreground_${ANDROID_LAUNCHER_ICON} DESTINATION ${ANDROID_PACKAGE_SRC_DIR}/res/mipmap-${entry} COMPONENT Runtime RENAME npa_foreground.png)
install(FILES ${RESOURCES_IMG_ANDROID_DIR}/${entry}/monochrome_${ANDROID_LAUNCHER_ICON} DESTINATION ${ANDROID_PACKAGE_SRC_DIR}/res/mipmap-${entry} COMPONENT Runtime RENAME npa_monochrome.png)
install(FILES ${RESOURCES_IMG_ANDROID_DIR}/${entry}/${ANDROID_LAUNCHER_ICON} DESTINATION ${ANDROID_PACKAGE_SRC_DIR}/res/mipmap-${entry} COMPONENT Runtime RENAME npa.png)
install(FILES ${RESOURCES_IMG_ANDROID_DIR}/${entry}/${ANDROID_SPLASH_SCREEN_ICON_NAME} DESTINATION ${ANDROID_PACKAGE_SRC_DIR}/res/drawable-${entry} COMPONENT Runtime RENAME splash_npa.png)
endforeach()

Expand All @@ -277,7 +253,7 @@ elseif(ANDROID)
configure_file(${PACKAGING_DIR}/android/data_extraction_rules.xml ${ANDROID_PACKAGE_SRC_DIR}/res/xml/data_extraction_rules.xml COPYONLY)
endif()

set(ANDROID_SO_NAME libAusweisApp2_${CMAKE_ANDROID_ARCH_ABI}.so)
set(ANDROID_SO_NAME libAusweisApp_${CMAKE_ANDROID_ARCH_ABI}.so)
set(ANDROID_APP_BINARY "${CMAKE_INSTALL_PREFIX}/${ANDROID_DEST}/${ANDROID_SO_NAME}")
set(SYMBOL_FOLDER "${CMAKE_BINARY_DIR}/debug.symbols")
set(ANDROID_APP_SYMBOLS "${SYMBOL_FOLDER}/${ANDROID_SO_NAME}")
Expand All @@ -288,8 +264,8 @@ elseif(ANDROID)
execute_process(COMMAND \"${CMAKE_OBJCOPY}\" \"--only-keep-debug\" \"${ANDROID_APP_BINARY}\" \"${ANDROID_APP_SYMBOLS}\")
" COMPONENT Runtime)

set(ANDROID_DEPLOYMENT_SETTINGS ${PROJECT_BINARY_DIR}/libAusweisApp2.so-deployment-settings.json CACHE INTERNAL "apk deployment" FORCE)
configure_file(${PACKAGING_DIR}/android/libAusweisApp2.so-deployment-settings.json.in ${ANDROID_DEPLOYMENT_SETTINGS} @ONLY)
set(ANDROID_DEPLOYMENT_SETTINGS ${PROJECT_BINARY_DIR}/libAusweisApp.so-deployment-settings.json CACHE INTERNAL "apk deployment" FORCE)
configure_file(${PACKAGING_DIR}/android/libAusweisApp.so-deployment-settings.json.in ${ANDROID_DEPLOYMENT_SETTINGS} @ONLY)
configure_file(${PACKAGING_DIR}/android/gradle.properties.in ${CMAKE_INSTALL_PREFIX}/gradle.properties @ONLY)

set(DEFAULT_FILE_DESTINATION ${ANDROID_PACKAGE_SRC_DIR}/assets)
Expand All @@ -299,21 +275,21 @@ elseif(UNIX)
set(CMAKE_INSTALL_RPATH "\$ORIGIN")
endif()

set(DEFAULT_FILE_DESTINATION ${CMAKE_INSTALL_DATADIR}/${VENDOR}/AusweisApp2)
install(TARGETS AusweisApp DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT Application)
set(DEFAULT_FILE_DESTINATION ${CMAKE_INSTALL_DATADIR}/${VENDOR}/AusweisApp)
install(TARGETS AusweisAppBinary DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT Application)
if(NOT CONTAINER_SDK)
configure_file(${PACKAGING_DIR}/linux/${BUNDLE_IDENTIFIER}.metainfo.xml.in ${CMAKE_CURRENT_BINARY_DIR}/${BUNDLE_IDENTIFIER}.metainfo.xml @ONLY)
configure_file(${PACKAGING_DIR}/linux/${BUNDLE_IDENTIFIER}.desktop.in ${CMAKE_CURRENT_BINARY_DIR}/${BUNDLE_IDENTIFIER}.desktop @ONLY)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${BUNDLE_IDENTIFIER}.metainfo.xml DESTINATION ${CMAKE_INSTALL_DATADIR}/metainfo COMPONENT Application)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${BUNDLE_IDENTIFIER}.desktop DESTINATION ${CMAKE_INSTALL_DATADIR}/applications COMPONENT Application)
install(FILES ${RESOURCES_DIR}/images/npa.svg DESTINATION ${CMAKE_INSTALL_DATADIR}/icons/hicolor/scalable/apps COMPONENT Application RENAME AusweisApp2.svg)
install(FILES ${RESOURCES_DIR}/images/npa.png DESTINATION ${CMAKE_INSTALL_DATADIR}/icons/hicolor/96x96/apps COMPONENT Application RENAME AusweisApp2.png)
install(FILES ${DOCS_DIR}/AusweisApp2.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1 COMPONENT Application)
install(FILES ${RESOURCES_DIR}/images/npa.svg DESTINATION ${CMAKE_INSTALL_DATADIR}/icons/hicolor/scalable/apps COMPONENT Application RENAME AusweisApp.svg)
install(FILES ${RESOURCES_DIR}/images/npa.png DESTINATION ${CMAKE_INSTALL_DATADIR}/icons/hicolor/96x96/apps COMPONENT Application RENAME AusweisApp.png)
install(FILES ${DOCS_DIR}/AusweisApp.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1 COMPONENT Application)
endif()

# This is for internal use only! It is not recommended to split the AusweisApp2 into multiple libs!
# This is for internal use only! It is not recommended to split the AusweisApp into multiple libs!
if(BUILD_SHARED_LIBS)
target_get_linked_libraries(AusweisApp libraries)
target_get_linked_libraries(AusweisAppBinary libraries)
foreach(libTarget ${libraries})
install(TARGETS ${libTarget} DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT Application)
endforeach()
Expand Down
38 changes: 8 additions & 30 deletions cmake/Libraries.cmake
@@ -1,13 +1,9 @@
# Set CMAKE_PREFIX_PATH with toolchain directory

if(MINGW AND CMAKE_VERSION VERSION_LESS 3.17.0)
set(CMAKE_FIND_LIBRARY_SUFFIXES ".dll.a" ".a" ".lib")
endif()

if(DESKTOP)
set(MIN_QT_VERSION 5.15)
set(MIN_QT_VERSION 6.4)
else()
set(MIN_QT_VERSION 6.2)
set(MIN_QT_VERSION 6.5)
endif()

if(IOS OR ANDROID)
Expand All @@ -29,41 +25,23 @@ if(IOS OR ANDROID)
set(CMAKE_FIND_ROOT_PATH ${CMAKE_FIND_ROOT_PATH} ${QT_HOST_PATH} )
endif()

if(NOT DEFINED Qt)
find_package(Qt6 ${MIN_QT_VERSION} COMPONENTS Core CMAKE_FIND_ROOT_PATH_BOTH)
if(TARGET Qt6::Core)
set(Qt Qt6)
else()
set(Qt Qt5)
endif()
endif()
find_package(${Qt} ${MIN_QT_VERSION} COMPONENTS Core Concurrent Network REQUIRED CMAKE_FIND_ROOT_PATH_BOTH)
include(Compat)

if(QT6)
list(APPEND QT_COMPONENTS StateMachine)
endif()
set(Qt Qt6)
find_package(${Qt} ${MIN_QT_VERSION} COMPONENTS Core Concurrent Network StateMachine REQUIRED CMAKE_FIND_ROOT_PATH_BOTH)
set(QT_VERSION "${Qt6Core_VERSION}")

if(NOT CONTAINER_SDK)
list(APPEND QT_COMPONENTS LinguistTools)
endif()

if(NOT INTEGRATED_SDK)
list(APPEND QT_COMPONENTS Svg WebSockets Qml Quick QuickControls2 QuickTemplates2 QmlWorkerScript)

if(NOT DESKTOP AND NOT QT6)
list(APPEND QT_COMPONENTS QuickShapes)
endif()
if(QT6)
list(APPEND QT_COMPONENTS ShaderTools)
endif()
list(APPEND QT_COMPONENTS Svg WebSockets Qml Quick QuickControls2 QuickTemplates2 QmlWorkerScript ShaderTools)
endif()

if(DESKTOP AND NOT INTEGRATED_SDK)
list(APPEND QT_COMPONENTS Widgets)
endif()

if(ANDROID OR IOS OR WINDOWS_STORE OR (QT6 AND CMAKE_BUILD_TYPE STREQUAL "DEBUG"))
if(ANDROID OR IOS OR WINDOWS_STORE OR CMAKE_BUILD_TYPE STREQUAL "DEBUG")
list(APPEND QT_COMPONENTS Nfc)
endif()

Expand Down Expand Up @@ -98,7 +76,7 @@ if(MINGW AND NOT CMAKE_CROSSCOMPILING)
set(CMAKE_CROSSCOMPILING ON)
endif()

set(MIN_OPENSSL_VERSION 1.1)
set(MIN_OPENSSL_VERSION 1.1.1)
find_package(OpenSSL ${MIN_OPENSSL_VERSION} REQUIRED)

if(tmp_crosscompile_enabled)
Expand Down
15 changes: 7 additions & 8 deletions cmake/Packaging.cmake
Expand Up @@ -27,6 +27,8 @@ if(ANDROID AND INTEGRATED_SDK)
string(TOLOWER "${PROJECT_NAME}-" AAR_PROJECT_NAME)
string(REGEX REPLACE "[0-9]*-" "-" AAR_PROJECT_NAME "${AAR_PROJECT_NAME}")
set(FILENAME ${AAR_PROJECT_NAME}${PACKAGE_VERSION})
elseif(IOS AND INTEGRATED_SDK)
set(FILENAME ${PROJECT_NAME}2-${PACKAGE_VERSION})
else()
set(FILENAME ${PROJECT_NAME}-${PACKAGE_VERSION})
endif()
Expand All @@ -39,7 +41,7 @@ set(CPACK_PACKAGE_VERSION_PATCH ${PROJECT_VERSION_PATCH})
set(CPACK_PACKAGE_VERSION_TWEAK ${PROJECT_VERSION_TWEAK})
set(CPACK_PACKAGE_VENDOR "${VENDOR}")
set(CPACK_PACKAGE_CONTACT "support@ausweisapp.de")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Governikus AusweisApp2")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "AusweisApp")
set(CPACK_PACKAGE_FILE_NAME ${FILENAME})
set(CPACK_PACKAGE_INSTALL_DIRECTORY ${PROJECT_NAME})
if(NOT CONTAINER_SDK)
Expand Down Expand Up @@ -92,7 +94,7 @@ list(APPEND CPACK_SOURCE_IGNORE_FILES "\\\\.project")
list(APPEND CPACK_SOURCE_IGNORE_FILES "\\\\.cproject")
list(APPEND CPACK_SOURCE_IGNORE_FILES "\\\\.reviewboardrc")
list(APPEND CPACK_SOURCE_IGNORE_FILES ".*\\\\.internal\\\\.cmake$")
list(APPEND CPACK_SOURCE_IGNORE_FILES "utils")
list(APPEND CPACK_SOURCE_IGNORE_FILES "${CMAKE_SOURCE_DIR}/utils/")

set(CPACK_MONOLITHIC_INSTALL true)

Expand Down Expand Up @@ -144,10 +146,7 @@ elseif(APPLE)
set(CPACK_DMG_BACKGROUND_IMAGE ${RESOURCES_DIR}/images/macos/dmg_background.png)
set(CPACK_DMG_SLA_DIR ${MACOS_PACKAGING_DIR}/sla)
set(CPACK_DMG_SLA_LANGUAGES English German)

# We can not generate the DS_STORE on each build since jenkins runs headless
#set(CPACK_DMG_DS_STORE_SETUP_SCRIPT ${MACOS_PACKAGING_DIR}/prepare-ds_store.applescript)
set(CPACK_DMG_DS_STORE ${MACOS_PACKAGING_DIR}/DS_Store)
set(CPACK_DMG_DS_STORE_SETUP_SCRIPT ${MACOS_PACKAGING_DIR}/prepare-ds_store.applescript)

elseif(ANDROID)
find_program(androiddeployqt androiddeployqt CMAKE_FIND_ROOT_PATH_BOTH)
Expand Down Expand Up @@ -218,15 +217,15 @@ elseif(ANDROID)
set(ANDROID_FILE dist-release.aar)
elseif(APK_SIGN_KEYSTORE AND APK_SIGN_KEYSTORE_ALIAS AND APK_SIGN_KEYSTORE_PSW)
message(STATUS "Release build will be signed using: ${APK_SIGN_KEYSTORE} | Alias: ${APK_SIGN_KEYSTORE_ALIAS}")
set(DEPLOY_CMD_SIGN --sign ${APK_SIGN_KEYSTORE} ${APK_SIGN_KEYSTORE_ALIAS} --storepass ${APK_SIGN_KEYSTORE_PSW} --digestalg SHA-256 --sigalg SHA256WithRSA)
set(DEPLOY_CMD_SIGN ${DEPLOY_CMD_SIGN} --sign ${APK_SIGN_KEYSTORE} ${APK_SIGN_KEYSTORE_ALIAS} --storepass ${APK_SIGN_KEYSTORE_PSW} --digestalg SHA-256 --sigalg SHA256WithRSA)
set(ANDROID_FILE dist-release-signed.apk)
else()
set(ANDROID_FILE dist-release-unsigned.apk)
message(WARNING "Cannot sign release build! Set APK_SIGN_KEYSTORE, APK_SIGN_KEYSTORE_ALIAS and APK_SIGN_KEYSTORE_PSW!")
endif()
endif()

set(DEPLOY_CMD ${androiddeployqt} --verbose --gradle --input ${ANDROID_DEPLOYMENT_SETTINGS} --android-platform ${ANDROID_TARGET_SDK_VERSION} --output ${CMAKE_INSTALL_PREFIX} ${DEPLOY_CMD_SIGN})
set(DEPLOY_CMD ${androiddeployqt} --verbose --gradle --input ${ANDROID_DEPLOYMENT_SETTINGS} --android-platform android-${ANDROID_TARGET_SDK_VERSION} --output ${CMAKE_INSTALL_PREFIX} ${DEPLOY_CMD_SIGN})
set(SOURCE_ANDROID_FILE ${CMAKE_INSTALL_PREFIX}/build/outputs/${ANDROID_FILE_EXT})

if(NOT INTEGRATED_SDK)
Expand Down
47 changes: 47 additions & 0 deletions cmake/Policies.cmake
@@ -0,0 +1,47 @@
if(POLICY CMP0020)
cmake_policy(SET CMP0020 NEW)
endif()

if(POLICY CMP0023)
cmake_policy(SET CMP0023 NEW)
endif()

if(POLICY CMP0046)
cmake_policy(SET CMP0046 NEW)
endif()

if(POLICY CMP0048)
cmake_policy(SET CMP0048 NEW)
endif()

if(POLICY CMP0054)
cmake_policy(SET CMP0054 NEW)
endif()

if(POLICY CMP0063)
cmake_policy(SET CMP0063 NEW)
endif()

if(POLICY CMP0071)
cmake_policy(SET CMP0071 NEW)
endif()

if(POLICY CMP0072)
cmake_policy(SET CMP0072 NEW)
endif()

if(POLICY CMP0074)
cmake_policy(SET CMP0074 NEW)
endif()

if(POLICY CMP0076)
cmake_policy(SET CMP0076 NEW)
endif()

if(POLICY CMP0092)
cmake_policy(SET CMP0092 NEW)
endif()

if(POLICY CMP0099)
cmake_policy(SET CMP0099 NEW)
endif()
2 changes: 1 addition & 1 deletion cmake/SignFiles.cmake.in
@@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.1.0)
cmake_minimum_required(VERSION 3.19.0)

if(APPLE AND NOT IOS)
string(FIND "${CMAKE_BINARY_DIR}" "DragNDrop" IS_DMG)
Expand Down
74 changes: 2 additions & 72 deletions cmake/Tools.cmake
Expand Up @@ -118,7 +118,7 @@ endif()
find_program(PYTHON python CMAKE_FIND_ROOT_PATH_BOTH)
if(PYTHON)
list(APPEND GLOB_JSON ${RESOURCES_DIR}/updatable-files/*.json)
list(APPEND GLOB_JSON ${RESOURCES_DIR}/json-schemas/*.json)
list(APPEND GLOB_JSON ${TEST_DIR}/json/*.json)
file(GLOB_RECURSE JSON_FILES ${GLOB_JSON})

foreach(JSON_FILE ${JSON_FILES})
Expand Down Expand Up @@ -154,7 +154,7 @@ endfunction()

find_program(INKSCAPE inkscape CMAKE_FIND_ROOT_PATH_BOTH)
if(INKSCAPE)
set(BACKGROUND_COLOR "#dcebf6")
set(BACKGROUND_COLOR "#ffffff")

add_custom_target(npaicons.general
COMMAND ${INKSCAPE} npa_release.svg -d 320 -y 0 -o npa.png
Expand All @@ -165,33 +165,6 @@ if(INKSCAPE)
COMMAND ${INKSCAPE} playstore_preview.svg -w 512 -h 512 -y 0 -o playstore_preview.png
WORKING_DIRECTORY ${RESOURCES_DIR}/images/android)

add_custom_target(npaicons.android.legacy
COMMAND ${INKSCAPE} npa_release.svg -d 120 -y 0 -o android/ldpi/npa.png
COMMAND ${INKSCAPE} npa_release.svg -d 160 -y 0 -o android/mdpi/npa.png
COMMAND ${INKSCAPE} npa_release.svg -d 240 -y 0 -o android/hdpi/npa.png
COMMAND ${INKSCAPE} npa_release.svg -d 320 -y 0 -o android/xhdpi/npa.png
COMMAND ${INKSCAPE} npa_release.svg -d 480 -y 0 -o android/xxhdpi/npa.png
COMMAND ${INKSCAPE} npa_release.svg -d 640 -y 0 -o android/xxxhdpi/npa.png
WORKING_DIRECTORY ${RESOURCES_DIR}/images)

add_custom_target(npaicons.android.legacy.beta
COMMAND ${INKSCAPE} npa_beta.svg -d 120 -y 0 -o android/ldpi/npa_beta.png
COMMAND ${INKSCAPE} npa_beta.svg -d 160 -y 0 -o android/mdpi/npa_beta.png
COMMAND ${INKSCAPE} npa_beta.svg -d 240 -y 0 -o android/hdpi/npa_beta.png
COMMAND ${INKSCAPE} npa_beta.svg -d 320 -y 0 -o android/xhdpi/npa_beta.png
COMMAND ${INKSCAPE} npa_beta.svg -d 480 -y 0 -o android/xxhdpi/npa_beta.png
COMMAND ${INKSCAPE} npa_beta.svg -d 640 -y 0 -o android/xxxhdpi/npa_beta.png
WORKING_DIRECTORY ${RESOURCES_DIR}/images)

add_custom_target(npaicons.android.legacy.preview
COMMAND ${INKSCAPE} npa_preview.svg -d 120 -y 0 -o android/ldpi/npa_preview.png
COMMAND ${INKSCAPE} npa_preview.svg -d 160 -y 0 -o android/mdpi/npa_preview.png
COMMAND ${INKSCAPE} npa_preview.svg -d 240 -y 0 -o android/hdpi/npa_preview.png
COMMAND ${INKSCAPE} npa_preview.svg -d 320 -y 0 -o android/xhdpi/npa_preview.png
COMMAND ${INKSCAPE} npa_preview.svg -d 480 -y 0 -o android/xxhdpi/npa_preview.png
COMMAND ${INKSCAPE} npa_preview.svg -d 640 -y 0 -o android/xxxhdpi/npa_preview.png
WORKING_DIRECTORY ${RESOURCES_DIR}/images)

add_custom_target(npaicons.android.adaptive.background
COMMAND ${INKSCAPE} adaptive_background.svg -d 120 -y 0 -o ldpi/background_npa.png
COMMAND ${INKSCAPE} adaptive_background.svg -d 160 -y 0 -o mdpi/background_npa.png
Expand Down Expand Up @@ -333,9 +306,6 @@ if(INKSCAPE)
add_custom_target(npaicons DEPENDS
npaicons.general
npaicons.android.playstore
npaicons.android.legacy
npaicons.android.legacy.beta
npaicons.android.legacy.preview
npaicons.android.adaptive.background
npaicons.android.adaptive.foreground
npaicons.android.adaptive.foreground.beta
Expand All @@ -359,11 +329,6 @@ if(INKSCAPE)
COMMAND ${INKSCAPE} img_Simulator.svg -w 512 -h 512 -y 0 -o ${RESOURCES_DIR}/updatable-files/reader/img_Simulator.png
COMMAND ${INKSCAPE} img_Simulator_mit_ausweis.svg -w 512 -h 512 -y 0 -o ${RESOURCES_DIR}/updatable-files/reader/img_Simulator_mit_ausweis.png
WORKING_DIRECTORY ${RESOURCES_DIR}/images/reader/src)

add_custom_target(tutorialimages
COMMAND ${INKSCAPE} phone_screen_de.svg -w 585 -h 622 -y 0 -o ${RESOURCES_DIR}/images/tutorial/phone_screen_de.png
COMMAND ${INKSCAPE} phone_screen_en.svg -w 585 -h 622 -y 0 -o ${RESOURCES_DIR}/images/tutorial/phone_screen_en.png
WORKING_DIRECTORY ${RESOURCES_DIR}/images/tutorial/src)
endif()

find_program(PNGQUANT pngquant CMAKE_FIND_ROOT_PATH_BOTH)
Expand All @@ -374,33 +339,6 @@ if(PNGQUANT)
COMMAND ${PNGQUANT_CMD} npa.png -- npa.png
WORKING_DIRECTORY ${RESOURCES_DIR}/images)

add_custom_target(pngquant.android.legacy
COMMAND ${PNGQUANT_CMD} ldpi/npa.png -- ldpi/npa.png
COMMAND ${PNGQUANT_CMD} mdpi/npa.png -- mdpi/npa.png
COMMAND ${PNGQUANT_CMD} hdpi/npa.png -- hdpi/npa.png
COMMAND ${PNGQUANT_CMD} xhdpi/npa.png -- xhdpi/npa.png
COMMAND ${PNGQUANT_CMD} xxhdpi/npa.png -- xxhdpi/npa.png
COMMAND ${PNGQUANT_CMD} xxxhdpi/npa.png -- xxxhdpi/npa.png
WORKING_DIRECTORY ${RESOURCES_DIR}/images/android)

add_custom_target(pngquant.android.legacy.beta
COMMAND ${PNGQUANT_CMD} ldpi/npa_beta.png -- ldpi/npa_beta.png
COMMAND ${PNGQUANT_CMD} mdpi/npa_beta.png -- mdpi/npa_beta.png
COMMAND ${PNGQUANT_CMD} hdpi/npa_beta.png -- hdpi/npa_beta.png
COMMAND ${PNGQUANT_CMD} xhdpi/npa_beta.png -- xhdpi/npa_beta.png
COMMAND ${PNGQUANT_CMD} xxhdpi/npa_beta.png -- xxhdpi/npa_beta.png
COMMAND ${PNGQUANT_CMD} xxxhdpi/npa_beta.png -- xxxhdpi/npa_beta.png
WORKING_DIRECTORY ${RESOURCES_DIR}/images/android)

add_custom_target(pngquant.android.legacy.preview
COMMAND ${PNGQUANT_CMD} ldpi/npa_preview.png -- ldpi/npa_preview.png
COMMAND ${PNGQUANT_CMD} mdpi/npa_preview.png -- mdpi/npa_preview.png
COMMAND ${PNGQUANT_CMD} hdpi/npa_preview.png -- hdpi/npa_preview.png
COMMAND ${PNGQUANT_CMD} xhdpi/npa_preview.png -- xhdpi/npa_preview.png
COMMAND ${PNGQUANT_CMD} xxhdpi/npa_preview.png -- xxhdpi/npa_preview.png
COMMAND ${PNGQUANT_CMD} xxxhdpi/npa_preview.png -- xxxhdpi/npa_preview.png
WORKING_DIRECTORY ${RESOURCES_DIR}/images/android)

add_custom_target(pngquant.android.adaptive.background
COMMAND ${PNGQUANT_CMD} ldpi/background_npa.png -- ldpi/background_npa.png
COMMAND ${PNGQUANT_CMD} mdpi/background_npa.png -- mdpi/background_npa.png
Expand Down Expand Up @@ -541,9 +479,6 @@ if(PNGQUANT)

add_custom_target(pngquant DEPENDS
pngquant.general
pngquant.android.legacy
pngquant.android.legacy.beta
pngquant.android.legacy.preview
pngquant.android.adaptive.background
pngquant.android.adaptive.foreground
pngquant.android.adaptive.foreground.beta
Expand All @@ -567,11 +502,6 @@ if(PNGQUANT)
COMMAND ${PNGQUANT_CMD} img_Simulator.png -- img_Simulator.png
COMMAND ${PNGQUANT_CMD} img_Simulator_mit_ausweis.png -- img_Simulator_mit_ausweis.png
WORKING_DIRECTORY ${RESOURCES_DIR}/updatable-files/reader)

add_custom_target(pngquant.tutorialimages
COMMAND ${PNGQUANT_CMD} phone_screen_de.png -- phone_screen_de.png
COMMAND ${PNGQUANT_CMD} phone_screen_en.png -- phone_screen_en.png
WORKING_DIRECTORY ${RESOURCES_DIR}/images/tutorial)
endif()

find_program(CONVERT convert CMAKE_FIND_ROOT_PATH_BOTH)
Expand Down
2 changes: 1 addition & 1 deletion cmake/Translation.cmake.in
@@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.1.0)
cmake_minimum_required(VERSION 3.5.0)

foreach(file @TRANSLATION_FILES@)
message(STATUS "Adding DvcsAttributes to ${file}")
Expand Down
4 changes: 2 additions & 2 deletions cmake/android.toolchain.cmake
Expand Up @@ -55,8 +55,8 @@ READ_REVISION(ANDROID_NDK_REVISION ".*Revision = ([0-9|\\.]+)" "${CMAKE_ANDROID_

set(CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION clang)
set(CMAKE_SYSTEM_NAME Android)
set(CMAKE_SYSTEM_VERSION 24)
set(ANDROID_TARGET_SDK_VERSION 33)
set(CMAKE_SYSTEM_VERSION 26)
set(ANDROID_TARGET_SDK_VERSION 34)
set(CMAKE_ANDROID_STL_TYPE c++_shared)

if(NOT CMAKE_ANDROID_ARCH_ABI)
Expand Down
2 changes: 1 addition & 1 deletion cmake/iOS.bundles.cmake.in
Expand Up @@ -14,7 +14,7 @@ function(SELF_GENERATED)
endfunction()

if(INTEGRATED_SDK)
set(Bundle @PROJECT_NAME@.framework)
set(Bundle @PROJECT_NAME@2.framework)
else()
set(Bundle @PROJECT_NAME@.app)
endif()
Expand Down
2 changes: 1 addition & 1 deletion cmake/iOS.toolchain.cmake
Expand Up @@ -6,7 +6,7 @@ if(NOT CMAKE_OSX_ARCHITECTURES)
set(CMAKE_OSX_ARCHITECTURES arm64)
endif()

set(CMAKE_OSX_DEPLOYMENT_TARGET 13.0)
set(CMAKE_OSX_DEPLOYMENT_TARGET 14.0)

set(UNIX True)
set(APPLE True)
Expand Down
12 changes: 6 additions & 6 deletions cmake/prepare_sonarqube_env.cmake
Expand Up @@ -13,20 +13,20 @@ message(STATUS "Use PACKAGES_DIR: ${PACKAGES_DIR}")
set(BUILDWRAPPER_ZIP_NAME build-wrapper-linux-x86.zip)
set(BUILDWRAPPER_URL https://sonar.govkg.de/static/cpp/${BUILDWRAPPER_ZIP_NAME})

set(SONARSCANNERCLI_VERSION 4.8.0.2856-linux) # https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/
set(SONARSCANNERCLI_VERSION 5.0.1.3006-linux) # https://binaries.sonarsource.com/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 45a9a54dfe5f58b554e9b40ad3becbf9871a4eddb1c2892b67cf191cdd891754)
set(SONARSCANNERCLI_HASH 350dbdb517c10fcb3ce70425db95c415b313cad7296c407d416d88f3d50121f8)

set(DEPENDENCYCHECK_VERSION 8.1.0) # https://github.com/jeremylong/DependencyCheck/releases
set(DEPENDENCYCHECK_VERSION 8.4.0) # https://github.com/jeremylong/DependencyCheck/releases
set(DEPENDENCYCHECK_ZIP_NAME dependency-check-${DEPENDENCYCHECK_VERSION}-release.zip)
set(DEPENDENCYCHECK_URL https://github.com/jeremylong/DependencyCheck/releases/download/v${DEPENDENCYCHECK_VERSION}/${DEPENDENCYCHECK_ZIP_NAME})
set(DEPENDENCYCHECK_HASH a87231139f7a3de8e9fec2fa4353a9b21bd0397a4540fa24e91a8716e9e6e74e)
set(DEPENDENCYCHECK_HASH 937a6bf8ced9d8494767082c1f588f26ea379324cb089dabb045321e8b0ab01a)

set(MARIADB_CONNECTOR_VERSION 3.1.2)
set(MARIADB_CONNECTOR_VERSION 3.2.0)
set(MARIADB_CONNECTOR_ZIP_NAME mariadb-java-client-${MARIADB_CONNECTOR_VERSION}.jar)
set(MARIADB_CONNECTOR_URL https://downloads.mariadb.com/Connectors/java/connector-java-${MARIADB_CONNECTOR_VERSION}/${MARIADB_CONNECTOR_ZIP_NAME})
set(MARIADB_CONNECTOR_HASH aaec1ad348d030a65b25c93c65cdaf472bf8b4b6b314b965e5ba13aec81bc622)
set(MARIADB_CONNECTOR_HASH adf9df10bc9b2a137def36d6a495812258f430d4a8f7946727c61558e6c73941)

set(SONARQUBETOOLS_DIR ${CMAKE_BINARY_DIR}/sonarqubetools)

Expand Down
6 changes: 3 additions & 3 deletions cmake/tests/openssl.cpp
Expand Up @@ -27,15 +27,15 @@

int main()
{
// It is required that Qt and AusweisApp2 uses the library and the same version.
// It is required that Qt and AusweisApp uses the library and the same version.
// Also this binary will crash if your libraries aren't binary compatible. For example
// this occurs if you link Qt against OpenSSL and the AusweisApp2 against LibreSSL.
// this occurs if you link Qt against OpenSSL and the AusweisApp against LibreSSL.
if (QSslSocket::sslLibraryVersionString() != QLatin1String(OpenSSL_version(OPENSSL_VERSION)))
{
return 1;
}

// The AusweisApp2 requires at least one of an RSA-PSK cipher. LibreSSL and OpenSSL <= 1.0.2 does not support that!
// The AusweisApp requires at least one of an RSA-PSK cipher. LibreSSL and OpenSSL <= 1.0.2 does not support that!
const QStringList ciphers({"RSA-PSK-AES256-GCM-SHA384", "RSA-PSK-AES256-CBC-SHA384", "RSA-PSK-AES128-GCM-SHA256", "RSA-PSK-AES128-CBC-SHA256", "RSA-PSK-AES256-CBC-SHA"});
return std::any_of(ciphers.constBegin(), ciphers.constEnd(), [](const QString& pCipherName)
{
Expand Down
38 changes: 19 additions & 19 deletions docs/AusweisApp2.1 → docs/AusweisApp.1
@@ -1,17 +1,17 @@
.TH AusweisApp2 1
.TH AusweisApp 1
.SH NAME
AusweisApp2 \- Official authentication app for German ID cards and residence permits
AusweisApp \- Official authentication app for German ID cards and residence permits
.SH SYNOPSIS

AusweisApp2 [-h|--help]
AusweisApp [-h|--help]
.br
AusweisApp2 [--help-all]
AusweisApp [--help-all]
.br
AusweisApp2 [-v|--version]
AusweisApp [-v|--version]
.br
AusweisApp2 [--show]
AusweisApp [--show]
.br
AusweisApp2
AusweisApp
[--keep]
[--no-logfile]
[--no-loghandler]
Expand All @@ -22,7 +22,7 @@ AusweisApp2
[--address \fI\,ADDRESS\/\fR]

.SH DESCRIPTION
AusweisApp2 allows you to authenticate yourself against websites via your German
AusweisApp allows you to authenticate yourself against websites via your German
ID card and residence permits.

You will need:
Expand All @@ -32,13 +32,13 @@ You will need:
* A compatible NFC device (most NFC readers should work, NFC-enabled phones can
* also be used)
.br
* AusweisApp2
* AusweisApp
.br
* A browser
.br
* A website that supports authentication via German ID card

When you visit such a website, AusweisApp2 will be triggered and will ask you if
When you visit such a website, AusweisApp will be triggered and will ask you if
you want to authenticate against the website.

This program will provide a local webserver for your browser to interface against.
Expand All @@ -60,13 +60,13 @@ Displays version information.
.TP
.B --keep
.br
By default, AusweisApp2 writes a log to a file matching
${TMP}/AusweisApp2.*.log. When the program terminates, it will be deleted. This
By default, AusweisApp writes a log to a file matching
${TMP}/AusweisApp.*.log. When the program terminates, it will be deleted. This
setting prevents deletion.

.TP
.B --no-logfile
Suppress writing a log file to ${TMP}/AusweisApp2.*.log. Logs will still be
Suppress writing a log file to ${TMP}/AusweisApp.*.log. Logs will still be
written to STDOUT.

.TP
Expand All @@ -86,25 +86,25 @@ Disable system proxy.
This option allows multiple values.
- "qml" will start the program with a visible UI.
- "websocket" will let it start in the background as an SDK. This is only useful when integrating
AusweisApp2 into other programs.
AusweisApp into other programs.
- "webservice" starts listening on given port/address.

Default is "qml,webservice,websocket".

.TP
.B --port \fI\,PORT\/\fR
Change the listening port for the WebSocket. Default is 24727. Selecting "0" is
a special case. AusweisApp2 will then select a random port and write the port
number to a file in ${TMP}/AusweisApp2.<PID>.port.
a special case. AusweisApp will then select a random port and write the port
number to a file in ${TMP}/AusweisApp.<PID>.port.

.TP
.B --address \fI\,ADDRESS\/\fR
Use given addresses for interface binding. Normally AusweisApp2 is bound to
Use given addresses for interface binding. Normally AusweisApp is bound to
localhost only as it is a security requirement. Useful for testing only.
This option allows multiple values.

.SH "RETURN VALUE"
AusweisApp2 will return 0 when successfully terminated.
AusweisApp will return 0 when successfully terminated.
.SH ENVIRONMENT
.TP
.B QT_QPA_PLATFORM={ wayland|X11 }
Expand All @@ -113,7 +113,7 @@ debugging purposes. XDG_SESSION_TYPE will be ignored on gnome.

.SH FILES

\fI~/.config/AusweisApp2_CE/AusweisApp2.conf\fR
\fI~/.config/AusweisApp_CE/AusweisApp2.conf\fR
File path where the user config is saved.

.SH CAVEATS
Expand Down
4 changes: 1 addition & 3 deletions docs/CMakeLists.txt
Expand Up @@ -3,9 +3,7 @@ if(SPHINX_FOUND)

SPHINX_GEN("${CMAKE_CURRENT_SOURCE_DIR}/sdk" "sdk" BUILDER changes html latex DEFAULT_LANG en)

SPHINX_GEN("${CMAKE_CURRENT_SOURCE_DIR}/installation" "inst" BUILDER changes html latex)

SPHINX_GEN("${CMAKE_CURRENT_SOURCE_DIR}/integration" "inte" BUILDER changes html latex)
SPHINX_GEN("${CMAKE_CURRENT_SOURCE_DIR}/installation" "installation_integration" BUILDER changes html latex)

SPHINX_GEN("${CMAKE_CURRENT_SOURCE_DIR}/failurecodes" "failurecodes" BUILDER changes html latex DEFAULT_LANG en)
else()
Expand Down
12 changes: 8 additions & 4 deletions docs/failurecodes/conf.py.in
Expand Up @@ -41,7 +41,7 @@ source_suffix = '.rst'
master_doc = 'index'

# General information about the project.
project = 'AusweisApp2 Failure Codes'
project = '@PROJECT_NAME@ Failure Codes'
copyright = '2023, Governikus GmbH & Co. KG'
author = 'Governikus GmbH & Co. KG'

Expand Down Expand Up @@ -96,7 +96,7 @@ html_show_copyright = True
html_scaled_image_link = False

# Output file base name for HTML help builder.
htmlhelp_basename = 'AusweisApp2ReleaseNotes'
htmlhelp_basename = '@PROJECT_NAME@ReleaseNotes'

html_context = {
'display_github': False,
Expand All @@ -119,7 +119,7 @@ latex_elements = {
# Additional stuff for the LaTeX preamble.
'preamble': '''
\hypersetup{pdfauthor={Governikus GmbH \& Co. KG},
pdftitle={AusweisApp2},
pdftitle={@PROJECT_NAME@},
pdfsubject={Failure_Codes},
pdfkeywords={failure, codes, sdk, api},
pdfproducer={LaTeX},
Expand All @@ -143,7 +143,7 @@ latex_elements = {
# (source start file, target name, title,
# author, documentclass [howto, manual, or own class]).
latex_documents = [
(master_doc, 'AusweisApp2-@VERSION_DVCS@-Failure-Codes-' + language + '.tex', 'AusweisApp2 Failure Codes',
(master_doc, '@PROJECT_NAME@-@VERSION_DVCS@-Failure-Codes-' + language + '.tex', '@PROJECT_NAME@ Failure Codes',
'Governikus GmbH \& Co. KG', 'howto'),
]

Expand All @@ -166,3 +166,7 @@ latex_show_urls = 'footnote'

# If false, no module index is generated.
#latex_domain_indices = True

rst_epilog = """
.. |AppName| replace:: @PROJECT_NAME@
"""
207 changes: 146 additions & 61 deletions docs/failurecodes/failurecodes.rst

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions docs/failurecodes/index.rst
@@ -1,7 +1,7 @@
.. only:: html

.. image:: ../sdk/Logo_AusweisApp2.png
:alt: AusweisApp2
.. image:: ../sdk/AusweisApp_Logo.svg
:alt: AusweisApp
:align: center
:width: 200pt

Expand Down
4 changes: 2 additions & 2 deletions docs/failurecodes/intro.rst
@@ -1,7 +1,7 @@
Introduction
============
This documentation will list all failure codes that may occur while using the AusweisApp2 or the
AusweisApp2 SDK.
This documentation will list all failure codes that may occur while using the |AppName| or the
|AppName| SDK.
In addition to detailed information on where and why an error occurred, possible solutions are
provided as well.
Furthermore there will be first guidance to prevent many of the causes that will be mentioned.
353 changes: 228 additions & 125 deletions docs/failurecodes/locales/de/LC_MESSAGES/failurecodes.po

Large diffs are not rendered by default.

9 changes: 3 additions & 6 deletions docs/failurecodes/locales/de/LC_MESSAGES/index.po
Expand Up @@ -19,16 +19,13 @@ msgstr ""
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.12.1\n"

msgid "AusweisApp2"
msgid "AusweisApp"
msgstr ""

msgid ".. image:: ../sdk/Logo_AusweisApp2.png"
msgid ".. image:: ../sdk/AusweisApp_Logo.svg"
msgstr ""

msgid "Table of contents"
msgstr "Inhaltsverzeichnis"

#~ msgid ".. image:: Logo_AusweisApp2.png"
#~ msgstr ""

4 changes: 2 additions & 2 deletions docs/failurecodes/locales/de/LC_MESSAGES/intro.po
Expand Up @@ -25,13 +25,13 @@ msgstr "Einführung"

msgid ""
"This documentation will list all failure codes that may occur while using"
" the AusweisApp2 or the AusweisApp2 SDK. In addition to detailed "
" the |AppName| or the |AppName| SDK. In addition to detailed "
"information on where and why an error occurred, possible solutions are "
"provided as well. Furthermore there will be first guidance to prevent "
"many of the causes that will be mentioned."
msgstr ""
"Diese Dokumentation listet alle Fehlercodes auf, die beim Verwenden der "
"AusweisApp2 oder des AusweisApp2-SDK auftreten können. Neben "
"|AppName| oder des |AppName|-SDK auftreten können. Neben "
"detaillierten Informationen über das \"Wo\" und \"Warum\" bietet sie auch"
" mögliche Lösungen an. Darüber hinaus gibt es vorab Hilfestellung zur "
"Verhinderung einer Vielzahl der hier beschriebenen Ursachen."
Expand Down
2 changes: 1 addition & 1 deletion docs/installation/CommunicationModel_de.graphml
Expand Up @@ -61,7 +61,7 @@
<y:Geometry height="32.0" width="110.0" x="166.95265436079174" y="97.8883879466967"/>
<y:Fill color="#FFFFFF" transparent="false"/>
<y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="82.333984375" x="13.8330078125" xml:space="preserve" y="6.93359375">AusweisApp2<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="82.333984375" x="13.8330078125" xml:space="preserve" y="6.93359375">AusweisApp<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
<y:Shape type="rectangle"/>
</y:ShapeNode>
</data>
Expand Down
Binary file modified docs/installation/CommunicationModel_de.pdf
Binary file not shown.
2 changes: 1 addition & 1 deletion docs/installation/CommunicationModel_en.graphml
Expand Up @@ -61,7 +61,7 @@
<y:Geometry height="32.0" width="110.0" x="166.95265436079174" y="97.8883879466967"/>
<y:Fill color="#FFFFFF" transparent="false"/>
<y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="82.333984375" x="13.8330078125" xml:space="preserve" y="6.93359375">AusweisApp2<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
<y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="82.333984375" x="13.8330078125" xml:space="preserve" y="6.93359375">AusweisApp<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
<y:Shape type="rectangle"/>
</y:ShapeNode>
</data>
Expand Down
Binary file modified docs/installation/CommunicationModel_en.pdf
Binary file not shown.
151 changes: 100 additions & 51 deletions docs/installation/README.de.rst

Large diffs are not rendered by default.

145 changes: 96 additions & 49 deletions docs/installation/README.en.rst

Large diffs are not rendered by default.

28 changes: 21 additions & 7 deletions docs/installation/conf.py.in
Expand Up @@ -41,7 +41,7 @@ source_suffix = '.rst'
master_doc = 'index'

# General information about the project.
project = 'AusweisApp2 Installation'
project = '@PROJECT_NAME@ Erweiterte Dokumentation für Administratoren und Entwickler'
copyright = '2018-2023, Governikus GmbH & Co. KG'
author = 'Governikus GmbH & Co. KG'

Expand Down Expand Up @@ -98,7 +98,7 @@ html_show_copyright = True
html_scaled_image_link = False

# Output file base name for HTML help builder.
htmlhelp_basename = 'AusweisApp2Installation'
htmlhelp_basename = '@PROJECT_NAME@InstallationIntegration'

html_context = {
'display_github': False,
Expand All @@ -122,17 +122,25 @@ latex_elements = {
'preamble': '''
\\usepackage{lscape}
\\hypersetup{pdfauthor={Governikus GmbH \& Co. KG},
pdftitle={AusweisApp2},
pdfsubject={Installation},
pdfkeywords={installation},
pdftitle={@PROJECT_NAME@},
pdfsubject={Erweiterte Dokumentation für Administratoren und Entwickler},
pdfkeywords={installation, integration},
pdfproducer={LaTeX},
pdfcreator={Sphinx}
}
''',

# Override tableofcontents
'tableofcontents': '''
\\tableofcontents
% Remove header of tableofcontent
\\makeatletter
\\@starttoc{toc}
\\makeatother
% Only show part title without "Part I"
\\renewcommand{\\thepart}{}
\\renewcommand{\\partname}{}
\\newpage
\\pagestyle{plain}
\\pagenumbering{arabic}
Expand All @@ -146,7 +154,7 @@ latex_elements = {
# (source start file, target name, title,
# author, documentclass [howto, manual, or own class]).
latex_documents = [
(master_doc, 'AusweisApp2-@VERSION_DVCS@-NetInstallation.tex', 'AusweisApp2 Installation',
(master_doc, '@PROJECT_NAME@-@VERSION_DVCS@-NetInstallation_Integration.tex', '@PROJECT_NAME@ \\linebreak Erweiterte Dokumentation für Administratoren und Entwickler',
'Governikus GmbH \& Co. KG', 'howto'),
]

Expand All @@ -169,3 +177,9 @@ latex_show_urls = 'footnote'

# If false, no module index is generated.
#latex_domain_indices = True

latex_toplevel_sectioning = 'part'

rst_epilog = """
.. |AppName| replace:: @PROJECT_NAME@
"""
3 changes: 1 addition & 2 deletions docs/installation/index.rst
Expand Up @@ -6,8 +6,7 @@ Table of contents
\clearpage

.. toctree::
:maxdepth: 3
:caption: Installation
:maxdepth: 5

README.de
README.en
54 changes: 0 additions & 54 deletions docs/integration/README.de.rst

This file was deleted.

52 changes: 0 additions & 52 deletions docs/integration/README.en.rst

This file was deleted.

171 changes: 0 additions & 171 deletions docs/integration/conf.py.in

This file was deleted.

13 changes: 0 additions & 13 deletions docs/integration/index.rst

This file was deleted.

36 changes: 36 additions & 0 deletions docs/releasenotes/2.0.0.rst
@@ -0,0 +1,36 @@
AusweisApp 2.0.0
^^^^^^^^^^^^^^^^

**Releasedatum:** 6. November 2023


Anwender
""""""""
- Umbenennung der AusweisApp2 zu AusweisApp.

- Überarbeitung der grafischen Oberfläche.

- Unterstützung des Dark-Modes.

- Das Querformat wird nun automatisch unterstützt.

- Berücksichtigung der Systemschriftgröße und Systemschriftart.

- Optimierung der Bedienbarkeit der Titelleiste.

- Online-Hilfe, Anbieterliste und Verlauf entfernt.

- PDF-Export-Funktion der Selbstauskunft entfernt.

- macOS Catalina 10.15 wird nicht mehr unterstützt.

- Android 7 wird nicht mehr unterstützt.

- iOS 13 wird nicht mehr unterstützt.


Entwickler
""""""""""
- Aktualisierung von Qt auf die Version 6.5.3.

- Aktualisierung von OpenSSL auf die Version 3.1.4.
2 changes: 1 addition & 1 deletion docs/releasenotes/_themes/appcast/layout.html
Expand Up @@ -2,7 +2,7 @@
<html class="no-js" lang="de">
<head>
<meta charset="utf-8">
<title>AusweisApp2 Release Notes</title>
<title>AusweisApp Release Notes</title>
<style>
.important {
color: red;
Expand Down
43 changes: 8 additions & 35 deletions docs/releasenotes/announce.rst
@@ -1,45 +1,18 @@
Abkündigungen
=============

Mit der Version 1.28.0 der AusweisApp2 wird die Unterstützung
Mit der Version 2.1.0 der AusweisApp wird die Unterstützung
folgender Systeme und Funktionen eingestellt.

- macOS Big Sur 11
- TLS-Schlüssellängen unter 3000 Bit entsprechend TR-03116-4 (ausgenommen EC)


Mit der Version 2.0.0 der AusweisApp wurde die Unterstützung
folgender Systeme und Funktionen eingestellt.

- macOS Catalina 10.15
- Android 7
- iOS 13
- Online-Hilfe
- PDF-Export-Funktion der Selbstauskunft


Mit der Version 1.24.0 der AusweisApp2 wurde die Unterstützung
folgender Systeme und Funktionen eingestellt.

- Windows 7
- Windows 8.1
- Windows 10 älter als Version 1809
- Windows 10 32-Bit-Version
- Android 5.x und 6
- macOS High Sierra 10.13
- macOS Mojave 10.14
- Alte Protokollversion für die Kommunikation mit einem
Smartphone als Kartenleser. Die Verwendung einer AusweisApp2
älter als 1.22.1 ist damit in Kombination mit der 1.24.0
nicht mehr möglich.
- Externes Android SDK. Unterstützt wird nur noch
das als AAR verfügbare integrierte Android SDK.
- Unterstützung von SHA224 bei TLS.


Mit der Version 1.22.0 der AusweisApp2 wurde die Unterstützung
folgender Systeme und Funktionen eingestellt.

- macOS Sierra 10.12
- Vorherige grafische Oberfläche
- Bluetooth (Reiner SCT cyberJack Wave)


Mit der Version 1.20.0 der AusweisApp2 wurde die Unterstützung
folgender Systeme eingestellt.

- OS X 10.11
- x86-Architektur unter Android
9 changes: 1 addition & 8 deletions docs/releasenotes/appcast.rst
Expand Up @@ -4,13 +4,6 @@ Release Notes
.. toctree::
:maxdepth: 1

1.26.7
1.26.6
1.26.5
1.26.4
1.26.3
1.26.2
1.26.1
1.26.0
2.0.0
announce
issues
12 changes: 8 additions & 4 deletions docs/releasenotes/conf.py.in
Expand Up @@ -41,7 +41,7 @@ source_suffix = '.rst'
master_doc = 'index'

# General information about the project.
project = 'AusweisApp2'
project = '@PROJECT_NAME@'
copyright = '2016-2023, Governikus GmbH & Co. KG'
author = 'Governikus GmbH & Co. KG'

Expand Down Expand Up @@ -98,7 +98,7 @@ html_show_copyright = True
html_scaled_image_link = False

# Output file base name for HTML help builder.
htmlhelp_basename = 'AusweisApp2ReleaseNotes'
htmlhelp_basename = '@PROJECT_NAME@ReleaseNotes'

html_context = {
'display_github': False,
Expand All @@ -121,7 +121,7 @@ latex_elements = {
# Additional stuff for the LaTeX preamble.
'preamble': '''
\hypersetup{pdfauthor={Governikus GmbH \& Co. KG},
pdftitle={AusweisApp2},
pdftitle={@PROJECT_NAME@},
pdfsubject={Release Notes},
pdfkeywords={release, notes},
pdfproducer={LaTeX},
Expand All @@ -145,7 +145,7 @@ latex_elements = {
# (source start file, target name, title,
# author, documentclass [howto, manual, or own class]).
latex_documents = [
(master_doc, 'AusweisApp2-@VERSION_DVCS@-ReleaseNotes.tex', 'AusweisApp2 Release Notes',
(master_doc, '@PROJECT_NAME@-@VERSION_DVCS@-ReleaseNotes.tex', '@PROJECT_NAME@ Release Notes',
'Governikus GmbH \& Co. KG', 'howto'),
]

Expand All @@ -168,3 +168,7 @@ latex_show_urls = 'footnote'

# If false, no module index is generated.
#latex_domain_indices = True

rst_epilog = """
.. |AppName| replace:: @PROJECT_NAME@
"""
4 changes: 2 additions & 2 deletions docs/releasenotes/general.rst
@@ -1,7 +1,7 @@
Allgemeines
===========

Die AusweisApp2 ist eine Software, die Sie auf Ihrem Computer installieren, um sich
Die |AppName| ist eine Software, die Sie auf Ihrem Computer installieren, um sich
mit Ihrem Personalausweis bzw. Ihrem elektronischen Aufenthaltstitel oder Ihrer
eID-Karte für Unionsbürger und Angehörige des Europäischen Wirtschaftsraums
(nachfolgend eID-Karte genannt) online auszuweisen.
Expand All @@ -12,5 +12,5 @@ Personalausweis und eID-Anbieter hergestellt werden kann. Sie ermöglicht den
verschlüsselten Datenaustausch zwischen Personalausweis und eID-Dienst.

Die im Auftrag des Bundesinnenministeriums von der Governikus KG entwickelte
AusweisApp2 ist schnell, leistungsstark und unabhängig von dem verwendeten Webbrowser.
|AppName| ist schnell, leistungsstark und unabhängig von dem verwendeten Webbrowser.
Sie steht für die Betriebssysteme Windows, macOS, Android und iOS zur Verfügung.
77 changes: 70 additions & 7 deletions docs/releasenotes/issues.rst
Expand Up @@ -6,14 +6,19 @@ Folgende Fehler und Einschränkungen sind zum Auslieferungszeitpunkt bekannt:
Alle Plattformen
""""""""""""""""

- Eine vollständige Barrierearmut ist zum aktuellen Zeitpunkt nicht
gegeben. Wir arbeiten kontinuierlich an einer Verbesserung.
- Ausgewählte Elemente sind nicht im Hochkontrastmodus erkennbar.
Im "Kontrast Weiß" Modus sind zusätzlich die Radiocontrols nicht sichtbar.

- Einige Animationen/Illustrationen/Icons werden im Hochkontrastmodus nicht
abgebildet.

- Einige Elemente sind im Dark Mode schlecht erkennbar.


Windows / macOS
"""""""""""""""

- Wenn die AusweisApp2 heruntergefahren wird, während eine Authentisierung
- Wenn die |AppName| heruntergefahren wird, während eine Authentisierung
oder eine PIN-Änderung mit einem Komfort-Kartenleser durchgeführt wird, kann
dieser Vorgang erst abgeschlossen werden, wenn der Prozess auch auf dem
Kartenleser beendet wird, oder dieser den Prozess selbstständig wegen einer
Expand All @@ -32,11 +37,20 @@ Windows / macOS
bei der Verwendung einer virtuellen Maschine, zu Darstellungsfehlern in
der Anwendung kommen. Unter Umständen wird kein Fensterinhalt dargestellt.
Dies kann durch das Setzen einer Umgebungsvariablen umgangen werden.
Hierfür muss QT_QUICK_BACKEND=software gesetzt und die AusweisApp2
Hierfür muss QT_QUICK_BACKEND=software gesetzt und die |AppName|
neugestartet werden.

- Die visuelle Hervorhebung des aktiven Elements wird an einigen Stellen
fälschlicherwiese auch aktiviert, wenn die Maus benutzt wurde.
- Der Installationsdialog (bei Installation und auch Deinstallation) richtet
sich nicht nach der Systemsprache.

- Auf macOS kann es vorkommen, dass die Systemsprache von der AusweisApp nicht
erkannt wird.

- Wenn mit einer MSI-Datei ein Update für die AusweisApp durchgeführt wird,
während diese noch läuft, kann es zu einer falschen Fehlermeldung kommen,
dass sie nicht beendet werden konnte.
Die Installation ist dennoch erfolgreich.


Android / iOS
"""""""""""""
Expand All @@ -46,4 +60,53 @@ Android / iOS

- Unter Umständen kommt es zu Stabilitätsproblemen der NFC-Schnittstelle.

- Unter iOS kann derzeit das Hoch- bzw. Querformat nicht geändert werden.
- Unter Android führen einige Änderungen der Systemeinstellungen bei laufender
|AppName| zu einem Absturz. Dazu zählt die Änderung der Systemsprache und
die Änderung des Typs der Navigationsleiste (Gesten / Schaltflächen).

- Unter iOS wird ein Workflow im SDK fälschlicherweise nicht abgebrochen, wenn
das SDK zur Eingabe einer PIN, CAN oder PUK aufgefordert hat aber der Benutzer
den NFC-Scan im Dialog abbricht, bevor das Passwort gesetzt oder ein INTERRUPT
ausgelöst wurde.


Barrierearmut
"""""""""""""

- Eine vollständige Barrierearmut ist zum aktuellen Zeitpunkt nicht
gegeben. Wir arbeiten kontinuierlich an einer Verbesserung.

- Unter Android werden unsichtbare Inhalte vom Screenreader vorgelesen.

- Unter iOS kann der sichtbare Bereich vom Systemfokus abweichen.

- Die aktivierbaren Elemente von eingeklappten Listen können ungewollte
Aktionen auslösen.

- Aktuell sind die Bereiche "Softwarelizenz" und "Release Notes" nicht mit
dem Screenreader ansteuerbar.

- Die Toggle-Elemente, die Hilfeseiten und die Überschriften der Startseite
besitzen zurzeit noch keine Sprachausgabe.

- Die AusweisApp ist aktuell nicht mit dem Screenreader unter iOS einwandfrei
bedienbar.

- Beim angeschlossenen Kartenleser Ausweisvorgang wird im Ausweisvorgang direkt
auf Schritt 2 gesprungen, ohne dass eine entsprechende Sprachausgabe erfolgt.

- Bei der PIN-Eingabe erfolgt auf Android und iOS keine Sprachausgabe bei der
Betätigung der Tasten.

- Es kann vorkommen, dass der Screenreader in einigen Dialogen die Überschriften
nicht vorliest.

- In Texten wird zum Teil auf grafische Elemente hingewiesen, die keine textuelle
Repräsentation desselben Inhalts besitzen.

- Die angeforderten Rechte während eines Ausweisvorgangs werden nicht optimal vom
Screenreader ausgegeben.

- Der Screenreader kann teilweise Informationen an einigen Stellen doppelt ausgeben.

- Bewegte Inhalte können derzeit nicht ausgeschaltet werden.
8 changes: 6 additions & 2 deletions docs/releasenotes/singlehtml.conf.py.in
Expand Up @@ -41,7 +41,7 @@ source_suffix = '.rst'
master_doc = 'appcast'

# General information about the project.
project = 'AusweisApp2'
project = '@PROJECT_NAME@'
copyright = '2016-2023, Governikus GmbH & Co. KG'
author = 'Governikus GmbH & Co. KG'

Expand Down Expand Up @@ -95,7 +95,7 @@ html_show_copyright = True
html_scaled_image_link = False

# Output file base name for HTML help builder.
htmlhelp_basename = 'AusweisApp2ReleaseNotes'
htmlhelp_basename = '@PROJECT_NAME@ReleaseNotes'

html_context = {
'display_github': False,
Expand All @@ -105,3 +105,7 @@ html_context = {
}

html_permalinks = False

rst_epilog = """
.. |AppName| replace:: @PROJECT_NAME@
"""
32 changes: 15 additions & 17 deletions docs/releasenotes/support.rst
Expand Up @@ -2,14 +2,12 @@ Unterstützte Systeme
====================

Folgende Systeme, Browser, Karten und Lesegeräte werden von
der AusweisApp2 unterstützt.
der |AppName| unterstützt.



Betriebssysteme
"""""""""""""""
- macOS 10.15

- macOS 11.0

- macOS 12.0
Expand All @@ -26,9 +24,9 @@ Betriebssysteme

- Windows Server 2022

- Android 7.0 und höher (armeabi-v7a, arm64-v8a)
- Android 8.0 und höher (armeabi-v7a, arm64-v8a)

- iOS 13 und höher
- iOS 14 und höher


Karten
Expand All @@ -48,19 +46,19 @@ Browser
Das BSI hat die Online-Ausweisfunktion als einen Aufruf konzipiert,
der unabhängig vom verwendeten Browser ist. Durch die strikte
Einhaltung der Vorgaben aus den entsprechenden Technischen Richtlinie
des BSI (BSI TR-03124) ist die AusweisApp2 generell browserunabhängig
des BSI (BSI TR-03124) ist die |AppName| generell browserunabhängig
und sollte daher mit allen marktüblichen Browsern verwendet werden können.

Im Rahmen der Qualitätssicherung werden die folgenden Browserversionen
getestet.

- Chrome 115
- Chrome 119

- Firefox 115
- Firefox 119

- Safari 16.5 (macOS)
- Safari 17.0 (macOS)

- Edge 115
- Edge 119



Expand Down Expand Up @@ -98,7 +96,7 @@ https://www.ausweisapp.bund.de/aa2/cardreader

Alle NFC-fähigen Smartphones bzw. Tablets, die die Online-Ausweisfunktion
unterstützen, können als Kartenleser verwendet werden.
Dabei ist es notwendig die mobile AusweisApp2 auf dem jeweiligen Smartphone
Dabei ist es notwendig die mobile |AppName| auf dem jeweiligen Smartphone
zu installieren und zu starten.

Details hierzu befinden sich auf der Homepage:
Expand All @@ -113,18 +111,18 @@ Browser
Das BSI hat die Online-Ausweisfunktion als einen Aufruf konzipiert,
der unabhängig vom verwendeten Browser ist. Durch die strikte
Einhaltung der Vorgaben aus den entsprechenden Technischen Richtlinie
des BSI (BSI TR-03124) ist die AusweisApp2 generell browserunabhängig.
des BSI (BSI TR-03124) ist die |AppName| generell browserunabhängig.
Im mobilen Umfeld ist die Funktionalität jedoch abhängig von der vom
Anbieter umgesetzten Aktivierung. Daher empfehlen wir einen der
folgenden Browser zu verwenden.

- Chrome 115 (iOS/Android)
- Chrome 119 (iOS/Android)

- Firefox 115 (iOS/Android)
- Firefox 119 (iOS/Android)

- Samsung Internet 22 (Android)
- Samsung Internet 23 (Android)

- Safari 16.5 (iOS)
- Safari 17.0 (iOS)


Kartenleser
Expand All @@ -134,5 +132,5 @@ unterstützen. Details hierzu befinden sich auf der Homepage:
https://www.ausweisapp.bund.de/aa2/mobile-devices

Ebenfalls ist es möglich ein weiteres Smartphone als Kartenleser zu verwenden.
Dabei ist es notwendig die mobile AusweisApp2 auf dem jeweiligen Smartphone zu
Dabei ist es notwendig die mobile |AppName| auf dem jeweiligen Smartphone zu
installieren und zu starten.
8 changes: 8 additions & 0 deletions docs/releasenotes/versions.rst
@@ -1,6 +1,14 @@
Versionen
=========

Versionszweig 2.0
-----------------
.. toctree::
:maxdepth: 1

2.0.0


Versionszweig 1.26
------------------
.. toctree::
Expand Down
845 changes: 845 additions & 0 deletions docs/sdk/AusweisApp_Logo.svg
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed docs/sdk/Logo_AusweisApp2.png
Binary file not shown.
58 changes: 29 additions & 29 deletions docs/sdk/android.rst
@@ -1,15 +1,15 @@
Android
=======
This chapter deals with the Android specific properties of the AusweisApp2 SDK.
The AusweisApp2 core is encapsulated into an **Android service** which is
This chapter deals with the Android specific properties of the |AppName| SDK.
The |AppName| core is encapsulated into an **Android service** which is
running in the background without a user interface. This service is interfaced
via an Android specific interprocess communication (IPC) mechanism. The basics
of this mechanism - the **Android Interface Definition Language** (AIDL) -
are introduced in the following section. Subsequent sections deal with the
SDK interface itself and explain which steps are necessary in order to
communicate with the AusweisApp2 SDK.
communicate with the |AppName| SDK.

The AusweisApp2 is available as an AAR package that can automatically
The |AppName| is available as an AAR package that can automatically
be fetched by Android's default build system **gradle**.

.. important::
Expand All @@ -22,14 +22,14 @@ be fetched by Android's default build system **gradle**.
This can be checked via the Android API methods **getMaxTransceiveLength()**
and **isExtendedLengthApduSupported()**.

https://developer.android.com/reference/android/nfc/tech/NfcA
https://developer.android.com/reference/android/nfc/tech/IsoDep
| https://developer.android.com/reference/android/nfc/tech/NfcA
| https://developer.android.com/reference/android/nfc/tech/IsoDep


SDK
---
The AusweisApp2 SDK is distributed as an AAR package that contains
The |AppName| SDK is distributed as an AAR package that contains
native **arm64-v8a** libraries only.
The AAR package is available in the default repository of Android.
The following listing shows the required **mavenCentral** in **build.gradle**.
Expand All @@ -43,9 +43,9 @@ The following listing shows the required **mavenCentral** in **build.gradle**.
}
The AusweisApp2 SDK will be fetched automatically as a dependency by
The |AppName| SDK will be fetched automatically as a dependency by
your **app/build.gradle** file.
It is recommended to always use the latest version (|version|) of AusweisApp2.
It is recommended to always use the latest version (|version|) of |AppName|.

.. code-block:: groovy
Expand All @@ -71,7 +71,7 @@ It is recommended to always use the latest version (|version|) of AusweisApp2.
App Bundle
^^^^^^^^^^

The AusweisApp2 SDK uses native libraries which need to be extracted when
The |AppName| SDK uses native libraries which need to be extracted when
used in an App Bundle, otherwise the SDK will not work correctly.

Add the following statement to your app's build.gradle file:
Expand All @@ -84,30 +84,30 @@ Add the following statement to your app's build.gradle file:
Logging
^^^^^^^

The AusweisApp2 SDK uses default logging of Android and has its own log file.
The |AppName| SDK uses default logging of Android and has its own log file.
It is **recommended** to collect that log file if an error occurs in
your application to receive better support.

The log file is in your application path:

.. code-block:: text
/data/data/your.application.name/files/AusweisApp2.XXXXXX.log
/data/data/your.application.name/files/AusweisApp.XXXXXX.log
The *XXXXXX* characters will be replaced by an automatically generated
portion of the filename to avoid conflicts with previous instances.

A new log file will be created for each new instance of the AusweisApp2 and
A new log file will be created for each new instance of the |AppName| and
will be deleted after a correct shutdown.
In case of old or multiple log files, it is highly probable that the
previous instance crashed.

The AusweisApp2 deletes any log files that are older than 14 days.
The |AppName| deletes any log files that are older than 14 days.


Initialization of the Android Application
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The AusweisApp2 SDK creates a fork of the Android "main" Application if started.
The |AppName| SDK creates a fork of the Android "main" Application if started.
Due to this, the Application is instantiated a second time. Thus, it must
ensure that any initialization (e.g. Firebase connections) is only carried out
once. To do so the following snippet may prove useful:
Expand Down Expand Up @@ -162,7 +162,7 @@ The Android SDK generates the necessary interface implementations from supplied
AIDL files in order to perform IPC, as if this function had been called directly
in the current process.

In order to interact with the AusweisApp2 SDK there are two AIDL interfaces.
In order to interact with the |AppName| SDK there are two AIDL interfaces.
The first one is given to the client application by the SDK and allows the
client to establish a session with the SDK,
to send JSON commands to the SDK and to pass discovered NFC tags to the SDK.
Expand Down Expand Up @@ -216,14 +216,14 @@ Callback
Background service
------------------
The AusweisApp2 SDK is an embedded background service in your own application.
The |AppName| SDK is an embedded background service in your own application.


.. _android_binding_service:

Binding to the service
^^^^^^^^^^^^^^^^^^^^^^
In order to start the AusweisApp2 SDK it is necessary to bind to the
In order to start the |AppName| SDK it is necessary to bind to the
Android service supplied by the SDK.
This binding fulfils two purposes:

Expand Down Expand Up @@ -280,13 +280,13 @@ methods are invoked by Android on service connection and disconnection.
Bind service to raw connection
""""""""""""""""""""""""""""""
In order to perform the actual binding a directed Intent, which identifies
the AusweisApp2 SDK, is created.
the |AppName| SDK, is created.
This Intent is sent to the Android API along with the ServiceConnection
created above. This API call either starts up the SDK if it is the
first client, or connects to the running SDK instance if there is already
another client bound.

You need to pass your own package name as the AusweisApp2 SDK is a background
You need to pass your own package name as the |AppName| SDK is a background
service of your application.


Expand Down Expand Up @@ -315,7 +315,7 @@ service of your application.

Initializing the AIDL connection
""""""""""""""""""""""""""""""""
Once the Android service of the AusweisApp2 SDK is successfully started
Once the Android service of the |AppName| SDK is successfully started
and bound to by the client,
the Android system calls the onServiceConnected method of the ServiceConnection
created and supplied above.
Expand Down Expand Up @@ -369,9 +369,9 @@ The example below stores this instance in the member variable mSdk.

.. _android_create_session:

Create session to AusweisApp2
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Once your client is bound to the AusweisApp2 SDK service and you have initialized
Create session to |AppName|
^^^^^^^^^^^^^^^^^^^^^^^^^^^
Once your client is bound to the |AppName| SDK service and you have initialized
the AIDL IPC mechanism, you are ready to use the actual SDK API.

Since the Android system does not allow to limit the number of clients which
Expand Down Expand Up @@ -460,7 +460,7 @@ and establishing a session.

Send command
""""""""""""
In order to send a JSON command to the AusweisApp2 SDK, you need to invoke
In order to send a JSON command to the |AppName| SDK, you need to invoke
the **send** function of your instance of **IAusweisApp2Sdk**. For this command
to be processed by the SDK you need to supply the session ID which you have
previously received. The listing below shows an example.
Expand All @@ -487,7 +487,7 @@ previously received. The listing below shows an example.
Receive message
"""""""""""""""
Messages from the AusweisApp2 SDK are passed to you via the same instance of
Messages from the |AppName| SDK are passed to you via the same instance of
**IAusweisApp2SdkCallback** in which you have received the session ID.
The **receive** method is called each time the SDK sends a message.

Expand All @@ -500,7 +500,7 @@ The **receive** method is called each time the SDK sends a message.

Disconnect from SDK
^^^^^^^^^^^^^^^^^^^
In order to disconnect from the AusweisApp2 SDK you need to invalidate your
In order to disconnect from the |AppName| SDK you need to invalidate your
instance of **IBinder**. There are two possibilities to do this. The first
one is to unbind from the SDK Android service to undo your binding, like
shown in the code listing below. The second one is to return false in the
Expand Down Expand Up @@ -583,7 +583,7 @@ As it is common on the Android platform, information is sent to applications
encapsulated in instances of the **Intent** class. In order to process newly
discovered NFC tags, Intents which are given to the application need to be
checked for the parcelable NFC extra as shown in the code listing below.
Subsequently the client is required to send them to the AusweisApp2 SDK by
Subsequently the client is required to send them to the |AppName| SDK by
calling the **updateNfcTag** method of the previously acquired **IAusweisApp2Sdk**
instance.
The listing below shows an example for the described process.
Expand Down Expand Up @@ -625,7 +625,7 @@ for discovered NFC tags by Android if multiple applications which are able to
dispatch NFC tags are installed. An application can suppress this App Chooser
if it registers itself for **foreground dispatching** at runtime. This way NFC
tags are handled directly by the application without a chooser being displayed.
Subsequently the client is required to send them to the AusweisApp2 SDK by
Subsequently the client is required to send them to the |AppName| SDK by
calling the **updateNfcTag** method of the previously acquired **IAusweisApp2Sdk**
instance.
The required steps to handle NFC tags directly are shown in the code listing below
Expand Down
78 changes: 39 additions & 39 deletions docs/sdk/commands.rst
@@ -1,7 +1,7 @@
Commands
--------
Your application (client) can send some commands (**cmd**) to
control the AusweisApp2. The AusweisApp2 (server) will send
control the |AppName|. The |AppName| (server) will send
some proper :doc:`messages` during the whole workflow or as an
answer to your command.

Expand All @@ -12,9 +12,9 @@ answer to your command.

GET_INFO
^^^^^^^^
Returns information about the current installation of AusweisApp2.
Returns information about the current installation of |AppName|.

The AusweisApp2 will send an :ref:`info` message as an answer.
The |AppName| will send an :ref:`info` message as an answer.


.. code-block:: json
Expand All @@ -28,9 +28,9 @@ The AusweisApp2 will send an :ref:`info` message as an answer.

GET_STATUS
^^^^^^^^^^
Returns information about the current workflow and state of AusweisApp2.
Returns information about the current workflow and state of |AppName|.

The AusweisApp2 will send a :ref:`status` message as an answer.
The |AppName| will send a :ref:`status` message as an answer.

.. versionadded:: 1.24.0
Support of GET_STATUS command in :ref:`api_level` **2**.
Expand All @@ -49,7 +49,7 @@ GET_API_LEVEL
^^^^^^^^^^^^^
Returns information about the available and current API level.

The AusweisApp2 will send an :ref:`api_level` message as an answer.
The |AppName| will send an :ref:`api_level` message as an answer.


.. code-block:: json
Expand All @@ -66,12 +66,12 @@ SET_API_LEVEL
Set supported API level of your application.

If you initially develop your application against the
AusweisApp2 SDK you should check with :ref:`get_api_level`
|AppName| SDK you should check with :ref:`get_api_level`
the highest supported level and set this value with this command
if you connect to the SDK. This will set the SDK to act with
the defined level even if a newer level is available.

The AusweisApp2 will send an :ref:`api_level` message as an answer.
The |AppName| will send an :ref:`api_level` message as an answer.


- **level**:
Expand All @@ -96,7 +96,7 @@ Returns information about the requested reader.
If you explicitly want to ask for information of a known
reader name you can request it with this command.

The AusweisApp2 will send a :ref:`reader` message as an answer.
The |AppName| will send a :ref:`reader` message as an answer.


- **name**:
Expand All @@ -121,7 +121,7 @@ Returns information about all connected readers.
If you explicitly want to ask for information of all connected
readers you can request it with this command.

The AusweisApp2 will send a :ref:`reader_list` message as an answer.
The |AppName| will send a :ref:`reader_list` message as an answer.


.. code-block:: json
Expand All @@ -137,7 +137,7 @@ RUN_AUTH
^^^^^^^^
Starts an authentication.

The AusweisApp2 will send an :ref:`auth` message when the authentication is started.
The |AppName| will send an :ref:`auth` message when the authentication is started.

The system dialog on iOS can be customized by **messages**.
This dialog won't be stopped by default after an :ref:`enter_pin`, :ref:`enter_can`
Expand Down Expand Up @@ -204,7 +204,7 @@ Command :ref:`interrupt` allows to stop the dialog manually, if needed.
}
.. note::
This command is allowed only if the AusweisApp2 has no running
This command is allowed only if the |AppName| has no running
authentication or other workflow. Otherwise you will get
a :ref:`bad_state` message as an answer.

Expand All @@ -217,7 +217,7 @@ RUN_CHANGE_PIN
^^^^^^^^^^^^^^
Starts a change PIN workflow.

The AusweisApp2 will send a :ref:`change_pin` message when the workflow is started.
The |AppName| will send a :ref:`change_pin` message when the workflow is started.

The system dialog on iOS can be customized by **messages**.
This dialog won't be stopped by default after an :ref:`enter_pin`, :ref:`enter_can`,
Expand Down Expand Up @@ -275,7 +275,7 @@ Command :ref:`interrupt` allows to stop the dialog manually, if needed.
}
.. note::
This command is allowed only if the AusweisApp2 has no running
This command is allowed only if the |AppName| has no running
authentication or other workflow. Otherwise you will get
a :ref:`bad_state` message as an answer.

Expand All @@ -288,15 +288,15 @@ GET_ACCESS_RIGHTS
^^^^^^^^^^^^^^^^^
Returns information about the requested access rights.

The AusweisApp2 will send an :ref:`access_rights` message as an answer.
The |AppName| will send an :ref:`access_rights` message as an answer.


.. code-block:: json
{"cmd": "GET_ACCESS_RIGHTS"}
.. note::
This command is allowed only if the AusweisApp2 sends an initial
This command is allowed only if the |AppName| sends an initial
:ref:`access_rights` message. Otherwise you will get a :ref:`bad_state`
message as an answer.

Expand All @@ -313,7 +313,7 @@ By default the **effective** access rights are **optional** + **required**.
If you want to enable or disable some **optional** access rights you can
send this command to modify the **effective** access rights.

The AusweisApp2 will send an :ref:`access_rights` message as an answer.
The |AppName| will send an :ref:`access_rights` message as an answer.


- **chat**:
Expand All @@ -335,7 +335,7 @@ The AusweisApp2 will send an :ref:`access_rights` message as an answer.
}
.. note::
This command is allowed only if the AusweisApp2 sends an initial
This command is allowed only if the |AppName| sends an initial
:ref:`access_rights` message. Otherwise you will get a :ref:`bad_state`
message as an answer.

Expand Down Expand Up @@ -384,7 +384,7 @@ in a :ref:`reader` message.
}
.. note::
This command is allowed only if the AusweisApp2 sends an initial
This command is allowed only if the |AppName| sends an initial
:ref:`insert_card` message. Otherwise you will get a :ref:`bad_state`
message as an answer.

Expand All @@ -397,15 +397,15 @@ GET_CERTIFICATE
^^^^^^^^^^^^^^^
Returns the certificate of current authentication.

The AusweisApp2 will send a :ref:`certificate` message as an answer.
The |AppName| will send a :ref:`certificate` message as an answer.


.. code-block:: json
{"cmd": "GET_CERTIFICATE"}
.. note::
This command is allowed only if the AusweisApp2 sends an initial
This command is allowed only if the |AppName| sends an initial
:ref:`access_rights` message. Otherwise you will get a :ref:`bad_state`
message as an answer.

Expand All @@ -418,7 +418,7 @@ CANCEL
^^^^^^
Cancel the whole workflow.

If your application sends this command the AusweisApp2 will cancel the
If your application sends this command the |AppName| will cancel the
workflow. You can send this command in any state of a running workflow
to abort it.

Expand All @@ -428,7 +428,7 @@ to abort it.
{"cmd": "CANCEL"}
.. note::
This command is allowed only if the AusweisApp2 started an authentication or
This command is allowed only if the |AppName| started an authentication or
the :ref:`change_pin` workflow.
Otherwise you will get a :ref:`bad_state` message as an answer.

Expand All @@ -441,15 +441,15 @@ ACCEPT
^^^^^^
Accept the current state.

If the AusweisApp2 will send the message :ref:`access_rights` the user
If the |AppName| will send the message :ref:`access_rights` the user
needs to **accept** or **cancel**. So the workflow is paused until
your application sends this command to accept the requested information.

If the user does not accept the requested information your application
needs to send the command :ref:`cancel` to abort the whole workflow.

This command will be used later for additional requested information
if the AusweisApp2 needs to pause the workflow. In :ref:`api_level` v1
if the |AppName| needs to pause the workflow. In :ref:`api_level` v1
only :ref:`access_rights` needs to be accepted.


Expand All @@ -458,7 +458,7 @@ only :ref:`access_rights` needs to be accepted.
{"cmd": "ACCEPT"}
.. note::
This command is allowed only if the AusweisApp2 sends an initial
This command is allowed only if the |AppName| sends an initial
:ref:`access_rights` message. Otherwise you will get a :ref:`bad_state`
message as an answer.

Expand Down Expand Up @@ -488,7 +488,7 @@ the iOS system dialog can be interrupted.
{"cmd": "INTERRUPT"}
.. note::
This command is allowed only if the AusweisApp2 sends a :ref:`enter_pin`,
This command is allowed only if the |AppName| sends a :ref:`enter_pin`,
:ref:`enter_can`, :ref:`enter_new_pin` or :ref:`enter_puk` message.
Otherwise you will get a :ref:`bad_state` message as an answer.

Expand All @@ -501,17 +501,17 @@ SET_PIN
^^^^^^^
Set PIN of inserted card.

If the AusweisApp2 sends message :ref:`enter_pin` you need
If the |AppName| sends message :ref:`enter_pin` you need
to send this command to unblock the card with the PIN.

The AusweisApp2 will send an :ref:`enter_pin` message on error
The |AppName| will send an :ref:`enter_pin` message on error
or message :ref:`enter_can` if the retryCounter of the card
is decreased to **1**.
For detailed information see message :ref:`enter_pin`.

If the PIN was correct, the workflow will continue.

If the last attempt to enter the PIN failed, AusweisApp2
If the last attempt to enter the PIN failed, |AppName|
will send the message :ref:`enter_puk` as the retryCounter
is decreased to **0**.

Expand All @@ -534,7 +534,7 @@ is decreased to **0**.
}
.. note::
This command is allowed only if the AusweisApp2 sends an initial
This command is allowed only if the |AppName| sends an initial
:ref:`enter_pin` message. Otherwise you will get a :ref:`bad_state`
message as an answer.

Expand All @@ -547,7 +547,7 @@ SET_NEW_PIN
^^^^^^^^^^^
Set new PIN of inserted card.

If the AusweisApp2 sends message :ref:`enter_new_pin` you need
If the |AppName| sends message :ref:`enter_new_pin` you need
to send this command to set the new PIN of the card.

.. versionadded:: 1.22.0
Expand All @@ -566,7 +566,7 @@ to send this command to set the new PIN of the card.
}
.. note::
This command is allowed only if the AusweisApp2 sends an initial
This command is allowed only if the |AppName| sends an initial
:ref:`enter_new_pin` message. Otherwise you will get a :ref:`bad_state`
message as an answer.

Expand All @@ -579,10 +579,10 @@ SET_CAN
^^^^^^^
Set CAN of inserted card.

If the AusweisApp2 sends message :ref:`enter_can` you need
If the |AppName| sends message :ref:`enter_can` you need
to send this command to unblock the last retry of :ref:`set_pin`.

The AusweisApp2 will send an :ref:`enter_can` message on error.
The |AppName| will send an :ref:`enter_can` message on error.
Otherwise the workflow will continue with :ref:`enter_pin`.

.. versionchanged:: 1.16.0
Expand All @@ -602,7 +602,7 @@ Otherwise the workflow will continue with :ref:`enter_pin`.
}
.. note::
This command is allowed only if the AusweisApp2 sends an initial
This command is allowed only if the |AppName| sends an initial
:ref:`enter_can` message. Otherwise you will get a :ref:`bad_state`
message as an answer.

Expand All @@ -615,10 +615,10 @@ SET_PUK
^^^^^^^
Set PUK of inserted card.

If the AusweisApp2 sends message :ref:`enter_puk` you need
If the |AppName| sends message :ref:`enter_puk` you need
to send this command to unblock :ref:`set_pin`.

The AusweisApp2 will send an :ref:`enter_puk` message on error
The |AppName| will send an :ref:`enter_puk` message on error
or if the PUK is operative.
Otherwise the workflow will continue with :ref:`enter_pin`.
For detailed information see message :ref:`enter_puk`.
Expand All @@ -640,6 +640,6 @@ For detailed information see message :ref:`enter_puk`.
}
.. note::
This command is allowed only if the AusweisApp2 sends an initial
This command is allowed only if the |AppName| sends an initial
:ref:`enter_puk` message. Otherwise you will get a :ref:`bad_state`
message as an answer.
12 changes: 8 additions & 4 deletions docs/sdk/conf.py.in
Expand Up @@ -41,7 +41,7 @@ source_suffix = '.rst'
master_doc = 'index'

# General information about the project.
project = 'AusweisApp2 SDK'
project = '@PROJECT_NAME@ SDK'
copyright = '2016-2023, Governikus GmbH & Co. KG'
author = 'Governikus GmbH & Co. KG'

Expand Down Expand Up @@ -96,7 +96,7 @@ html_show_copyright = True
html_scaled_image_link = False

# Output file base name for HTML help builder.
htmlhelp_basename = 'AusweisApp2ReleaseNotes'
htmlhelp_basename = '@PROJECT_NAME@ReleaseNotes'

html_context = {
'display_github': False,
Expand All @@ -119,7 +119,7 @@ latex_elements = {
# Additional stuff for the LaTeX preamble.
'preamble': '''
\hypersetup{pdfauthor={Governikus GmbH \& Co. KG},
pdftitle={AusweisApp2},
pdftitle={@PROJECT_NAME@},
pdfsubject={SDK},
pdfkeywords={sdk, api},
pdfproducer={LaTeX},
Expand All @@ -143,7 +143,7 @@ latex_elements = {
# (source start file, target name, title,
# author, documentclass [howto, manual, or own class]).
latex_documents = [
(master_doc, 'AusweisApp2-@VERSION_DVCS@-SDK.tex', 'AusweisApp2 SDK',
(master_doc, '@PROJECT_NAME@-@VERSION_DVCS@-SDK.tex', '@PROJECT_NAME@ SDK',
'Governikus GmbH \& Co. KG', 'howto'),
]

Expand All @@ -166,3 +166,7 @@ latex_show_urls = 'footnote'

# If false, no module index is generated.
#latex_domain_indices = True

rst_epilog = """
.. |AppName| replace:: @PROJECT_NAME@
"""
10 changes: 5 additions & 5 deletions docs/sdk/container.rst
@@ -1,10 +1,10 @@
Container
=========
This chapter deals with the container specific properties of the AusweisApp2 SDK.
The AusweisApp2 core is reachable over a :ref:`websocket` like the :doc:`desktop`
This chapter deals with the container specific properties of the |AppName| SDK.
The |AppName| core is reachable over a :ref:`websocket` like the :doc:`desktop`
variant and also enables the :ref:`automatic` mode by default.
Subsequent sections deal with the container itself and explain which steps are
necessary in order to communicate with the AusweisApp2 SDK in the container.
necessary in order to communicate with the |AppName| SDK in the container.


.. note::
Expand All @@ -22,7 +22,7 @@ If you need to restore the configuration you can add a

.. code-block:: sh
docker run --rm -p 127.0.0.1:24727:24727 governikus/ausweisapp2
docker run --rm -p 127.0.0.1:24727:24727 governikus/ausweisapp
Expand All @@ -36,7 +36,7 @@ by ``docker run -e https_proxy=IP:PORT -e http_proxy=IP:PORT``.

Behaviour
---------
The AusweisApp2 uses the :ref:`automatic` mode with the default :doc:`simulator`
The |AppName| uses the :ref:`automatic` mode with the default :doc:`simulator`
if there is no connected :ref:`websocket` client. That mode will be disabled
if a client is connected and enabled again after disconnection. If the client
disconnects during an active workflow the workflow will be canceled.
Expand Down