Merge v1.14.0 into community
|
@ -1,4 +1,4 @@
|
|||
CMAKE_MINIMUM_REQUIRED(VERSION 3.3.0)
|
||||
CMAKE_MINIMUM_REQUIRED(VERSION 3.5.0)
|
||||
|
||||
IF(POLICY CMP0020)
|
||||
CMAKE_POLICY(SET CMP0020 NEW)
|
||||
|
@ -33,7 +33,7 @@ ELSE()
|
|||
ENDIF()
|
||||
|
||||
|
||||
PROJECT(AusweisApp2 VERSION 1.12.4 LANGUAGES ${LANGUAGES})
|
||||
PROJECT(AusweisApp2 VERSION 1.14.0 LANGUAGES ${LANGUAGES})
|
||||
|
||||
# Set TWEAK if not defined in PROJECT_VERSION above to
|
||||
# have a valid tweak version without propagating it
|
||||
|
@ -67,6 +67,7 @@ MESSAGE(STATUS "VENDOR: ${VENDOR}")
|
|||
MESSAGE(STATUS "VERSION: ${PROJECT_VERSION}")
|
||||
|
||||
IF(ANDROID)
|
||||
GET_ANDROID_TOOLCHAIN_VARS(ANDROID_TOOLCHAIN_PREFIX ANDROID_TOOLCHAIN_MACHINE_NAME)
|
||||
IF(NOT BUILD_PREVIEW)
|
||||
SET(BUILD_PREVIEW false)
|
||||
ENDIF()
|
||||
|
@ -78,6 +79,13 @@ IF(ANDROID)
|
|||
MESSAGE(STATUS "ANDROID_VERSION_CODE: ${ANDROID_VERSION_CODE}")
|
||||
ENDIF()
|
||||
|
||||
IF(IOS)
|
||||
IF(NOT USE_DISTRIBUTION_PROFILE)
|
||||
SET(USE_DISTRIBUTION_PROFILE false)
|
||||
ENDIF()
|
||||
MESSAGE(STATUS "USE_DISTRIBUTION_PROFILE: ${USE_DISTRIBUTION_PROFILE}")
|
||||
ENDIF()
|
||||
|
||||
IF("${PROJECT_BINARY_DIR}" STREQUAL "${PROJECT_SOURCE_DIR}")
|
||||
MESSAGE(FATAL_ERROR "in tree building is not supported!")
|
||||
ENDIF()
|
||||
|
|
|
@ -466,7 +466,7 @@ Die verwendeten OpenSource-Bibliotheken unterliegen den folgenden Nutzungsbeding
|
|||
|
||||
Qt
|
||||
Lizenz: LGPL v3
|
||||
Version: 5.8.0
|
||||
Version: 5.9.3
|
||||
Adresse: https://www.qt.io/
|
||||
|
||||
http_parser
|
||||
|
@ -661,11 +661,7 @@ permanent authorization for you to choose that version for the Library.
|
|||
|
||||
|
||||
|
||||
http_parser.c is based on src/http/ngx_http_parse.c from NGINX copyright
|
||||
Igor Sysoev.
|
||||
|
||||
Additional changes are licensed under the same terms as NGINX and
|
||||
copyright Joyent, Inc. and other Node contributors. All rights reserved.
|
||||
Copyright Joyent, Inc. and other Node contributors.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to
|
||||
|
|
|
@ -416,7 +416,7 @@ Die verwendeten OpenSource-Bibliotheken unterliegen den folgenden Nutzungsbeding
|
|||
|
||||
Qt
|
||||
Lizenz: LGPL v3
|
||||
Version: 5.8.0
|
||||
Version: 5.9.3
|
||||
Adresse: https://www.qt.io/
|
||||
|
||||
http_parser
|
||||
|
@ -611,11 +611,7 @@ permanent authorization for you to choose that version for the Library.
|
|||
|
||||
|
||||
|
||||
http_parser.c is based on src/http/ngx_http_parse.c from NGINX copyright
|
||||
Igor Sysoev.
|
||||
|
||||
Additional changes are licensed under the same terms as NGINX and
|
||||
copyright Joyent, Inc. and other Node contributors. All rights reserved.
|
||||
Copyright Joyent, Inc. and other Node contributors.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to
|
||||
|
|
20
README.rst
|
@ -170,3 +170,23 @@ Nachdem die Build-Umgebung eingerichtet ist, kann je nach System ein Package ers
|
|||
|
||||
$ make install
|
||||
$ make apk
|
||||
|
||||
|
||||
|
||||
Reproduzierbarer Build
|
||||
----------------------
|
||||
Wir sind stets bemüht den Build des offiziellen Binaries der AusweisApp2 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
|
||||
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.
|
||||
Ein Unterschied zum offiziellen Binary sollte lediglich in eventuellen Pfaden,
|
||||
einem Datum bzw. Zeitstempel und Signaturen bestehen.
|
||||
|
||||
.. seealso::
|
||||
https://reproducible-builds.org/
|
||||
|
|
|
@ -47,15 +47,15 @@ IF(MAC OR LINUX OR WIN32)
|
|||
FILE(GLOB TAR_GZ_FILES ${PROJECT_BINARY_DIR}/*.tar.gz)
|
||||
|
||||
IF(DMG_FILES)
|
||||
ADD_APPCAST_FILE("${DMG_FILES}" "Q_OS_MAC")
|
||||
ADD_APPCAST_FILE("${DMG_FILES}" "mac")
|
||||
ENDIF()
|
||||
|
||||
IF(MSI_FILES)
|
||||
ADD_APPCAST_FILE("${MSI_FILES}" "Q_OS_WIN32")
|
||||
ADD_APPCAST_FILE("${MSI_FILES}" "win")
|
||||
ENDIF()
|
||||
|
||||
IF(TAR_GZ_FILES)
|
||||
ADD_APPCAST_FILE("${TAR_GZ_FILES}" "SOURCES")
|
||||
ADD_APPCAST_FILE("${TAR_GZ_FILES}" "src")
|
||||
ENDIF()
|
||||
|
||||
IF(APPCAST_ITEMS)
|
||||
|
|
|
@ -9,14 +9,12 @@ ADD_DEFINITIONS(-DQT_NO_EXCEPTIONS)
|
|||
|
||||
IF(QT_VENDOR STREQUAL "Governikus")
|
||||
ADD_DEFINITIONS(-DGOVERNIKUS_QT)
|
||||
ADD_DEFINITIONS(-DQT_DEPRECATED_WARNINGS)
|
||||
ENDIF()
|
||||
|
||||
IF(CMAKE_VERSION VERSION_LESS 3.2)
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
|
||||
ELSE()
|
||||
SET(CMAKE_CXX_STANDARD 11)
|
||||
SET(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
ENDIF()
|
||||
SET(CMAKE_CXX_STANDARD 11)
|
||||
SET(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
SET(CMAKE_CXX_EXTENSIONS OFF)
|
||||
|
||||
IF(NOT DEFINED WARNINGS_ARE_ERRORS AND VENDOR_GOVERNIKUS)
|
||||
SET(WARNINGS_ARE_ERRORS ON)
|
||||
|
@ -32,11 +30,17 @@ ELSE()
|
|||
ADD_DEFINITIONS(-DQT_STRICT_ITERATORS)
|
||||
|
||||
STRING(REPLACE "-fexceptions" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wpedantic -Wcast-qual -Wshadow -Wvla")
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wcast-qual -Wshadow")
|
||||
|
||||
ADD_FLAG(-flto VAR CMAKE_EXE_LINKER_FLAGS_RELEASE CMAKE_SHARED_LINKER_FLAGS_RELEASE LINK -flto)
|
||||
|
||||
ADD_FLAG(-fno-exceptions)
|
||||
ADD_FLAG(-fstack-protector-strong -fstack-protector)
|
||||
ADD_FLAG(-fuse-ld=gold VAR CMAKE_EXE_LINKER_FLAGS CMAKE_SHARED_LINKER_FLAGS LINK -fuse-ld=gold)
|
||||
ADD_FLAG(-Wold-style-cast)
|
||||
ADD_FLAG(-Wmost)
|
||||
ADD_FLAG(-Wpedantic)
|
||||
ADD_FLAG(-Wvla)
|
||||
ADD_FLAG(-Wconversion)
|
||||
ADD_FLAG(-Wloop-analysis)
|
||||
ADD_FLAG(-Wlogical-op)
|
||||
|
@ -44,20 +48,28 @@ ELSE()
|
|||
ADD_FLAG(-Wduplicated-cond)
|
||||
ADD_FLAG(-Wweak-vtables)
|
||||
ADD_FLAG(-Wcovered-switch-default)
|
||||
ADD_FLAG(-Wduplicated-branches)
|
||||
ADD_FLAG(-Wdocumentation)
|
||||
ADD_FLAG(-Wsuggest-override)
|
||||
ADD_FLAG(-Winconsistent-missing-override)
|
||||
ADD_FLAG(-Winconsistent-missing-destructor-override)
|
||||
ADD_FLAG(-Wnon-virtual-dtor)
|
||||
ADD_FLAG(-Winitializer-overrides)
|
||||
ADD_FLAG(-Wunreachable-code-aggressive)
|
||||
ADD_FLAG(-Wnewline-eof)
|
||||
ADD_FLAG(-Wno-gnu-zero-variadic-macro-arguments) # Qt (qDebug) is not compatible
|
||||
|
||||
|
||||
IF(ANDROID)
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ffunction-sections -fdata-sections -Wl,--gc-sections -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now")
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -finline-limit=64")
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ffunction-sections -fdata-sections")
|
||||
IF(CMAKE_COMPILER_IS_GNUCXX)
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -finline-limit=64 -Wl,--gc-sections -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now")
|
||||
ENDIF()
|
||||
SET(CMAKE_CXX_VISIBILITY_PRESET hidden)
|
||||
ENDIF()
|
||||
|
||||
IF("${CMAKE_BUILD_TYPE}" STREQUAL "RELEASE")
|
||||
ADD_FLAG(-flto VAR CMAKE_EXE_LINKER_FLAGS CMAKE_SHARED_LINKER_FLAGS LINK -flto)
|
||||
ENDIF()
|
||||
|
||||
|
||||
IF(WARNINGS_ARE_ERRORS AND NOT CMAKE_GENERATOR STREQUAL Xcode)
|
||||
IF(WARNINGS_ARE_ERRORS)
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror")
|
||||
ENDIF()
|
||||
|
||||
|
@ -73,17 +85,21 @@ ELSE()
|
|||
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0")
|
||||
|
||||
IF(SANITIZER)
|
||||
IF(CMAKE_COMPILER_IS_GNUCXX)
|
||||
ADD_FLAG("-fsanitize=address -fsanitize=undefined -fno-omit-frame-pointer -fno-optimize-sibling-calls" LINK -fsanitize=address -fsanitize=undefined)
|
||||
ELSE()
|
||||
ADD_FLAG("-fsanitize=address -fsanitize=undefined -fsanitize=unsigned-integer-overflow -fsanitize-address-use-after-scope -fno-omit-frame-pointer -fno-optimize-sibling-calls" LINK -fsanitize=address -fsanitize=undefined)
|
||||
IF(NOT SANITIZER_SKIP_ASAN)
|
||||
SET(SANITIZER_FLAGS "-fsanitize=address")
|
||||
SET(SANITIZER_LINK_FLAGS "-fsanitize=address")
|
||||
ENDIF()
|
||||
SET(SANITIZER_FLAGS "${SANITIZER_FLAGS} -fsanitize=undefined -fno-omit-frame-pointer -fno-optimize-sibling-calls")
|
||||
ADD_FLAG("${SANITIZER_FLAGS} -fsanitize=unsigned-integer-overflow -fsanitize-address-use-after-scope" "${SANITIZER_FLAGS}" LINK "${SANITIZER_LINK_FLAGS} -fsanitize=undefined")
|
||||
ENDIF()
|
||||
|
||||
IF(CMAKE_CXX_COMPILER_ID STREQUAL Intel)
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -wd1875,1682,2259,654,177")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
# enable Objective-C support on MacOS X
|
||||
IF(APPLE)
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ObjC++")
|
||||
IF(APPLE AND NOT IOS)
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ObjC++ -mmacosx-version-min=10.9")
|
||||
ENDIF()
|
||||
|
||||
|
||||
|
|
|
@ -93,12 +93,6 @@ MACRO(GET_DVCS_INFO)
|
|||
DVCS_CALL("revision" "-" id -i)
|
||||
ELSEIF(GIT_FOUND)
|
||||
DVCS_CALL("revision" "-" rev-parse --verify --short HEAD)
|
||||
DVCS_EXECUTE(dvcs_clean_wc diff-index --quiet HEAD)
|
||||
IF(NOT DEFINED dvcs_clean_wc)
|
||||
MESSAGE(STATUS "DVCS: dirty working copy")
|
||||
SET(dvcs_revision ${dvcs_revision}+)
|
||||
SET(VERSION_DVCS ${VERSION_DVCS}+)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
ENDMACRO()
|
||||
|
||||
|
|
|
@ -1,38 +1,27 @@
|
|||
SET(REMOTE_CONFIG_URL_PROD https://appl.governikus-asp.de/ausweisapp2)
|
||||
IF(JENKINS_APPCAST)
|
||||
SET(REMOTE_CONFIG_URL https://buildautentapp/job/${JENKINS_APPCAST}/lastSuccessfulBuild/artifact CACHE STRING "Remote config download URL" FORCE)
|
||||
SET(REMOTE_CONFIG_URL https://vtf-aajenkins.tf.bos-test.de/job/${JENKINS_APPCAST}/lastSuccessfulBuild/artifact CACHE STRING "Remote config download URL" FORCE)
|
||||
ELSE()
|
||||
SET(REMOTE_CONFIG_URL https://appl.governikus-asp.de/ausweisapp2 CACHE STRING "Remote config download URL" FORCE)
|
||||
SET(REMOTE_CONFIG_URL ${REMOTE_CONFIG_URL_PROD} CACHE STRING "Remote config download URL" FORCE)
|
||||
ENDIF()
|
||||
|
||||
FUNCTION(CONFIGURE_DEFAULT_FILES _destination)
|
||||
# Set DEFAULT_PROVIDER_FILE to replace this in config.json.in.
|
||||
IF(IOS)
|
||||
SET(DEFAULT_PROVIDER_FILE default-providers-ios.json)
|
||||
ELSE()
|
||||
SET(DEFAULT_PROVIDER_FILE default-providers.json)
|
||||
ENDIF()
|
||||
|
||||
IF(JENKINS_APPCAST)
|
||||
SET(REMOTE_CONFIG_PATH_APPCAST /build)
|
||||
SET(REMOTE_CONFIG_PATH_APPCAST_BETA /build)
|
||||
SET(REMOTE_CONFIG_PATH_PROVIDERS /source/resources)
|
||||
SET(REMOTE_CONFIG_PATH_DRIVERS /source/resources)
|
||||
SET(REMOTE_CONFIG_PATH_READERS /source/resources)
|
||||
ELSE()
|
||||
SET(REMOTE_CONFIG_PATH_APPCAST )
|
||||
SET(REMOTE_CONFIG_PATH_APPCAST_BETA /beta)
|
||||
SET(REMOTE_CONFIG_PATH_PROVIDERS )
|
||||
SET(REMOTE_CONFIG_PATH_DRIVERS /driver)
|
||||
SET(REMOTE_CONFIG_PATH_READERS /reader)
|
||||
ENDIF()
|
||||
SET(REMOTE_CONFIG_URL_READER_IMAGES ${REMOTE_CONFIG_URL_PROD}/reader)
|
||||
|
||||
# Copy secure storage file, so that the AusweisApp2 can be started from the build directory.
|
||||
CONFIGURE_FILE(${RESOURCES_DIR}/config.json.in ${_destination}/config.json @ONLY)
|
||||
|
||||
# The same with default providers
|
||||
CONFIGURE_FILE(${RESOURCES_DIR}/${DEFAULT_PROVIDER_FILE} ${_destination}/default-providers.json COPYONLY)
|
||||
|
||||
# The same with default supported devices
|
||||
CONFIGURE_FILE(${RESOURCES_DIR}/default-supported-devices.json ${_destination}/default-supported-devices.json COPYONLY)
|
||||
|
||||
# Copy qtlogging.ini file
|
||||
CONFIGURE_FILE(${RESOURCES_DIR}/qtlogging.ini ${_destination}/qtlogging.ini COPYONLY)
|
||||
ENDFUNCTION()
|
||||
|
|
|
@ -1,9 +1,22 @@
|
|||
INCLUDE(CheckCXXCompilerFlag)
|
||||
INCLUDE(CMakeParseArguments)
|
||||
|
||||
# Check if a compiler flag is supported by current compiler.
|
||||
#
|
||||
# Options
|
||||
# NOQUOTES: Do not add quotes to the variable (not used if it is a TARGET)
|
||||
#
|
||||
# Parameter
|
||||
# NAME: Add a human readable name. This is for configure output only to
|
||||
# group multiple flags or to indicate the usage.
|
||||
# LINK: Use these linker flags to try the compiler flag. The linker
|
||||
# flags won't be added. They are for testing only.
|
||||
# VAR: Checked compiler flags will be added to these variables. (default: CMAKE_CXX_FLAGS)
|
||||
# It is possible to add multiple VAR parameter.
|
||||
# If VAR parameter is a cmake TARGET the compiler flag will be added
|
||||
# to the COMPILE_FLAGS property of this TARGET only.
|
||||
FUNCTION(ADD_FLAG)
|
||||
SET(options NOQUOTES)
|
||||
SET(oneValueArgs)
|
||||
SET(oneValueArgs NAME)
|
||||
SET(multiValueArgs LINK VAR)
|
||||
cmake_parse_arguments(_PARAM "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
||||
|
||||
|
@ -16,13 +29,19 @@ FUNCTION(ADD_FLAG)
|
|||
ENDIF()
|
||||
|
||||
FOREACH(flag ${_PARAM_UNPARSED_ARGUMENTS})
|
||||
STRING(REPLACE "-" "_" flagname ${flag})
|
||||
SET(flagname ${flag})
|
||||
IF(_PARAM_NAME)
|
||||
SET(flagname "${flagname}_${_PARAM_NAME}")
|
||||
ENDIF()
|
||||
STRING(REPLACE "-" "_" flagname ${flagname})
|
||||
STRING(REPLACE " " "_" flagname ${flagname})
|
||||
|
||||
CHECK_CXX_COMPILER_FLAG(${flag} ${flagname})
|
||||
IF(${flagname})
|
||||
FOREACH(var ${_PARAM_VAR})
|
||||
IF(_PARAM_NOQUOTES)
|
||||
IF (${var} MATCHES "^AusweisApp")
|
||||
SET_PROPERTY(TARGET ${var} APPEND_STRING PROPERTY COMPILE_FLAGS " ${flag}")
|
||||
ELSEIF(_PARAM_NOQUOTES)
|
||||
SET(${var} ${${var}} ${flag} PARENT_SCOPE)
|
||||
ELSE()
|
||||
SET(${var} "${${var}} ${flag}" PARENT_SCOPE)
|
||||
|
@ -36,10 +55,6 @@ ENDFUNCTION()
|
|||
|
||||
|
||||
FUNCTION(GET_FILE_MATCHER _result_remove _result_keep)
|
||||
IF(NOT ${CMAKE_BUILD_TYPE} STREQUAL "DEBUG")
|
||||
LIST(APPEND matcher_remove "_debug")
|
||||
ENDIF()
|
||||
|
||||
IF(NOT ANDROID)
|
||||
LIST(APPEND matcher_remove "_android")
|
||||
ELSE()
|
||||
|
@ -115,9 +130,11 @@ FUNCTION(ADD_PLATFORM_LIBRARY _name)
|
|||
GET_FILE_MATCHER(matcher_remove matcher_keep)
|
||||
|
||||
FOREACH(file ${FILES})
|
||||
STRING(REPLACE "${CMAKE_SOURCE_DIR}" "" file_stripped "${file}")
|
||||
|
||||
SET(keep FALSE)
|
||||
FOREACH(match ${matcher_keep})
|
||||
IF("${file}" MATCHES ${match})
|
||||
IF("${file_stripped}" MATCHES ${match})
|
||||
SET(keep TRUE)
|
||||
BREAK()
|
||||
ENDIF()
|
||||
|
@ -125,10 +142,10 @@ FUNCTION(ADD_PLATFORM_LIBRARY _name)
|
|||
|
||||
IF(NOT keep)
|
||||
FOREACH(match ${matcher_remove})
|
||||
IF("${file}" MATCHES ${match})
|
||||
IF("${file_stripped}" MATCHES ${match})
|
||||
LIST(REMOVE_ITEM FILES "${file}")
|
||||
BREAK()
|
||||
ELSEIF("${file}" MATCHES "_generic")
|
||||
ELSEIF("${file_stripped}" MATCHES "_generic")
|
||||
LIST(REMOVE_ITEM FILES "${file}")
|
||||
LIST(APPEND GENERICS "${file}")
|
||||
BREAK()
|
||||
|
@ -144,7 +161,8 @@ FUNCTION(ADD_PLATFORM_LIBRARY _name)
|
|||
|
||||
SET(found FALSE)
|
||||
FOREACH(file ${FILES})
|
||||
IF("${file}" MATCHES "${generic_basename}" AND NOT "${file}" MATCHES ".h$")
|
||||
STRING(REPLACE "${CMAKE_SOURCE_DIR}" "" file_stripped "${file}")
|
||||
IF("${file_stripped}" MATCHES "${generic_basename}" AND NOT "${file_stripped}" MATCHES ".h$")
|
||||
SET(found TRUE)
|
||||
BREAK()
|
||||
ENDIF()
|
||||
|
@ -160,61 +178,22 @@ FUNCTION(ADD_PLATFORM_LIBRARY _name)
|
|||
ENDFUNCTION()
|
||||
|
||||
|
||||
# This FUNCTION is a workaround for a "bug" in cmake to use OBJECT LIBRARIES with IMPORTED TARGETS like Qt
|
||||
# http://www.cmake.org/Bug/view.php?id=14778
|
||||
FUNCTION(ADD_OBJECT_LIBRARY TargetName Files)
|
||||
ADD_LIBRARY(${TargetName} OBJECT ${Files})
|
||||
SET(_name ${TargetName}_ObjectLib)
|
||||
ADD_LIBRARY(${_name} OBJECT ${Files})
|
||||
|
||||
FOREACH(MODULE ${ARGN})
|
||||
TARGET_INCLUDE_DIRECTORIES(${TargetName} PRIVATE $<TARGET_PROPERTY:${MODULE},INTERFACE_INCLUDE_DIRECTORIES>)
|
||||
TARGET_COMPILE_DEFINITIONS(${TargetName} PRIVATE $<TARGET_PROPERTY:${MODULE},INTERFACE_COMPILE_DEFINITIONS>)
|
||||
TARGET_INCLUDE_DIRECTORIES(${_name} SYSTEM PRIVATE $<TARGET_PROPERTY:${MODULE},INTERFACE_INCLUDE_DIRECTORIES>)
|
||||
TARGET_COMPILE_DEFINITIONS(${_name} PRIVATE $<TARGET_PROPERTY:${MODULE},INTERFACE_COMPILE_DEFINITIONS>)
|
||||
ENDFOREACH()
|
||||
|
||||
IF(Qt5_POSITION_INDEPENDENT_CODE)
|
||||
SET_TARGET_PROPERTIES(${TargetName} PROPERTIES POSITION_INDEPENDENT_CODE ON)
|
||||
ENDIF()
|
||||
ENDFUNCTION()
|
||||
|
||||
|
||||
FUNCTION(GET_QUOTED_STRING _dest _str _filename)
|
||||
IF(CMAKE_GENERATOR STREQUAL Xcode AND CMAKE_VERSION VERSION_LESS "3.5")
|
||||
SET(tmp_var \\\\"${_str}\\\\")
|
||||
ELSEIF(NOT "${_filename}" MATCHES ".rc$")
|
||||
SET(tmp_var \\"${_str}\\")
|
||||
ELSE()
|
||||
SET(tmp_var ${_str})
|
||||
SET_TARGET_PROPERTIES(${_name} PROPERTIES POSITION_INDEPENDENT_CODE ON)
|
||||
ENDIF()
|
||||
|
||||
SET(${_dest} ${tmp_var} PARENT_SCOPE)
|
||||
ENDFUNCTION()
|
||||
|
||||
FUNCTION(ADD_STRING_DEFINITION _str _def)
|
||||
IF(ARGN)
|
||||
FOREACH(arg ${ARGN})
|
||||
IF (${arg} MATCHES "^AusweisApp")
|
||||
SET(ARG_TYPE TARGET)
|
||||
ELSE()
|
||||
SET(ARG_TYPE SOURCE)
|
||||
ENDIF()
|
||||
|
||||
IF(NOT "${_str}" STREQUAL "")
|
||||
GET_QUOTED_STRING(tmp_var ${_str} ${arg})
|
||||
SET(tmp_var =\"${tmp_var}\")
|
||||
ENDIF()
|
||||
|
||||
SET_PROPERTY(${ARG_TYPE} ${arg} APPEND_STRING PROPERTY COMPILE_FLAGS " -D${_def}${tmp_var}")
|
||||
ENDFOREACH()
|
||||
ELSE()
|
||||
IF(NOT "${_str}" STREQUAL "")
|
||||
GET_QUOTED_STRING(tmp_var ${_str} ${arg})
|
||||
SET(tmp_var =${tmp_var})
|
||||
ENDIF()
|
||||
ADD_DEFINITIONS(-D${_def}${tmp_var})
|
||||
ENDIF()
|
||||
ENDFUNCTION()
|
||||
|
||||
FUNCTION(ADD_DEFINITION _def)
|
||||
ADD_STRING_DEFINITION("" ${_def} ${ARGN})
|
||||
ADD_LIBRARY(${TargetName} INTERFACE)
|
||||
TARGET_SOURCES(${TargetName} INTERFACE $<TARGET_OBJECTS:${_name}>)
|
||||
TARGET_INCLUDE_DIRECTORIES(${TargetName} INTERFACE "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>")
|
||||
ENDFUNCTION()
|
||||
|
||||
|
||||
|
@ -241,6 +220,17 @@ FUNCTION(DIRLIST_OF_FILES _result _files)
|
|||
SET(${_result} ${dirlist} PARENT_SCOPE)
|
||||
ENDFUNCTION()
|
||||
|
||||
|
||||
FUNCTION(GET_ANDROID_TOOLCHAIN_VARS _prefix _machine)
|
||||
GET_FILENAME_COMPONENT(ANDROID_TOOLCHAIN_MACHINE_NAME "${CMAKE_CXX_ANDROID_TOOLCHAIN_PREFIX}" NAME)
|
||||
STRING(REGEX REPLACE "-$" "" ANDROID_TOOLCHAIN_MACHINE_NAME "${ANDROID_TOOLCHAIN_MACHINE_NAME}")
|
||||
STRING(REGEX MATCH "/toolchains/(.*)/prebuilt/" _unused "${CMAKE_CXX_ANDROID_TOOLCHAIN_PREFIX}")
|
||||
STRING(REGEX REPLACE "-${CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION}$" "" ANDROID_TOOLCHAIN_PREFIX "${CMAKE_MATCH_1}")
|
||||
SET(${_prefix} ${ANDROID_TOOLCHAIN_PREFIX} PARENT_SCOPE)
|
||||
SET(${_machine} ${ANDROID_TOOLCHAIN_MACHINE_NAME} PARENT_SCOPE)
|
||||
ENDFUNCTION()
|
||||
|
||||
|
||||
IF("${CMAKE_SYSTEM_NAME}" MATCHES "BSD")
|
||||
SET(BSD true)
|
||||
ENDIF()
|
||||
|
@ -285,6 +275,11 @@ IF(NOT COMMAND FIND_HOST_PACKAGE)
|
|||
ENDIF()
|
||||
|
||||
FUNCTION(FETCH_TARGET_LOCATION _destination _target)
|
||||
SET(options NAME)
|
||||
SET(oneValueArgs)
|
||||
SET(multiValueArgs)
|
||||
cmake_parse_arguments(_PARAM "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
||||
|
||||
GET_TARGET_PROPERTY(tmp "${_target}" IMPORTED_LOCATION_${CMAKE_BUILD_TYPE})
|
||||
|
||||
IF(NOT tmp)
|
||||
|
@ -299,6 +294,11 @@ FUNCTION(FETCH_TARGET_LOCATION _destination _target)
|
|||
GET_TARGET_PROPERTY(tmp "${_target}" IMPORTED_LOCATION)
|
||||
ENDIF()
|
||||
|
||||
IF(_PARAM_NAME)
|
||||
GET_FILENAME_COMPONENT(realpath "${tmp}" REALPATH)
|
||||
GET_FILENAME_COMPONENT(tmp "${realpath}" NAME)
|
||||
ENDIF()
|
||||
|
||||
SET(${_destination} ${tmp} PARENT_SCOPE)
|
||||
ENDFUNCTION()
|
||||
|
||||
|
@ -326,6 +326,7 @@ IF(WIN32)
|
|||
SET(SIGNTOOL_PARAMS ${SIGNTOOL_PARAMS} /n ${WIN_SIGN_SUBJECT_NAME})
|
||||
MESSAGE(STATUS "Files will be signed using: ${WIN_SIGN_SUBJECT_NAME}")
|
||||
ELSE()
|
||||
STRING(REPLACE "\\" "/" WIN_SIGN_KEYSTORE "${WIN_SIGN_KEYSTORE}")
|
||||
SET(SIGNTOOL_PARAMS ${SIGNTOOL_PARAMS} /f ${WIN_SIGN_KEYSTORE} /p ${WIN_SIGN_KEYSTORE_PSW})
|
||||
MESSAGE(STATUS "Files will be signed using: ${WIN_SIGN_KEYSTORE}")
|
||||
ENDIF()
|
||||
|
|
|
@ -80,19 +80,6 @@ ELSEIF(APPLE AND NOT IOS)
|
|||
ENDFOREACH()
|
||||
ENDFOREACH()
|
||||
|
||||
FOREACH(entry QtQuick QtQuick.2 QtQml QtGraphicalEffects Qt)
|
||||
SET(_dir "${QT_HOST_PREFIX}/qml")
|
||||
FILE(GLOB_RECURSE DYLIB "${_dir}/${entry}/*.dylib")
|
||||
FOREACH(_lib ${DYLIB})
|
||||
FILE(RELATIVE_PATH _lib_dest "${_dir}" "${_lib}")
|
||||
IF(NOT _lib_dest MATCHES "XmlListModel|Particles.2|LocalStorage") # blacklist not needed stuff
|
||||
GET_FILENAME_COMPONENT(_lib_dest_dir ${_lib_dest} DIRECTORY)
|
||||
INSTALL(FILES ${_lib} DESTINATION ${MACOS_BUNDLE_RESOURCES_DIR}/qml_stationary/${_lib_dest_dir} COMPONENT Runtime)
|
||||
LIST(APPEND ADDITIONAL_BUNDLE_FILES_TO_SIGN "/Contents/Resources/qml_stationary/${_lib_dest}")
|
||||
ENDIF()
|
||||
ENDFOREACH()
|
||||
ENDFOREACH()
|
||||
|
||||
INSTALL(TARGETS AusweisApp DESTINATION . COMPONENT Application)
|
||||
INSTALL(FILES ${platformMac} DESTINATION ${MACOS_BUNDLE_PLUGINS_DIR}/platforms COMPONENT Runtime)
|
||||
|
||||
|
@ -100,9 +87,8 @@ ELSEIF(APPLE AND NOT IOS)
|
|||
"
|
||||
${SEARCH_ADDITIONAL_DIRS}
|
||||
file(GLOB_RECURSE QTPLUGINS \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${MACOS_BUNDLE_PLUGINS_DIR}/*${CMAKE_SHARED_LIBRARY_SUFFIX}\")
|
||||
file(GLOB_RECURSE QtQuickPLUGINS \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${MACOS_BUNDLE_RESOURCES_DIR}/*${CMAKE_SHARED_LIBRARY_SUFFIX}\")
|
||||
INCLUDE(BundleUtilities)
|
||||
FIXUP_BUNDLE(\"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${EXECUTABLE_NAME}\" \"\${QTPLUGINS};\${QtQuickPLUGINS}\" \"${TOOLCHAIN_LIB_PATH};\${ADDITIONAL_DIRS}\")
|
||||
FIXUP_BUNDLE(\"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${EXECUTABLE_NAME}\" \"\${QTPLUGINS}\" \"${TOOLCHAIN_LIB_PATH};\${ADDITIONAL_DIRS}\")
|
||||
" COMPONENT Runtime)
|
||||
|
||||
LIST(APPEND ADDITIONAL_BUNDLE_FILES_TO_SIGN "/Contents/Frameworks/QtCore.framework")
|
||||
|
@ -111,18 +97,13 @@ ELSEIF(APPLE AND NOT IOS)
|
|||
LIST(APPEND ADDITIONAL_BUNDLE_FILES_TO_SIGN "/Contents/Frameworks/QtNetwork.framework")
|
||||
LIST(APPEND ADDITIONAL_BUNDLE_FILES_TO_SIGN "/Contents/Frameworks/QtSvg.framework")
|
||||
LIST(APPEND ADDITIONAL_BUNDLE_FILES_TO_SIGN "/Contents/Frameworks/QtWidgets.framework")
|
||||
LIST(APPEND ADDITIONAL_BUNDLE_FILES_TO_SIGN "/Contents/Frameworks/QtPrintSupport.framework")
|
||||
LIST(APPEND ADDITIONAL_BUNDLE_FILES_TO_SIGN "/Contents/Frameworks/QtQml.framework")
|
||||
LIST(APPEND ADDITIONAL_BUNDLE_FILES_TO_SIGN "/Contents/Frameworks/QtQuick.framework")
|
||||
LIST(APPEND ADDITIONAL_BUNDLE_FILES_TO_SIGN "/Contents/Frameworks/QtQuickControls2.framework")
|
||||
LIST(APPEND ADDITIONAL_BUNDLE_FILES_TO_SIGN "/Contents/Frameworks/QtQuickTemplates2.framework")
|
||||
LIST(APPEND ADDITIONAL_BUNDLE_FILES_TO_SIGN "/Contents/Frameworks/QtQuickWidgets.framework")
|
||||
LIST(APPEND ADDITIONAL_BUNDLE_FILES_TO_SIGN "/Contents/Frameworks/QtPrintSupport.framework") # remove if disabled in Qt
|
||||
LIST(APPEND ADDITIONAL_BUNDLE_FILES_TO_SIGN "/Contents/Frameworks/QtWebSockets.framework")
|
||||
|
||||
FOREACH (OPENSSL_LIBRARY ${OPENSSL_LIBRARIES})
|
||||
GET_FILENAME_COMPONENT(OPENSSL_LIBRARY_REAL ${OPENSSL_LIBRARY} REALPATH)
|
||||
GET_FILENAME_COMPONENT(OPENSSL_LIBRARY_NAME ${OPENSSL_LIBRARY_REAL} NAME)
|
||||
LIST(APPEND ADDITIONAL_BUNDLE_FILES_TO_SIGN "/Contents/MacOS/${OPENSSL_LIBRARY_NAME}")
|
||||
ENDFOREACH()
|
||||
FETCH_TARGET_LOCATION(opensslCryptoName "OpenSSL::Crypto" NAME)
|
||||
FETCH_TARGET_LOCATION(opensslSslName "OpenSSL::SSL" NAME)
|
||||
LIST(APPEND ADDITIONAL_BUNDLE_FILES_TO_SIGN "/Contents/MacOS/${opensslCryptoName}")
|
||||
LIST(APPEND ADDITIONAL_BUNDLE_FILES_TO_SIGN "/Contents/MacOS/${opensslSslName}")
|
||||
|
||||
# set it to parent scope to be able to access it from Packaging.cmake
|
||||
SET(ADDITIONAL_BUNDLE_FILES_TO_SIGN ${ADDITIONAL_BUNDLE_FILES_TO_SIGN} PARENT_SCOPE)
|
||||
|
@ -154,7 +135,6 @@ ELSEIF(ANDROID)
|
|||
INSTALL(FILES ${RESOURCES_IMG_ANDROID_DIR}/${entry}/${ANDROID_LAUNCHER_ICON} DESTINATION ${ANDROID_PACKAGE_SRC_DIR}/res/drawable-${entry} COMPONENT Runtime RENAME npa.png)
|
||||
ENDFOREACH()
|
||||
|
||||
INSTALL(FILES ${PACKAGING_DIR}/android/nfc_tech_filter.xml DESTINATION ${ANDROID_PACKAGE_SRC_DIR}/res/xml COMPONENT Runtime)
|
||||
INSTALL(FILES ${PACKAGING_DIR}/android/styles.xml DESTINATION ${ANDROID_PACKAGE_SRC_DIR}/res/values COMPONENT Runtime)
|
||||
|
||||
FILE(GLOB_RECURSE JAVA_FILES "${SRC_DIR}/*.java")
|
||||
|
@ -169,11 +149,6 @@ ELSEIF(ANDROID)
|
|||
ENDIF()
|
||||
CONFIGURE_FILE(${PACKAGING_DIR}/android/AndroidManifest.xml.in ${ANDROID_PACKAGE_SRC_DIR}/AndroidManifest.xml @ONLY)
|
||||
|
||||
GET_FILENAME_COMPONENT(ANDROID_TOOLCHAIN_MACHINE_NAME "${CMAKE_CXX_ANDROID_TOOLCHAIN_PREFIX}" NAME)
|
||||
STRING(REGEX REPLACE "-$" "" ANDROID_TOOLCHAIN_MACHINE_NAME "${ANDROID_TOOLCHAIN_MACHINE_NAME}")
|
||||
STRING(REGEX MATCH "/toolchains/(.*)/prebuilt/" _unused "${CMAKE_CXX_ANDROID_TOOLCHAIN_PREFIX}")
|
||||
STRING(REGEX REPLACE "-${CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION}$" "" ANDROID_TOOLCHAIN_PREFIX "${CMAKE_MATCH_1}")
|
||||
|
||||
SET(ANDROID_DEPLOYMENT_SETTINGS ${PROJECT_BINARY_DIR}/libAusweisApp2.so-deployment-settings.json CACHE INTERNAL "apk deployment" FORCE)
|
||||
SET(ANDROID_APP_BINARY "${CMAKE_INSTALL_PREFIX}/${ANDROID_DEST}/libAusweisApp2.so")
|
||||
CONFIGURE_FILE(${PACKAGING_DIR}/android/libAusweisApp2.so-deployment-settings.json.in ${ANDROID_DEPLOYMENT_SETTINGS} @ONLY)
|
||||
|
@ -248,18 +223,3 @@ INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/config.json DESTINATION ${DEFAULT_FILE
|
|||
# qtlogging.ini
|
||||
INSTALL(FILES ${RESOURCES_DIR}/qtlogging.ini DESTINATION ${DEFAULT_FILE_DESTINATION} COMPONENT Runtime)
|
||||
|
||||
# qml directories
|
||||
IF(DESKTOP)
|
||||
INSTALL(DIRECTORY ${RESOURCES_DIR}/qml_stationary DESTINATION ${DEFAULT_FILE_DESTINATION} COMPONENT Runtime)
|
||||
FOREACH(entry QtQuick QtQuick.2 QtQml QtGraphicalEffects Qt)
|
||||
INSTALL(DIRECTORY ${QT_HOST_PREFIX}/qml/${entry} DESTINATION ${DEFAULT_FILE_DESTINATION}/qml_stationary COMPONENT Runtime PATTERN "*.dylib" EXCLUDE)
|
||||
ENDFOREACH()
|
||||
ELSE()
|
||||
INSTALL(DIRECTORY ${RESOURCES_DIR}/qml DESTINATION ${DEFAULT_FILE_DESTINATION} COMPONENT Runtime)
|
||||
ENDIF()
|
||||
|
||||
# default-providers.json
|
||||
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/default-providers.json DESTINATION ${DEFAULT_FILE_DESTINATION} COMPONENT Runtime)
|
||||
|
||||
# default-supported-devices.json
|
||||
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/default-supported-devices.json DESTINATION ${DEFAULT_FILE_DESTINATION} COMPONENT Runtime)
|
||||
|
|
|
@ -1,30 +1,34 @@
|
|||
# Set CMAKE_PREFIX_PATH with toolchain directory
|
||||
|
||||
IF(MINGW)# AND CMAKE_VERSION VERSION_LESS 3.3.0) # see https://public.kitware.com/Bug/view.php?id=15409
|
||||
# see https://public.kitware.com/Bug/view.php?id=15409
|
||||
IF(MINGW)
|
||||
SET(CMAKE_FIND_LIBRARY_SUFFIXES ".dll.a" ".a" ".lib")
|
||||
ENDIF()
|
||||
|
||||
SET(MIN_QT_VERSION 5.8)
|
||||
SET(MIN_QT_VERSION 5.9)
|
||||
FIND_PACKAGE(Qt5Core ${MIN_QT_VERSION} REQUIRED)
|
||||
FIND_PACKAGE(Qt5Network ${MIN_QT_VERSION} REQUIRED)
|
||||
FIND_PACKAGE(Qt5Xml ${MIN_QT_VERSION} REQUIRED)
|
||||
FIND_PACKAGE(Qt5Svg ${MIN_QT_VERSION} REQUIRED)
|
||||
FIND_PACKAGE(Qt5LinguistTools ${MIN_QT_VERSION} REQUIRED)
|
||||
FIND_PACKAGE(Qt5Qml ${MIN_QT_VERSION} REQUIRED)
|
||||
FIND_PACKAGE(Qt5Quick ${MIN_QT_VERSION} REQUIRED)
|
||||
FIND_PACKAGE(Qt5QuickControls2 ${MIN_QT_VERSION} REQUIRED)
|
||||
FIND_PACKAGE(Qt5WebSockets ${MIN_QT_VERSION} REQUIRED)
|
||||
|
||||
IF(DESKTOP)
|
||||
FIND_PACKAGE(Qt5Widgets ${MIN_QT_VERSION} REQUIRED)
|
||||
FIND_PACKAGE(Qt5QuickWidgets ${MIN_QT_VERSION} REQUIRED)
|
||||
FIND_PACKAGE(Qt5PrintSupport ${MIN_QT_VERSION} REQUIRED)
|
||||
|
||||
IF(WIN32)
|
||||
FIND_PACKAGE(Qt5WinExtras ${MIN_QT_VERSION} REQUIRED)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
IF(ANDROID OR IOS OR WINDOWS_STORE OR "${CMAKE_BUILD_TYPE}" STREQUAL "DEBUG")
|
||||
FIND_PACKAGE(Qt5Nfc ${MIN_QT_VERSION} REQUIRED)
|
||||
FIND_PACKAGE(Qt5Qml ${MIN_QT_VERSION} REQUIRED)
|
||||
FIND_PACKAGE(Qt5Quick ${MIN_QT_VERSION} REQUIRED)
|
||||
FIND_PACKAGE(Qt5QuickControls2 ${MIN_QT_VERSION} REQUIRED)
|
||||
ENDIF()
|
||||
|
||||
|
||||
IF(LINUX OR ANDROID OR IOS)
|
||||
FIND_PACKAGE(Qt5Bluetooth ${MIN_QT_VERSION} REQUIRED)
|
||||
ENDIF()
|
||||
|
@ -58,19 +62,20 @@ IF(MINGW AND NOT CMAKE_CROSSCOMPILING)
|
|||
SET(tmp_crosscompile_enabled TRUE)
|
||||
SET(CMAKE_CROSSCOMPILING ON)
|
||||
ENDIF()
|
||||
FIND_PACKAGE(OpenSSL 1.0.2 REQUIRED)
|
||||
IF(QT_VENDOR STREQUAL "Governikus")
|
||||
FIND_PACKAGE(OpenSSL 1.0.2 REQUIRED) # see openssl_rsa_psk.patch
|
||||
ELSE()
|
||||
FIND_PACKAGE(OpenSSL 1.1 REQUIRED)
|
||||
ENDIF()
|
||||
IF(tmp_crosscompile_enabled)
|
||||
SET(CMAKE_CROSSCOMPILING OFF)
|
||||
ENDIF()
|
||||
|
||||
IF(ANDROID)
|
||||
STRING(REPLACE "libssl.so" "libgovssl.so" OPENSSL_LIBRARIES "${OPENSSL_LIBRARIES}")
|
||||
STRING(REPLACE "libcrypto.so" "libgovcrypto.so" OPENSSL_LIBRARIES "${OPENSSL_LIBRARIES}")
|
||||
|
||||
STRING(REPLACE "libssl.so" "libgovssl.so" OPENSSL_SSL_LIBRARY "${OPENSSL_SSL_LIBRARY}")
|
||||
STRING(REPLACE "libcrypto.so" "libgovcrypto.so" OPENSSL_CRYPTO_LIBRARY "${OPENSSL_CRYPTO_LIBRARY}")
|
||||
|
||||
MESSAGE(STATUS "Rewrite OPENSSL_LIBRARIES: ${OPENSSL_LIBRARIES}")
|
||||
GET_TARGET_PROPERTY(CryptoLib OpenSSL::Crypto IMPORTED_LOCATION)
|
||||
STRING(REPLACE "libcrypto.so" "libgovcrypto.so" CryptoLib "${CryptoLib}")
|
||||
MESSAGE(STATUS "Rewrite OpenSSL::Crypto: ${CryptoLib}")
|
||||
SET_TARGET_PROPERTIES(OpenSSL::Crypto PROPERTIES IMPORTED_LOCATION "${CryptoLib}")
|
||||
ENDIF()
|
||||
|
||||
|
||||
|
@ -117,4 +122,8 @@ ENDIF()
|
|||
IF("${CMAKE_BUILD_TYPE}" STREQUAL "DEBUG")
|
||||
FIND_PACKAGE(Qt5Test ${MIN_QT_VERSION} REQUIRED)
|
||||
FIND_PACKAGE(Qt5QuickTest ${MIN_QT_VERSION} REQUIRED)
|
||||
|
||||
IF(DESKTOP AND NOT APPLE)
|
||||
FIND_PACKAGE(Qt5UiPlugin ${MIN_QT_VERSION})
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
|
|
@ -7,17 +7,36 @@ MESSAGE(STATUS "CMAKE_SYSTEM_PREFIX_PATH: ${CMAKE_SYSTEM_PREFIX_PATH}")
|
|||
MESSAGE(STATUS "CMAKE_SYSTEM_INCLUDE_PATH: ${CMAKE_SYSTEM_INCLUDE_PATH}")
|
||||
MESSAGE(STATUS "CMAKE_VERSION: ${CMAKE_VERSION}")
|
||||
MESSAGE(STATUS "CMAKE_SYSROOT: ${CMAKE_SYSROOT}")
|
||||
MESSAGE(STATUS "CMAKE_SYSROOT_LINK: ${CMAKE_SYSROOT_LINK}")
|
||||
MESSAGE(STATUS "CMAKE_SYSROOT_COMPILE: ${CMAKE_SYSROOT_COMPILE}")
|
||||
MESSAGE(STATUS "CMAKE_SYSTEM_PROCESSOR: ${CMAKE_SYSTEM_PROCESSOR}")
|
||||
|
||||
IF(ANDROID)
|
||||
FUNCTION(READ_REVISION _var _regex _file)
|
||||
IF(EXISTS "${_file}")
|
||||
FILE(READ "${_file}" content)
|
||||
STRING(REGEX MATCH "${_regex}" _unused "${content}")
|
||||
SET(${_var} ${CMAKE_MATCH_1} PARENT_SCOPE)
|
||||
ENDIF()
|
||||
ENDFUNCTION()
|
||||
|
||||
MESSAGE(STATUS "CMAKE_ANDROID_NDK: ${CMAKE_ANDROID_NDK}")
|
||||
MESSAGE(STATUS "CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG: ${CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG}")
|
||||
MESSAGE(STATUS "CMAKE_ANDROID_ARCH_ABI: ${CMAKE_ANDROID_ARCH_ABI}")
|
||||
MESSAGE(STATUS "CMAKE_SYSTEM_VERSION: ${CMAKE_SYSTEM_VERSION}")
|
||||
MESSAGE(STATUS "CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION: ${CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION}")
|
||||
MESSAGE(STATUS "ANDROID_TOOLCHAIN_PREFIX: ${ANDROID_TOOLCHAIN_PREFIX}")
|
||||
MESSAGE(STATUS "ANDROID_TOOLCHAIN_MACHINE_NAME: ${ANDROID_TOOLCHAIN_MACHINE_NAME}")
|
||||
|
||||
MESSAGE(STATUS "ANDROID_SDK: ${ANDROID_SDK}")
|
||||
MESSAGE(STATUS "ANDROID_BUILD_TOOLS_REVISION: ${ANDROID_BUILD_TOOLS_REVISION}")
|
||||
|
||||
READ_REVISION(ANDROID_NDK_REVISION ".*Revision = ([0-9|\\.]+)" "${CMAKE_ANDROID_NDK}/source.properties")
|
||||
MESSAGE(STATUS "ANDROID_NDK_REVISION: ${ANDROID_NDK_REVISION}")
|
||||
|
||||
READ_REVISION(ANDROID_SDK_REVISION ".*Revision=([0-9|\\.]+)" "${ANDROID_SDK}/tools/source.properties")
|
||||
MESSAGE(STATUS "ANDROID_SDK_REVISION: ${ANDROID_SDK_REVISION}")
|
||||
|
||||
ELSEIF(IOS)
|
||||
MESSAGE(STATUS "CMAKE_IOS_SDK_ROOT: ${CMAKE_IOS_SDK_ROOT}")
|
||||
MESSAGE(STATUS "CMAKE_IOS_DEVELOPER_ROOT: ${CMAKE_IOS_DEVELOPER_ROOT}")
|
||||
|
|
|
@ -71,6 +71,7 @@ LIST(APPEND CPACK_SOURCE_IGNORE_FILES "\\\\.cproject")
|
|||
LIST(APPEND CPACK_SOURCE_IGNORE_FILES "\\\\.reviewboardrc")
|
||||
LIST(APPEND CPACK_SOURCE_IGNORE_FILES "utils/tlscheck")
|
||||
LIST(APPEND CPACK_SOURCE_IGNORE_FILES "utils/testbedtool")
|
||||
LIST(APPEND CPACK_SOURCE_IGNORE_FILES "utils/fuzzing")
|
||||
|
||||
SET(CPACK_MONOLITHIC_INSTALL true)
|
||||
|
||||
|
@ -97,7 +98,7 @@ IF(WIN32)
|
|||
|
||||
ELSEIF(IOS)
|
||||
FILE(WRITE ${PROJECT_BINARY_DIR}/ipa.cmake "
|
||||
SET(BUNDLE_DIRS \"\${CONFIG}-iphoneos;UninstalledProducts;UninstalledProducts/iphoneos\")
|
||||
SET(BUNDLE_DIRS \"\${CONFIG}-iphoneos;\${CONFIG};UninstalledProducts;UninstalledProducts/iphoneos\")
|
||||
|
||||
FOREACH(dir \${BUNDLE_DIRS})
|
||||
SET(tmpBundleDir ${PROJECT_BINARY_DIR}/src/\${dir}/${PROJECT_NAME}.app)
|
||||
|
|
|
@ -175,66 +175,143 @@ ENDFUNCTION()
|
|||
|
||||
FIND_PROGRAM(CONVERT convert CMAKE_FIND_ROOT_PATH_BOTH)
|
||||
IF(CONVERT)
|
||||
SET(CONVERT_CMD convert -background transparent)
|
||||
ADD_CUSTOM_TARGET(npaicons
|
||||
COMMAND ${CONVERT_CMD} npa.svg -define icon:auto-resize=256,96,64,48,40,32,24,20,16 npa.ico
|
||||
COMMAND ${CONVERT_CMD} npa.svg -resize 16x16 autentapp2.iconset/icon_16x16.png
|
||||
COMMAND ${CONVERT_CMD} npa.svg -resize 32x32 autentapp2.iconset/icon_16x16@2x.png
|
||||
COMMAND ${CONVERT_CMD} npa.svg -resize 32x32 autentapp2.iconset/icon_32x32.png
|
||||
COMMAND ${CONVERT_CMD} npa.svg -resize 64x64 autentapp2.iconset/icon_32x32@2x.png
|
||||
COMMAND ${CONVERT_CMD} npa.svg -resize 128x128 autentapp2.iconset/icon_128x128.png
|
||||
COMMAND ${CONVERT_CMD} npa.svg -resize 256x256 autentapp2.iconset/icon_128x128@2x.png
|
||||
COMMAND ${CONVERT_CMD} npa.svg -resize 256x256 autentapp2.iconset/icon_256x256.png
|
||||
COMMAND ${CONVERT_CMD} npa.svg -resize 512x512 autentapp2.iconset/icon_256x256@2x.png
|
||||
COMMAND ${CONVERT_CMD} npa.svg -resize 512x512 autentapp2.iconset/icon_512x512.png
|
||||
COMMAND ${CONVERT_CMD} npa.svg -resize 1024x1024 autentapp2.iconset/icon_512x512@2x.png
|
||||
COMMAND ${CONVERT_CMD} npa.svg -resize 36x36 android/ldpi/npa.png
|
||||
COMMAND ${CONVERT_CMD} npa.svg -resize 48x48 android/mdpi/npa.png
|
||||
COMMAND ${CONVERT_CMD} npa.svg -resize 72x72 android/hdpi/npa.png
|
||||
COMMAND ${CONVERT_CMD} npa.svg -resize 96x96 android/xhdpi/npa.png
|
||||
COMMAND ${CONVERT_CMD} npa.svg -resize 144x144 android/xxhdpi/npa.png
|
||||
COMMAND ${CONVERT_CMD} npa.svg -resize 192x192 android/xxxhdpi/npa.png
|
||||
COMMAND ${CONVERT_CMD} npa_beta.svg -resize 36x36 android/ldpi/npa_beta.png
|
||||
COMMAND ${CONVERT_CMD} npa_beta.svg -resize 48x48 android/mdpi/npa_beta.png
|
||||
COMMAND ${CONVERT_CMD} npa_beta.svg -resize 72x72 android/hdpi/npa_beta.png
|
||||
COMMAND ${CONVERT_CMD} npa_beta.svg -resize 96x96 android/xhdpi/npa_beta.png
|
||||
COMMAND ${CONVERT_CMD} npa_beta.svg -resize 144x144 android/xxhdpi/npa_beta.png
|
||||
COMMAND ${CONVERT_CMD} npa_beta.svg -resize 192x192 android/xxxhdpi/npa_beta.png
|
||||
COMMAND ${CONVERT_CMD} npa_preview.svg -resize 36x36 android/ldpi/npa_preview.png
|
||||
COMMAND ${CONVERT_CMD} npa_preview.svg -resize 48x48 android/mdpi/npa_preview.png
|
||||
COMMAND ${CONVERT_CMD} npa_preview.svg -resize 72x72 android/hdpi/npa_preview.png
|
||||
COMMAND ${CONVERT_CMD} npa_preview.svg -resize 96x96 android/xhdpi/npa_preview.png
|
||||
COMMAND ${CONVERT_CMD} npa_preview.svg -resize 144x144 android/xxhdpi/npa_preview.png
|
||||
COMMAND ${CONVERT_CMD} npa_preview.svg -resize 192x192 android/xxxhdpi/npa_preview.png
|
||||
SET(CONVERT_CMD convert)
|
||||
SET(BACKGROUND_COLOR "transparent")
|
||||
|
||||
ADD_CUSTOM_TARGET(npaicons.win
|
||||
COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -define icon:auto-resize=256,96,64,48,40,32,24,20,16 npa.svg npa.ico
|
||||
WORKING_DIRECTORY ${RESOURCES_DIR}/images)
|
||||
|
||||
ADD_CUSTOM_TARGET(npaicons.android.preview
|
||||
COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 36x36 npa_preview.svg android/ldpi/npa_preview.png
|
||||
COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 48x48 npa_preview.svg android/mdpi/npa_preview.png
|
||||
COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 72x72 npa_preview.svg android/hdpi/npa_preview.png
|
||||
COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 96x96 npa_preview.svg android/xhdpi/npa_preview.png
|
||||
COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 144x144 npa_preview.svg android/xxhdpi/npa_preview.png
|
||||
COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 192x192 npa_preview.svg android/xxxhdpi/npa_preview.png
|
||||
WORKING_DIRECTORY ${RESOURCES_DIR}/images)
|
||||
|
||||
ADD_CUSTOM_TARGET(npaicons.android.beta
|
||||
COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 36x36 npa_beta.svg android/ldpi/npa_beta.png
|
||||
COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 48x48 npa_beta.svg android/mdpi/npa_beta.png
|
||||
COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 72x72 npa_beta.svg android/hdpi/npa_beta.png
|
||||
COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 96x96 npa_beta.svg android/xhdpi/npa_beta.png
|
||||
COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 144x144 npa_beta.svg android/xxhdpi/npa_beta.png
|
||||
COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 192x192 npa_beta.svg android/xxxhdpi/npa_beta.png
|
||||
WORKING_DIRECTORY ${RESOURCES_DIR}/images)
|
||||
|
||||
ADD_CUSTOM_TARGET(npaicons.android
|
||||
COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 36x36 npa.svg android/ldpi/npa.png
|
||||
COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 48x48 npa.svg android/mdpi/npa.png
|
||||
COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 72x72 npa.svg android/hdpi/npa.png
|
||||
COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 96x96 npa.svg android/xhdpi/npa.png
|
||||
COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 144x144 npa.svg android/xxhdpi/npa.png
|
||||
COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 192x192 npa.svg android/xxxhdpi/npa.png
|
||||
WORKING_DIRECTORY ${RESOURCES_DIR}/images)
|
||||
|
||||
ADD_CUSTOM_TARGET(npaicons.ios.beta
|
||||
COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 29x29 npa_beta.svg iOS/appIcons/beta/iconSmall.png
|
||||
COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 58x58 npa_beta.svg iOS/appIcons/beta/iconSmall@2x.png
|
||||
COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 87x87 npa_beta.svg iOS/appIcons/beta/iconSmall@3x.png
|
||||
COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 40x40 npa_beta.svg iOS/appIcons/beta/iconSmall40.png
|
||||
COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 80x80 npa_beta.svg iOS/appIcons/beta/iconSmall40@2x.png
|
||||
COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 120x120 npa_beta.svg iOS/appIcons/beta/iconSmall40@3x.png
|
||||
COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 120x120 npa_beta.svg iOS/appIcons/beta/icon60@2x.png
|
||||
COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 180x180 npa_beta.svg iOS/appIcons/beta/icon60@3x.png
|
||||
COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 76x76 npa_beta.svg iOS/appIcons/beta/icon76.png
|
||||
COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 152x152 npa_beta.svg iOS/appIcons/beta/icon76@2x.png
|
||||
COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 167x167 npa_beta.svg iOS/appIcons/beta/icon83.5@2x.png
|
||||
WORKING_DIRECTORY ${RESOURCES_DIR}/images)
|
||||
|
||||
ADD_CUSTOM_TARGET(npaicons.ios
|
||||
COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 29x29 npa.svg iOS/appIcons/iconSmall.png
|
||||
COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 58x58 npa.svg iOS/appIcons/iconSmall@2x.png
|
||||
COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 87x87 npa.svg iOS/appIcons/iconSmall@3x.png
|
||||
COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 40x40 npa.svg iOS/appIcons/iconSmall40.png
|
||||
COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 80x80 npa.svg iOS/appIcons/iconSmall40@2x.png
|
||||
COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 120x120 npa.svg iOS/appIcons/iconSmall40@3x.png
|
||||
COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 120x120 npa.svg iOS/appIcons/icon60@2x.png
|
||||
COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 180x180 npa.svg iOS/appIcons/icon60@3x.png
|
||||
COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 76x76 npa.svg iOS/appIcons/icon76.png
|
||||
COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 152x152 npa.svg iOS/appIcons/icon76@2x.png
|
||||
COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 167x167 npa.svg iOS/appIcons/icon83.5@2x.png
|
||||
WORKING_DIRECTORY ${RESOURCES_DIR}/images)
|
||||
|
||||
SET(BACKGROUND_COLOR "rgb\(220,235,246\)")
|
||||
|
||||
ADD_CUSTOM_TARGET(npaicons.iphone
|
||||
COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 320x320 -gravity center -extent 640x1136 npa.svg iOS/launchImages/Default-568h@2x.png
|
||||
COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 320x320 -gravity center -extent 640x1136 npa.svg iOS/launchImages/launchImage568@2x.png
|
||||
COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 480x480 -gravity center -extent 960x1704 npa.svg iOS/launchImages/launchImage568@3x.png
|
||||
COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 353x353 -gravity center -extent 705x1334 npa.svg iOS/launchImages/launchImage667@2x.png
|
||||
COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 563x563 -gravity center -extent 1125x2001 npa.svg iOS/launchImages/launchImage667@3x.png
|
||||
COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 414x414 -gravity center -extent 828x1472 npa.svg iOS/launchImages/launchImage736@2x.png
|
||||
COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 621x621 -gravity center -extent 1242x2208 npa.svg iOS/launchImages/launchImage736@3x.png
|
||||
WORKING_DIRECTORY ${RESOURCES_DIR}/images)
|
||||
|
||||
ADD_CUSTOM_TARGET(npaicons.ipad
|
||||
COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 768x768 -gravity center -extent 2048x1536 npa.svg iOS/launchImages/launchImage1024@2x.png
|
||||
COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 1152x1152 -gravity center -extent 3072x2304 npa.svg iOS/launchImages/launchImage1024@3x.png
|
||||
COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 834x834 -gravity center -extent 2224x1668 npa.svg iOS/launchImages/launchImage1112@2x.png
|
||||
COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 1251x1251 -gravity center -extent 3336x2502 npa.svg iOS/launchImages/launchImage1112@3x.png
|
||||
COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 1024x1024 -gravity center -extent 2732x2048 npa.svg iOS/launchImages/launchImage1366@2x.png
|
||||
COMMAND ${CONVERT_CMD} -background '${BACKGROUND_COLOR}' -resize 1536x1536 -gravity center -extent 4098x3072 npa.svg iOS/launchImages/launchImage1366@3x.png
|
||||
WORKING_DIRECTORY ${RESOURCES_DIR}/images)
|
||||
|
||||
ADD_CUSTOM_TARGET(npaicons DEPENDS npaicons.win npaicons.ios npaicons.ios.beta npaicons.iphone npaicons.ipad npaicons.android npaicons.android.beta npaicons.android.preview)
|
||||
ENDIF()
|
||||
|
||||
FIND_PROGRAM(PNGQUANT pngquant CMAKE_FIND_ROOT_PATH_BOTH)
|
||||
IF(PNGQUANT)
|
||||
SET(PNGQUANT_CMD pngquant -f -o)
|
||||
ADD_CUSTOM_TARGET(pngquant
|
||||
COMMAND ${PNGQUANT_CMD} autentapp2.iconset/icon_16x16.png -- autentapp2.iconset/icon_16x16.png
|
||||
COMMAND ${PNGQUANT_CMD} autentapp2.iconset/icon_16x16@2x.png -- autentapp2.iconset/icon_16x16@2x.png
|
||||
COMMAND ${PNGQUANT_CMD} autentapp2.iconset/icon_32x32.png -- autentapp2.iconset/icon_32x32.png
|
||||
COMMAND ${PNGQUANT_CMD} autentapp2.iconset/icon_32x32@2x.png -- autentapp2.iconset/icon_32x32@2x.png
|
||||
COMMAND ${PNGQUANT_CMD} autentapp2.iconset/icon_128x128.png -- autentapp2.iconset/icon_128x128.png
|
||||
COMMAND ${PNGQUANT_CMD} autentapp2.iconset/icon_128x128@2x.png -- autentapp2.iconset/icon_128x128@2x.png
|
||||
COMMAND ${PNGQUANT_CMD} autentapp2.iconset/icon_256x256.png -- autentapp2.iconset/icon_256x256.png
|
||||
COMMAND ${PNGQUANT_CMD} autentapp2.iconset/icon_256x256@2x.png -- autentapp2.iconset/icon_256x256@2x.png
|
||||
COMMAND ${PNGQUANT_CMD} autentapp2.iconset/icon_512x512.png -- autentapp2.iconset/icon_512x512.png
|
||||
COMMAND ${PNGQUANT_CMD} autentapp2.iconset/icon_512x512@2x.png -- autentapp2.iconset/icon_512x512@2x.png
|
||||
COMMAND ${PNGQUANT_CMD} android/ldpi/npa.png -- android/ldpi/npa.png
|
||||
COMMAND ${PNGQUANT_CMD} android/mdpi/npa.png -- android/mdpi/npa.png
|
||||
COMMAND ${PNGQUANT_CMD} android/hdpi/npa.png -- android/hdpi/npa.png
|
||||
COMMAND ${PNGQUANT_CMD} android/xhdpi/npa.png -- android/xhdpi/npa.png
|
||||
COMMAND ${PNGQUANT_CMD} android/xxhdpi/npa.png -- android/xxhdpi/npa.png
|
||||
COMMAND ${PNGQUANT_CMD} android/xxxhdpi/npa.png -- android/xxxhdpi/npa.png
|
||||
COMMAND ${PNGQUANT_CMD} android/ldpi/npa_beta.png -- android/ldpi/npa_beta.png
|
||||
COMMAND ${PNGQUANT_CMD} android/mdpi/npa_beta.png -- android/mdpi/npa_beta.png
|
||||
COMMAND ${PNGQUANT_CMD} android/hdpi/npa_beta.png -- android/hdpi/npa_beta.png
|
||||
COMMAND ${PNGQUANT_CMD} android/xhdpi/npa_beta.png -- android/xhdpi/npa_beta.png
|
||||
COMMAND ${PNGQUANT_CMD} android/xxhdpi/npa_beta.png -- android/xxhdpi/npa_beta.png
|
||||
COMMAND ${PNGQUANT_CMD} android/xxxhdpi/npa_beta.png -- android/xxxhdpi/npa_beta.png
|
||||
ADD_CUSTOM_TARGET(pngquant.ios.beta
|
||||
COMMAND ${PNGQUANT_CMD} iOS/appIcons/beta/iconSmall.png -- iOS/appIcons/beta/iconSmall.png
|
||||
COMMAND ${PNGQUANT_CMD} iOS/appIcons/beta/iconSmall@2x.png -- iOS/appIcons/beta/iconSmall@2x.png
|
||||
COMMAND ${PNGQUANT_CMD} iOS/appIcons/beta/iconSmall@3x.png -- iOS/appIcons/beta/iconSmall@3x.png
|
||||
COMMAND ${PNGQUANT_CMD} iOS/appIcons/beta/iconSmall40.png -- iOS/appIcons/beta/iconSmall40.png
|
||||
COMMAND ${PNGQUANT_CMD} iOS/appIcons/beta/iconSmall40@2x.png -- iOS/appIcons/beta/iconSmall40@2x.png
|
||||
COMMAND ${PNGQUANT_CMD} iOS/appIcons/beta/iconSmall40@3x.png -- iOS/appIcons/beta/iconSmall40@3x.png
|
||||
COMMAND ${PNGQUANT_CMD} iOS/appIcons/beta/icon60@2x.png -- iOS/appIcons/beta/icon60@2x.png
|
||||
COMMAND ${PNGQUANT_CMD} iOS/appIcons/beta/icon60@3x.png -- iOS/appIcons/beta/icon60@3x.png
|
||||
COMMAND ${PNGQUANT_CMD} iOS/appIcons/beta/icon76.png -- iOS/appIcons/beta/icon76.png
|
||||
COMMAND ${PNGQUANT_CMD} iOS/appIcons/beta/icon76@2x.png -- iOS/appIcons/beta/icon76@2x.png
|
||||
COMMAND ${PNGQUANT_CMD} iOS/appIcons/beta/icon83.5@2x.png -- iOS/appIcons/beta/icon83.5@2x.png
|
||||
WORKING_DIRECTORY ${RESOURCES_DIR}/images)
|
||||
|
||||
ADD_CUSTOM_TARGET(pngquant.ios
|
||||
COMMAND ${PNGQUANT_CMD} iOS/appIcons/iconSmall.png -- iOS/appIcons/iconSmall.png
|
||||
COMMAND ${PNGQUANT_CMD} iOS/appIcons/iconSmall@2x.png -- iOS/appIcons/iconSmall@2x.png
|
||||
COMMAND ${PNGQUANT_CMD} iOS/appIcons/iconSmall@3x.png -- iOS/appIcons/iconSmall@3x.png
|
||||
COMMAND ${PNGQUANT_CMD} iOS/appIcons/iconSmall40.png -- iOS/appIcons/iconSmall40.png
|
||||
COMMAND ${PNGQUANT_CMD} iOS/appIcons/iconSmall40@2x.png -- iOS/appIcons/iconSmall40@2x.png
|
||||
COMMAND ${PNGQUANT_CMD} iOS/appIcons/iconSmall40@3x.png -- iOS/appIcons/iconSmall40@3x.png
|
||||
COMMAND ${PNGQUANT_CMD} iOS/appIcons/icon60@2x.png -- iOS/appIcons/icon60@2x.png
|
||||
COMMAND ${PNGQUANT_CMD} iOS/appIcons/icon60@3x.png -- iOS/appIcons/icon60@3x.png
|
||||
COMMAND ${PNGQUANT_CMD} iOS/appIcons/icon76.png -- iOS/appIcons/icon76.png
|
||||
COMMAND ${PNGQUANT_CMD} iOS/appIcons/icon76@2x.png -- iOS/appIcons/icon76@2x.png
|
||||
COMMAND ${PNGQUANT_CMD} iOS/appIcons/icon83.5@2x.png -- iOS/appIcons/icon83.5@2x.png
|
||||
COMMAND ${PNGQUANT_CMD} iOS/launchImages/Default-568h@2x.png -- iOS/launchImages/Default-568h@2x.png
|
||||
WORKING_DIRECTORY ${RESOURCES_DIR}/images)
|
||||
|
||||
ADD_CUSTOM_TARGET(pngquant.iphone
|
||||
COMMAND ${PNGQUANT_CMD} iOS/launchImages/launchImage568@2x.png -- iOS/launchImages/launchImage568@2x.png
|
||||
COMMAND ${PNGQUANT_CMD} iOS/launchImages/launchImage568@3x.png -- iOS/launchImages/launchImage568@3x.png
|
||||
COMMAND ${PNGQUANT_CMD} iOS/launchImages/launchImage667@2x.png -- iOS/launchImages/launchImage667@2x.png
|
||||
COMMAND ${PNGQUANT_CMD} iOS/launchImages/launchImage667@3x.png -- iOS/launchImages/launchImage667@3x.png
|
||||
COMMAND ${PNGQUANT_CMD} iOS/launchImages/launchImage736@2x.png -- iOS/launchImages/launchImage736@2x.png
|
||||
COMMAND ${PNGQUANT_CMD} iOS/launchImages/launchImage736@3x.png -- iOS/launchImages/launchImage736@3x.png
|
||||
WORKING_DIRECTORY ${RESOURCES_DIR}/images)
|
||||
|
||||
ADD_CUSTOM_TARGET(pngquant.ipad
|
||||
COMMAND ${PNGQUANT_CMD} iOS/launchImages/launchImage1024@2x.png -- iOS/launchImages/launchImage1024@2x.png
|
||||
COMMAND ${PNGQUANT_CMD} iOS/launchImages/launchImage1024@3x.png -- iOS/launchImages/launchImage1024@3x.png
|
||||
COMMAND ${PNGQUANT_CMD} iOS/launchImages/launchImage1112@2x.png -- iOS/launchImages/launchImage1112@2x.png
|
||||
COMMAND ${PNGQUANT_CMD} iOS/launchImages/launchImage1112@3x.png -- iOS/launchImages/launchImage1112@3x.png
|
||||
COMMAND ${PNGQUANT_CMD} iOS/launchImages/launchImage1366@2x.png -- iOS/launchImages/launchImage1366@2x.png
|
||||
COMMAND ${PNGQUANT_CMD} iOS/launchImages/launchImage1366@3x.png -- iOS/launchImages/launchImage1366@3x.png
|
||||
WORKING_DIRECTORY ${RESOURCES_DIR}/images)
|
||||
|
||||
ADD_CUSTOM_TARGET(pngquant.android.preview
|
||||
COMMAND ${PNGQUANT_CMD} android/ldpi/npa_preview.png -- android/ldpi/npa_preview.png
|
||||
COMMAND ${PNGQUANT_CMD} android/mdpi/npa_preview.png -- android/mdpi/npa_preview.png
|
||||
COMMAND ${PNGQUANT_CMD} android/hdpi/npa_preview.png -- android/hdpi/npa_preview.png
|
||||
|
@ -242,6 +319,41 @@ SET(PNGQUANT_CMD pngquant -f -o)
|
|||
COMMAND ${PNGQUANT_CMD} android/xxhdpi/npa_preview.png -- android/xxhdpi/npa_preview.png
|
||||
COMMAND ${PNGQUANT_CMD} android/xxxhdpi/npa_preview.png -- android/xxxhdpi/npa_preview.png
|
||||
WORKING_DIRECTORY ${RESOURCES_DIR}/images)
|
||||
|
||||
ADD_CUSTOM_TARGET(pngquant.android.beta
|
||||
COMMAND ${PNGQUANT_CMD} android/ldpi/npa_beta.png -- android/ldpi/npa_beta.png
|
||||
COMMAND ${PNGQUANT_CMD} android/mdpi/npa_beta.png -- android/mdpi/npa_beta.png
|
||||
COMMAND ${PNGQUANT_CMD} android/hdpi/npa_beta.png -- android/hdpi/npa_beta.png
|
||||
COMMAND ${PNGQUANT_CMD} android/xhdpi/npa_beta.png -- android/xhdpi/npa_beta.png
|
||||
COMMAND ${PNGQUANT_CMD} android/xxhdpi/npa_beta.png -- android/xxhdpi/npa_beta.png
|
||||
COMMAND ${PNGQUANT_CMD} android/xxxhdpi/npa_beta.png -- android/xxxhdpi/npa_beta.png
|
||||
WORKING_DIRECTORY ${RESOURCES_DIR}/images)
|
||||
|
||||
ADD_CUSTOM_TARGET(pngquant.android
|
||||
COMMAND ${PNGQUANT_CMD} android/ldpi/npa.png -- android/ldpi/npa.png
|
||||
COMMAND ${PNGQUANT_CMD} android/mdpi/npa.png -- android/mdpi/npa.png
|
||||
COMMAND ${PNGQUANT_CMD} android/hdpi/npa.png -- android/hdpi/npa.png
|
||||
COMMAND ${PNGQUANT_CMD} android/xhdpi/npa.png -- android/xhdpi/npa.png
|
||||
COMMAND ${PNGQUANT_CMD} android/xxhdpi/npa.png -- android/xxhdpi/npa.png
|
||||
COMMAND ${PNGQUANT_CMD} android/xxxhdpi/npa.png -- android/xxxhdpi/npa.png
|
||||
WORKING_DIRECTORY ${RESOURCES_DIR}/images)
|
||||
|
||||
ADD_CUSTOM_TARGET(pngquant DEPENDS pngquant.ios pngquant.ios.beta pngquant.iphone pngquant.ipad pngquant.android pngquant.android.beta pngquant.android.preview)
|
||||
ENDIF()
|
||||
|
||||
IF(NOT JAVA_EXECUTABLE)
|
||||
FIND_PACKAGE(Java COMPONENTS Runtime)
|
||||
IF(Java_JAVA_EXECUTABLE)
|
||||
SET(JAVA_EXECUTABLE "${Java_JAVA_EXECUTABLE}")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
IF(JAVA_EXECUTABLE)
|
||||
FIND_FILE(PLANTUML plantuml.jar PATHS ENV HOME NO_DEFAULT_PATH)
|
||||
IF(PLANTUML)
|
||||
MESSAGE(STATUS "Target uml.statemachines is available using: ${PLANTUML}")
|
||||
CONFIGURE_FILE(${RESOURCES_DIR}/statemachine.sh.in ${PROJECT_BINARY_DIR}/statemachine.sh @ONLY)
|
||||
ADD_CUSTOM_TARGET(uml.statemachines COMMAND ./statemachine.sh WORKING_DIRECTORY ${PROJECT_BINARY_DIR})
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
INCLUDE(Sphinx)
|
||||
|
|
|
@ -15,3 +15,7 @@ IF(CMAKE_ANDROID_ARCH_ABI MATCHES "arm64-v8a")
|
|||
ELSE()
|
||||
SET(CMAKE_SYSTEM_VERSION 18)
|
||||
ENDIF()
|
||||
|
||||
SET(CMAKE_FIND_ROOT_PATH ${CMAKE_PREFIX_PATH} CACHE string "android find search path root")
|
||||
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||
|
|
|
@ -0,0 +1,52 @@
|
|||
CMAKE_MINIMUM_REQUIRED(VERSION 3.1.0)
|
||||
|
||||
###########################################
|
||||
#### Usage: cmake -DCMD= -P cmake/cmd.cmake
|
||||
###########################################
|
||||
|
||||
FUNCTION(MESSAGE type)
|
||||
IF(ARGV0 STREQUAL "STDOUT")
|
||||
EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E echo "${ARGN}")
|
||||
ELSE()
|
||||
_MESSAGE(${type} "${ARGN}")
|
||||
ENDIF()
|
||||
ENDFUNCTION()
|
||||
|
||||
|
||||
FUNCTION(CREATE_HASH)
|
||||
IF(NOT FILES)
|
||||
MESSAGE(FATAL_ERROR "You need to specify 'FILES'")
|
||||
ENDIF()
|
||||
|
||||
IF(NOT ALGORITHM)
|
||||
SET(ALGORITHM SHA256)
|
||||
ENDIF()
|
||||
STRING(TOLOWER "${ALGORITHM}" HASHFILE_ENDING)
|
||||
|
||||
FILE(GLOB GLOBBED_FILES RELATIVE "${CMAKE_CURRENT_BINARY_DIR}" "${FILES}")
|
||||
|
||||
FOREACH(f ${GLOBBED_FILES})
|
||||
FILE(${ALGORITHM} ${f} fHash)
|
||||
SET(OUTPUT "${fHash} ${f}")
|
||||
MESSAGE(STDOUT ${OUTPUT})
|
||||
IF(CREATE_FILE)
|
||||
FILE(WRITE ${f}.${HASHFILE_ENDING} "${OUTPUT}\n")
|
||||
ENDIF()
|
||||
ENDFOREACH()
|
||||
ENDFUNCTION()
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
IF(NOT CMD)
|
||||
MESSAGE(FATAL_ERROR "You need to specify 'CMD'")
|
||||
ENDIF()
|
||||
|
||||
IF(CMD STREQUAL "HASH")
|
||||
CREATE_HASH()
|
||||
ELSE()
|
||||
MESSAGE(FATAL_ERROR "Unknown CMD: ${CMD}")
|
||||
ENDIF()
|
|
@ -166,7 +166,7 @@ set (CMAKE_OSX_SYSROOT ${CMAKE_IOS_SDK_ROOT} CACHE PATH "Sysroot used for iOS su
|
|||
|
||||
# set the architecture for iOS
|
||||
if (${IOS_PLATFORM} STREQUAL "OS")
|
||||
set (IOS_ARCH armv7 arm64)
|
||||
set (IOS_ARCH arm64)
|
||||
elseif (${IOS_PLATFORM} STREQUAL "SIMULATOR")
|
||||
set (IOS_ARCH i386)
|
||||
elseif (${IOS_PLATFORM} STREQUAL "SIMULATOR64")
|
||||
|
|
|
@ -0,0 +1,42 @@
|
|||
AusweisApp2 1.14.0
|
||||
^^^^^^^^^^^^^^^^^^
|
||||
|
||||
**Releasedatum:** 20. Dezember 2017
|
||||
|
||||
|
||||
|
||||
Anwender
|
||||
""""""""
|
||||
- Eine neue Funktion ermöglicht die Verwendung eines
|
||||
geeigneten Smartphones als Kartenlesegerät über WLAN.
|
||||
|
||||
- Umstellmöglichkeit der Sprache zur Laufzeit ermöglicht.
|
||||
|
||||
- Fortschrittsanzeige unter Windows im Taskbar-Button.
|
||||
|
||||
- Verbesserungen bei der Erstellung von PDFs.
|
||||
|
||||
- Speicherung der Protokolldateien verbessert.
|
||||
|
||||
- Einstellungsbereich für das Verwalten von
|
||||
Kartenlesegeräten hinzugefügt.
|
||||
|
||||
- Grafiken der Kartenlesegeräte erneuert und erweitert.
|
||||
|
||||
- Unter macOS wird die Bandbreite im WLAN nicht mehr
|
||||
beeinträchtigt.
|
||||
|
||||
- Beim Ausweisen ohne aktivierte Online-Ausweisfunktion wurde
|
||||
fälschlicherweise nach der PUK gefragt.
|
||||
|
||||
- Unter Windows 10 kommt es nicht mehr zu einem Absturz
|
||||
bei Proxies mit Passwort-Authentisierung.
|
||||
|
||||
|
||||
Entwickler
|
||||
""""""""""
|
||||
- Aktualisierung von OpenSSL auf die Version 1.0.2n.
|
||||
|
||||
- Aktualisierung von Qt auf die Version 5.9.3.
|
||||
|
||||
- Unterstützung von OpenSSL 1.1.0.
|
|
@ -4,10 +4,6 @@ Release Notes
|
|||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
1.12.4
|
||||
1.12.3
|
||||
1.12.2
|
||||
1.12.1
|
||||
1.12.0
|
||||
1.14.0
|
||||
announce
|
||||
issues
|
||||
|
|
|
@ -5,7 +5,7 @@ Die AusweisApp2 ist eine Software, die Sie auf Ihrem Computer installieren, um s
|
|||
Ihrem Personalausweis bzw. Ihrem elektronischen Aufenthaltstitel online auszuweisen.
|
||||
|
||||
Für die Nutzung der Online-Ausweisfunktion benötigen die Nutzerinnen und Nutzer eine
|
||||
Software, mit deren Hilfe eine sichere Verbindung zwischen Kartenlesegerät,
|
||||
Software, mit deren Hilfe eine sichere Verbindung zwischen Kartenlesegerät oder Smartphone,
|
||||
Personalausweis und eID-Diensteanbieter hergestellt werden kann. Sie ermöglicht den
|
||||
verschlüsselten Datenaustausch zwischen Personalausweis und eID-Dienst.
|
||||
|
||||
|
|
|
@ -7,14 +7,7 @@ Die nachfolgende Liste bezieht sich auf die aktuelle Version der AusweisApp2.
|
|||
es bei Benutzern mit eingeschränkten Berechtigungen zu Problemen mit der
|
||||
Online-Ausweisfunktion kommen.
|
||||
|
||||
- Bei Erhöhung der Schriftgröße über 175% kommt es zu Darstellungsfehlern.
|
||||
|
||||
- Wenn unter OS X ein Kartenleser mit aufliegendem Ausweisdokument
|
||||
angeschlossen wird und eine Selbstauskunft angestartet wurde, kann unter
|
||||
Umständen die AusweisApp2 einfrieren.
|
||||
|
||||
- Beim Ausweisen ohne aktivierte Online-Ausweisfunktion wird derzeit
|
||||
fälschlicherweise nach der PUK gefragt.
|
||||
- Bei Erhöhung der Schriftgröße über 175% kommt es zur Nutzungseinschränkung.
|
||||
|
||||
- Derzeit kommt es noch zu leichten Schwierigkeiten bei der Bedienbarkeit
|
||||
mit der Tastatur.
|
||||
|
@ -25,8 +18,12 @@ Die nachfolgende Liste bezieht sich auf die aktuelle Version der AusweisApp2.
|
|||
- Bei Verwendung des Screenreaders JAWS unter Windows, kann es zu
|
||||
leichten Irritationen bei der angegebenen Bedienung kommen.
|
||||
|
||||
- Unter Mac OS im WLAN kann die Bandbreite beeinträchtigt werden, wenn die
|
||||
AusweisApp2 im Hintergrund läuft.
|
||||
- Wenn die AusweisApp2 heruntergefahren wird, während eine Authentisierung
|
||||
oder eine PIN-Änderung mit Komfort-Kartenlesegerät durchgeführt wird,
|
||||
kann es unter Windows und macOS zu einem Absturz kommen.
|
||||
|
||||
- Unter Mac OS kommt es vereinzelt zu Problemen bei der Verwendung des Kobil
|
||||
ID Token.
|
||||
- Die PIN-Änderung über ein Smartphone als Kartenlesegerät wird nicht
|
||||
unterstützt.
|
||||
|
||||
- Unter Umständen kommt es zu Stabilitätsproblemen der NFC-Schnittstelle
|
||||
auf Android.
|
||||
|
|
|
@ -8,14 +8,14 @@ der AusweisApp2 unterstützt.
|
|||
|
||||
Betriebssysteme
|
||||
"""""""""""""""
|
||||
- OS X 10.9
|
||||
|
||||
- OS X 10.10
|
||||
|
||||
- OS X 10.11
|
||||
|
||||
- macOS 10.12
|
||||
|
||||
- macOS 10.13
|
||||
|
||||
- Windows 7 SP1 (32bit / 64bit)
|
||||
|
||||
- Windows 8.1 (64bit)
|
||||
|
@ -48,13 +48,13 @@ und sollte daher mit allen marktüblichen Browsern verwendet werden können.
|
|||
Im Rahmen der Qualitätssicherung werden die folgenden Browserversionen
|
||||
getestet.
|
||||
|
||||
- Firefox 55
|
||||
- Firefox 57
|
||||
|
||||
- Chrome 61
|
||||
- Chrome 62
|
||||
|
||||
- Internet Explorer 11
|
||||
|
||||
- Safari 10
|
||||
- Safari 11
|
||||
|
||||
|
||||
|
||||
|
@ -90,6 +90,13 @@ Zusätzlich werden folgende nicht zertifizierte Kartenleser getestet.
|
|||
Aktuelle Informationen zu Kartenlesern finden Sie auf unserer Webseite:
|
||||
https://www.ausweisapp.bund.de/fragen-und-antworten/voraussetzungen/
|
||||
|
||||
Alle NFC-fähigen Smartphones bzw. Tablets, die die Onlineausweisfunktionalität
|
||||
unterstützen, können als Kartenlesegerät verwendet werden.
|
||||
Dabei ist es notwendig die mobile AusweisApp2 auf dem jeweiligen Smartphone
|
||||
zu installieren und zu starten.
|
||||
|
||||
Details hierzu befinden sich auf der Homepage:
|
||||
https://www.ausweisapp.bund.de/mobile-geraete/
|
||||
|
||||
|
||||
Android
|
||||
|
@ -105,9 +112,9 @@ Im mobilen Umfeld ist die Funktionalität jedoch abhängig von der vom
|
|||
Diensteanbieter umgesetzten Aktivierung. Daher empfehlen wir einen der
|
||||
folgenden Browser zu verwenden.
|
||||
|
||||
- Firefox Klar 1.3
|
||||
- Firefox Klar 2.5
|
||||
|
||||
- Chrome 61
|
||||
- Chrome 63
|
||||
|
||||
- Android System WebView 60
|
||||
|
||||
|
@ -119,6 +126,10 @@ Alle NFC-fähigen Smartphones bzw. Tablets, die die Onlineausweisfunktionalität
|
|||
unterstützen. Details hierzu befinden sich auf der Homepage:
|
||||
https://www.ausweisapp.bund.de/mobile-geraete/
|
||||
|
||||
Ebenfalls ist es möglich ein weiteres Smartphone als Kartenlesegerät zu
|
||||
verwenden. Dabei ist es notwendig die mobile AusweisApp2 auf dem jeweiligen
|
||||
Smartphone zu installieren und zu starten.
|
||||
|
||||
Darüber hinaus ist die Verwendung eines Bluetooth-Kartenlesegeräts möglich.
|
||||
Folgendes Bluetooth-Kartenlesegerät wird von der AusweiApp2 unterstützt:
|
||||
|
||||
|
|
|
@ -1,6 +1,14 @@
|
|||
Versionen
|
||||
=========
|
||||
|
||||
Versionszweig 1.14
|
||||
------------------
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
1.14.0
|
||||
|
||||
|
||||
Versionszweig 1.12
|
||||
------------------
|
||||
.. toctree::
|
||||
|
|
|
@ -65,6 +65,11 @@ JSON messages from the SDK. Furthermore it has a function which is called
|
|||
when an existing connection with the SDK is dropped by the SDK. Both interfaces
|
||||
are listed below and you need to import them into your build environment.
|
||||
|
||||
.. important::
|
||||
It is required that you place the AIDL files under subdirectory
|
||||
"aidl/com.governikus.ausweisapp2". Also the interface methods
|
||||
names must be exactly the same.
|
||||
|
||||
.. seealso::
|
||||
|
||||
https://developer.android.com/guide/components/aidl.html
|
||||
|
@ -125,7 +130,7 @@ fingerprint of the authentic SDK certificate is the following:
|
|||
|
||||
.. code-block:: text
|
||||
|
||||
B0 2A C7 6B 50 A4 97 AE 81 0A EA C2 25 98 18 7B 3D 42 90 27 7D 08 51 A7 FA 8E 1A EA 5A 97 98 70
|
||||
B0:2A:C7:6B:50:A4:97:AE:81:0A:EA:C2:25:98:18:7B:3D:42:90:27:7D:08:51:A7:FA:8E:1A:EA:5A:97:98:70
|
||||
|
||||
|
||||
|
||||
|
@ -143,7 +148,7 @@ hash value of a signed application on Android can be verified.
|
|||
public class AusweisApp2Validator
|
||||
{
|
||||
private static final String PACKAGE = "com.governikus.ausweisapp2";
|
||||
private static final String FINGERPRINT = "..." // see above;
|
||||
private static final String FINGERPRINT = "..."; // see above
|
||||
|
||||
public boolean isValid()
|
||||
{
|
||||
|
@ -188,17 +193,15 @@ To differentiate between different connected clients, virtual sessions are used
|
|||
once the binding is completed. These sessions are discussed in a separate
|
||||
section, section :ref:`android_create_session`.
|
||||
|
||||
.. seealso::
|
||||
:ref:`android_disconnect_sdk`
|
||||
|
||||
|
||||
|
||||
Create connection
|
||||
^^^^^^^^^^^^^^^^^
|
||||
First of all, in order to bind to the service, one needs to instantiate
|
||||
an Android ServiceConnection. Subsequently, the object is passed to the
|
||||
Android API and the contained methods are invoked by Android on service
|
||||
connection and disconnection.
|
||||
First of all, in order to bind to the service, one needs to instantiate an
|
||||
Android ServiceConnection.
|
||||
Subsequently, the object is passed to the Android API and the contained
|
||||
methods are invoked
|
||||
by Android on service connection and disconnection.
|
||||
|
||||
|
||||
.. code-block:: java
|
||||
|
@ -226,12 +229,13 @@ 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. This Intent is send
|
||||
to the Android API along with the ServiceConnection created above.
|
||||
In order to perform the actual binding a directed Intent, which identifies
|
||||
the AusweisApp2 SDK, is created.
|
||||
This Intent is send 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.
|
||||
or connects to the running SDK instance
|
||||
if there is already another client bound.
|
||||
|
||||
|
||||
.. code-block:: java
|
||||
|
@ -472,14 +476,15 @@ The **receive** method is called each time the SDK sends a message.
|
|||
:ref:`android_create_session`
|
||||
|
||||
|
||||
|
||||
.. _android_disconnect_sdk:
|
||||
|
||||
Disconnect from SDK
|
||||
-------------------
|
||||
In order to disconnect from the AusweisApp2 SDK you need to invalidate your
|
||||
instance of **IBinder**. You can unbind from the SDK Android service to undo
|
||||
your binding, like shown in the code listing below.
|
||||
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
|
||||
**pingBinder** function of your IBinder instance.
|
||||
|
||||
.. code-block:: java
|
||||
|
||||
|
@ -670,10 +675,7 @@ are shown in code listing below.
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
This class must now be added to the activity:
|
||||
|
||||
.. code-block:: java
|
||||
// [...]
|
||||
|
||||
ForegroundDispatcher mDispatcher = new ForegroundDispatcher(this);
|
||||
|
||||
|
|
|
@ -104,7 +104,7 @@ We assume that the user did not connect the card reader.
|
|||
|
||||
{"cmd": "CANCEL"}
|
||||
|
||||
{"msg": "AUTH", "result": {"description":"The operation was aborted due to cancellation by user.","language":"en","major":"http://www.bsi.bund.de/ecard/api/1.1/resultmajor#error","message":"The process was cancelled by the user.","minor":"http://www.bsi.bund.de/ecard/api/1.1/resultminor/sal#cancellationByUser"},"url":"https://test.governikus-eid.de/DEMO/?errID=123456"}
|
||||
{"msg": "AUTH", "result": {"description":"The process was cancelled by the user.","language":"en","major":"http://www.bsi.bund.de/ecard/api/1.1/resultmajor#error","message":"The process was cancelled by the user.","minor":"http://www.bsi.bund.de/ecard/api/1.1/resultminor/sal#cancellationByUser"},"url":"https://test.governikus-eid.de/DEMO/?errID=123456"}
|
||||
|
||||
|
||||
|
||||
|
@ -134,5 +134,5 @@ We assume that the user did not connect the card reader.
|
|||
|
||||
{"cmd": "CANCEL"}
|
||||
|
||||
{"msg": "AUTH", "result": {"description":"The operation was aborted due to cancellation by user.","language":"en","major":"http://www.bsi.bund.de/ecard/api/1.1/resultmajor#error","message":"The process was cancelled by the user.","minor":"http://www.bsi.bund.de/ecard/api/1.1/resultminor/sal#cancellationByUser"},"url":"https://test.governikus-eid.de/DEMO/?errID=123456"}
|
||||
{"msg": "AUTH", "result": {"description":"The process was cancelled by the user.","language":"en","major":"http://www.bsi.bund.de/ecard/api/1.1/resultmajor#error","message":"The process was cancelled by the user.","minor":"http://www.bsi.bund.de/ecard/api/1.1/resultminor/sal#cancellationByUser"},"url":"https://test.governikus-eid.de/DEMO/?errID=123456"}
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
CMAKE_MINIMUM_REQUIRED(VERSION 3.3.0)
|
||||
CMAKE_MINIMUM_REQUIRED(VERSION 3.5.0)
|
||||
|
||||
IF(POLICY CMP0010)
|
||||
CMAKE_POLICY(SET CMP0010 NEW)
|
||||
|
@ -19,6 +19,13 @@ INCLUDE(ExternalProject)
|
|||
INCLUDE(Helper)
|
||||
INCLUDE(DVCS)
|
||||
|
||||
IF(ANDROID)
|
||||
GET_ANDROID_TOOLCHAIN_VARS(ANDROID_TOOLCHAIN_PREFIX ANDROID_TOOLCHAIN_MACHINE_NAME)
|
||||
IF(CMAKE_SYSROOT_COMPILE)
|
||||
SET(UNIFIED_INCLUDE ${CMAKE_SYSROOT_COMPILE}/usr/include)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
ADD_FLAG(-fstack-protector-strong -fstack-protector NOQUOTES VAR COMPILER_FLAGS)
|
||||
|
||||
|
||||
|
@ -97,11 +104,11 @@ INCLUDE(Messages)
|
|||
|
||||
|
||||
################################## Versionen
|
||||
SET(QT 5.8.0)
|
||||
SET(QT_HASH 0f4c54386d3dbac0606a936a7145cebb7b94b0ca2d29bc001ea49642984824b6)
|
||||
SET(QT 5.9.3)
|
||||
SET(QT_HASH 57acd8f03f830c2d7dc29fbe28aaa96781b2b9bdddce94196e6761a0f88c6046)
|
||||
|
||||
SET(OPENSSL 1.0.2k)
|
||||
SET(OPENSSL_HASH 6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0)
|
||||
SET(OPENSSL 1.0.2n)
|
||||
SET(OPENSSL_HASH 370babb75f278c39e0c50e8c4e7493bc0f18db6867478341a832a982fd15a8fe)
|
||||
|
||||
################################## Files
|
||||
SET(QT_FILE qt-everywhere-opensource-src-${QT}.tar.xz)
|
||||
|
@ -115,7 +122,7 @@ ELSE()
|
|||
ENDIF()
|
||||
STRING(SUBSTRING ${QT} 0 3 QT_SUBVERSION)
|
||||
|
||||
SET(QT_URL http://download.qt.io/${QT_DEST_DIR}/qt/${QT_SUBVERSION}/${QT}/single)
|
||||
SET(QT_URL https://download.qt.io/${QT_DEST_DIR}/qt/${QT_SUBVERSION}/${QT}/single)
|
||||
SET(OPENSSL_URL https://www.openssl.org/source)
|
||||
|
||||
IF(ANDROID OR APPLE)
|
||||
|
@ -127,24 +134,6 @@ IF(ANDROID OR APPLE)
|
|||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
################################## Android NDK /SDK
|
||||
#########################################################################
|
||||
|
||||
IF(ANDROID)
|
||||
FIND_PROGRAM(SED_CMD sed CMAKE_FIND_ROOT_PATH_BOTH)
|
||||
IF(SED_CMD)
|
||||
MESSAGE(STATUS "Using 'sed' command... ${SED_CMD}")
|
||||
ELSE()
|
||||
MESSAGE(FATAL_ERROR "Cannot find 'sed' command")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
IF(IOS)
|
||||
SET(HOST --host=arm-apple-darwin7)
|
||||
SET(HOST64 --host=aarch64-apple-darwin)
|
||||
SET(IOS_ARCH armv7)
|
||||
SET(IOS_ARCH64 arm64)
|
||||
ENDIF()
|
||||
|
||||
SET(ENABLED_TARGETS)
|
||||
|
||||
|
@ -157,10 +146,11 @@ SET(OPENSSL_CONFIGURE_FLAGS no-ssl2 no-ssl3 no-ssl3-method no-dtls no-srp no-ide
|
|||
IF(IOS)
|
||||
SET(OPENSSL_PATCH_COMMAND ${PATCH_CMD} -p1 ${PATCH_OPTIONS} ${PATCHES_DIR}/openssl_iOS.patch && )
|
||||
SET(OPENSSL_CONFIGURE_FLAGS ${OPENSSL_CONFIGURE_FLAGS} iphoneos-cross)
|
||||
SET(OPENSSL_PATCH_AFTER_CONFIGURE ${SH_CMD} ${PATCHES_DIR}/openssl_iOS_perl.sh ${CMAKE_IOS_SDK_ROOT} &&)
|
||||
SET(OPENSSL_ENV export CROSS_TOP=${CMAKE_IOS_DEVELOPER_ROOT} && export CROSS_SDK=iPhoneOS.sdk &&)
|
||||
SET(OPENSSL_COMPILER_FLAGS "-arch arm64")
|
||||
ELSEIF(APPLE)
|
||||
SET(OPENSSL_CONFIGURE_FLAGS ${OPENSSL_CONFIGURE_FLAGS} darwin64-x86_64-cc)
|
||||
#SET(OPENSSL_PATCH_AFTER_CONFIGURE ${SH_CMD} ${PATCHES_DIR}/openssl_MacOS_perl.sh &&)
|
||||
SET(COMPILER_FLAGS "${COMPILER_FLAGS} -mmacosx-version-min=10.9")
|
||||
ELSEIF(MINGW)
|
||||
SET(OPENSSL_CONFIGURE_FLAGS ${OPENSSL_CONFIGURE_FLAGS} mingw)
|
||||
ELSEIF(MSVC)
|
||||
|
@ -181,19 +171,25 @@ ELSEIF(ANDROID)
|
|||
ENDIF()
|
||||
|
||||
SET(OPENSSL_ENV export ANDROID_DEV=${CMAKE_SYSROOT}/usr &&)
|
||||
IF(UNIFIED_INCLUDE)
|
||||
SET(OPENSSL_CONFIGURE_FLAGS ${OPENSSL_CONFIGURE_FLAGS} -D__ANDROID_API__=${CMAKE_SYSTEM_VERSION} -isystem${UNIFIED_INCLUDE} -isystem${UNIFIED_INCLUDE}/${ANDROID_TOOLCHAIN_MACHINE_NAME})
|
||||
ENDIF()
|
||||
SET(OPENSSL_CONFIGURE_FLAGS ${OPENSSL_CONFIGURE_FLAGS} --cross-compile-prefix=${CMAKE_C_ANDROID_TOOLCHAIN_PREFIX} ${OPENSSL_ARCH})
|
||||
SET(OPENSSL_PATCH_COMMAND ${PATCH_CMD} -p0 ${PATCH_OPTIONS} ${PATCHES_DIR}/soname/openssl_makefile.shared.patch && ${SH_CMD} ${PATCHES_DIR}/soname/openssl_sed.sh && )
|
||||
|
||||
ELSEIF(BSD)
|
||||
SET(OPENSSL_CONFIGURE_FLAGS ${OPENSSL_CONFIGURE_FLAGS} BSD-x86_64)
|
||||
ELSEIF(LINUX)
|
||||
SET(OPENSSL_CONFIGURE_FLAGS ${OPENSSL_CONFIGURE_FLAGS} linux-x86_64)
|
||||
IF(CMAKE_SYSTEM_PROCESSOR STREQUAL "i686")
|
||||
SET(OPENSSL_ARCH linux-generic32)
|
||||
ELSE()
|
||||
SET(OPENSSL_ARCH linux-x86_64)
|
||||
ENDIF()
|
||||
SET(OPENSSL_CONFIGURE_FLAGS ${OPENSSL_CONFIGURE_FLAGS} ${OPENSSL_ARCH})
|
||||
ELSE()
|
||||
MESSAGE(FATAL_ERROR "Unsupported system")
|
||||
ENDIF()
|
||||
|
||||
IF(NOT OPENSSL_PREBUILD)
|
||||
SET(OPENSSL_PREBUILD ${OPENSSL_PATCH_AFTER_CONFIGURE} ${MAKE} depend)
|
||||
SET(OPENSSL_PREBUILD ${MAKE} depend)
|
||||
ENDIF()
|
||||
|
||||
IF(NOT OPENSSL_INSTALL_TARGET)
|
||||
|
@ -201,42 +197,6 @@ IF(NOT OPENSSL_INSTALL_TARGET)
|
|||
ENDIF()
|
||||
|
||||
# OpenSSL does not support multiple make jobs!
|
||||
IF(IOS)
|
||||
ExternalProject_Add(openssl64
|
||||
URL ${OPENSSL_URL}/${OPENSSL_FILE}
|
||||
URL_HASH SHA256=${OPENSSL_HASH}
|
||||
DOWNLOAD_DIR ${PACKAGES_DIR}
|
||||
|
||||
PATCH_COMMAND
|
||||
${OPENSSL_PATCH_COMMAND}
|
||||
${PATCH_CMD} -p1 ${PATCH_OPTIONS} ${PATCHES_DIR}/openssl-fix-no-engine-build.patch &&
|
||||
${PATCH_CMD} -p1 ${PATCH_OPTIONS} ${PATCHES_DIR}/openssl_rsa_psk.patch
|
||||
|
||||
CONFIGURE_COMMAND ${PERL_EXECUTABLE} Configure --prefix=${PROJECT_BINARY_DIR}/openssl64-prefix/tmp ${OPENSSL_CONFIGURE_FLAGS} "-arch ${IOS_ARCH64}" "${COMPILER_FLAGS}"
|
||||
BUILD_COMMAND ${OPENSSL_PATCH_AFTER_CONFIGURE} ${MAKE} depend && ${MAKE}
|
||||
BUILD_IN_SOURCE 1
|
||||
INSTALL_COMMAND ${MAKE} install_sw
|
||||
)
|
||||
|
||||
ExternalProject_Add(openssl
|
||||
DEPENDS openssl64
|
||||
URL ${OPENSSL_URL}/${OPENSSL_FILE}
|
||||
URL_HASH SHA256=${OPENSSL_HASH}
|
||||
DOWNLOAD_DIR ${PACKAGES_DIR}
|
||||
|
||||
PATCH_COMMAND
|
||||
${OPENSSL_PATCH_COMMAND}
|
||||
${PATCH_CMD} -p1 ${PATCH_OPTIONS} ${PATCHES_DIR}/openssl-fix-no-engine-build.patch &&
|
||||
${PATCH_CMD} -p1 ${PATCH_OPTIONS} ${PATCHES_DIR}/openssl_rsa_psk.patch
|
||||
|
||||
CONFIGURE_COMMAND ${PERL_EXECUTABLE} Configure --prefix=${PROJECT_BINARY_DIR}/openssl-prefix/tmp ${OPENSSL_CONFIGURE_FLAGS} "-arch ${IOS_ARCH}" "${COMPILER_FLAGS}"
|
||||
BUILD_COMMAND ${OPENSSL_PATCH_AFTER_CONFIGURE} ${MAKE} depend && ${MAKE}
|
||||
BUILD_IN_SOURCE 1
|
||||
INSTALL_COMMAND ${MAKE} install_sw
|
||||
)
|
||||
|
||||
ADD_CUSTOM_COMMAND(TARGET openssl POST_BUILD COMMAND ${SH_CMD} ${PATCHES_DIR}/create_multi_architecture_build.sh ${PROJECT_BINARY_DIR}/openssl-prefix/tmp ${PROJECT_BINARY_DIR}/openssl64-prefix/tmp ${DESTINATION_DIR})
|
||||
ELSE()
|
||||
ExternalProject_Add(openssl
|
||||
URL ${OPENSSL_URL}/${OPENSSL_FILE}
|
||||
URL_HASH SHA256=${OPENSSL_HASH}
|
||||
|
@ -258,7 +218,6 @@ ExternalProject_Add_Step(openssl prebuild
|
|||
DEPENDEES configure
|
||||
DEPENDERS build
|
||||
WORKING_DIRECTORY <BINARY_DIR>)
|
||||
ENDIF()
|
||||
|
||||
IF(UNIX)
|
||||
ADD_CUSTOM_COMMAND(TARGET openssl POST_BUILD COMMAND chmod 755 ${DESTINATION_DIR}/lib/libssl*${CMAKE_SHARED_LIBRARY_SUFFIX} ${DESTINATION_DIR}/lib/libcrypto*${CMAKE_SHARED_LIBRARY_SUFFIX})
|
||||
|
@ -287,9 +246,18 @@ ELSE()
|
|||
SET(QT_CONFIGURE_FLAGS -release -no-qml-debug)
|
||||
ENDIF()
|
||||
|
||||
|
||||
SET(QT_CONFIGURE_FLAGS ${QT_CONFIGURE_FLAGS} -prefix ${DESTINATION_DIR} -opensource -confirm-license -qt-zlib -no-mtdev -qt-libpng -qt-libjpeg -no-harfbuzz -qt-pcre -system-proxies -no-compile-examples -nomake examples -nomake tests -no-sql-sqlite -openssl-linked -I ${DESTINATION_DIR}/include -L ${DESTINATION_DIR}/lib)
|
||||
|
||||
LIST(APPEND NO_FEATURES bearermanagement ftp paint_debug)
|
||||
LIST(APPEND NO_FEATURES imageformat_bmp imageformat_ppm imageformat_xbm)
|
||||
LIST(APPEND NO_FEATURES sharedmemory textodfwriter)
|
||||
FOREACH(feature ${NO_FEATURES})
|
||||
SET(QT_CONFIGURE_FLAGS ${QT_CONFIGURE_FLAGS} -no-feature-${feature})
|
||||
ENDFOREACH()
|
||||
|
||||
SET(QT_CONFIGURE_FLAGS_OTHER -no-journald -no-dbus -no-directfb -no-linuxfb)
|
||||
SET(QT_CONFIGURE_FLAGS_SKIP_MODULES -skip qtscxml -skip qtxmlpatterns -skip qtwebchannel -skip qtwebengine -skip qtscript -skip qtactiveqt -skip qtlocation -skip qtserialbus -skip qtserialport -skip qtgamepad -skip qtvirtualkeyboard -skip qtcanvas3d -skip qtcharts -skip qtdatavis3d -skip qt3d -skip qtpurchasing)
|
||||
SET(QT_CONFIGURE_FLAGS_SKIP_MODULES -skip qtscxml -skip qtxmlpatterns -skip qtwebchannel -skip qtwebengine -skip qtscript -skip qtactiveqt -skip qtlocation -skip qtserialbus -skip qtserialport -skip qtgamepad -skip qtvirtualkeyboard -skip qtcanvas3d -skip qtcharts -skip qtdatavis3d -skip qt3d -skip qtpurchasing -skip qtwayland -skip qtremoteobjects -skip qtspeech -skip qtwebview)
|
||||
|
||||
SET(QT_CONFIGURE ./configure)
|
||||
IF(IOS)
|
||||
|
@ -339,17 +307,12 @@ ExternalProject_Add(qt
|
|||
|
||||
PATCH_COMMAND ${QT_PATCH_COMMAND}
|
||||
${PATCH_CMD} -p1 ${PATCH_OPTIONS} ${PATCHES_DIR}/qt-Make-server-side-signature-algorithms-configurable.patch &&
|
||||
${PATCH_CMD} -p1 ${PATCH_OPTIONS} ${PATCHES_DIR}/qt-Use-apksigner-by-default-if-available-to-sign-the-AP.patch &&
|
||||
${PATCH_CMD} -p1 ${PATCH_OPTIONS} ${PATCHES_DIR}/qt-Android-Add-support-for-sendCommand-to-QNearFieldTarget.patch &&
|
||||
${PATCH_CMD} -p1 ${PATCH_OPTIONS} ${PATCHES_DIR}/qt-Android-QNearfieldTarget-Introduce-maxCommandLength.patch &&
|
||||
${PATCH_CMD} -p1 ${PATCH_OPTIONS} ${PATCHES_DIR}/qt-QNearfieldTarget-Introduce-set-keepConnection-and-disconnect.patch &&
|
||||
${PATCH_CMD} -p1 ${PATCH_OPTIONS} ${PATCHES_DIR}/qt-Use-defaultSize-according-to-svg-standard-in-svg-plugin.patch &&
|
||||
${PATCH_CMD} -p1 ${PATCH_OPTIONS} ${PATCHES_DIR}/qt-Do-not-request-an-unnessessary-dangerous-right.patch &&
|
||||
${PATCH_CMD} -p1 ${PATCH_OPTIONS} ${PATCHES_DIR}/qt-Introduce-QNetworkAccessManager-clearConnectionCache.patch &&
|
||||
${PATCH_CMD} -p1 ${PATCH_OPTIONS} ${PATCHES_DIR}/qt-Introduce-QNetworkAccessManager-useAuthenticationManagerFrom.patch &&
|
||||
${PATCH_CMD} -p1 ${PATCH_OPTIONS} ${PATCHES_DIR}/qt-Make-variant-selection-possible-if-base-is-missing.patch &&
|
||||
${PATCH_CMD} -p1 ${PATCH_OPTIONS} ${PATCHES_DIR}/qt-Add-debug-stream-operator-for-QNetworkProxyQuery.patch &&
|
||||
${PATCH_CMD} -p1 ${PATCH_OPTIONS} ${PATCHES_DIR}/qt-Allow-using-nfc-when-running-as-a-service.patch &&
|
||||
${PATCH_CMD} -p1 ${PATCH_OPTIONS} ${PATCHES_DIR}/qt-Register-additional-meta-types.patch &&
|
||||
${PATCH_CMD} -p1 ${PATCH_OPTIONS} ${PATCHES_DIR}/qt-Change-build-configuration-for-Qt-on-iOS.patch &&
|
||||
${PATCH_CMD} -p1 ${PATCH_OPTIONS} ${PATCHES_DIR}/qt-Disable-unused-imageformats.patch &&
|
||||
${PATCH_CMD} -p1 ${PATCH_OPTIONS} ${PATCHES_DIR}/qt-Avoid-using-deprecated-APIs-on-iOS-10.0.patch &&
|
||||
${PATCH_CMD} -p1 ${PATCH_OPTIONS} ${PATCHES_DIR}/qt-Add-IsoDep-to-the-techList-on-Android.patch &&
|
||||
${PATCH_CMD} -p1 ${PATCH_OPTIONS} ${PATCHES_DIR}/qt-macOS-iOS-Fix-garbled-text-under-some-conditions.patch &&
|
||||
${CMAKE_COMMAND} -E touch qtbase/.gitignore
|
||||
CONFIGURE_COMMAND ${QT_ENV} ${QT_CONFIGURE} ${QT_CONFIGURE_FLAGS} ${QT_CONFIGURE_FLAGS_SKIP_MODULES}
|
||||
BUILD_COMMAND ${MAKE} ${MAKE_JOBS}
|
||||
|
|
|
@ -17,7 +17,7 @@ Unterstützte Compiler:
|
|||
|
||||
Notwendige Bibliotheken:
|
||||
|
||||
- Qt >= 5.8
|
||||
- Qt >= 5.9
|
||||
|
||||
- http://www.qt.io/download/
|
||||
|
||||
|
@ -31,12 +31,12 @@ Notwendige Bibliotheken:
|
|||
|
||||
- openssl_rsa_psk.patch
|
||||
|
||||
- pcsclite >= 1.8 (nur Linux)
|
||||
- pcsclite >= 1.8 (nur Linux/FreeBSD)
|
||||
|
||||
|
||||
Notwendige Tools:
|
||||
|
||||
- CMake >= 3.3.0 (>= 3.7.1 für Android)
|
||||
- CMake >= 3.5.0 (>= 3.7.1 für Android)
|
||||
|
||||
- http://www.cmake.org
|
||||
|
||||
|
@ -221,7 +221,7 @@ Komponenten vorhanden sein:
|
|||
wird. Dies kann mittels der Umgebungsvariable ANDROID_BUILD_TOOLS_REVISION behoben werden.
|
||||
Die genaue Version ist im Android Manager vom Android SDK (./tools/android) hinterlegt.
|
||||
|
||||
- Getestet: 26.0.1
|
||||
- Getestet: 27.0.1
|
||||
|
||||
- Um Qt erfolgreich zu bauen, sind verschiedene API Level von Android notwendig.
|
||||
Diese sollten mindestens Level 18 und 21 sein. Nähere Informationen dazu
|
||||
|
|
|
@ -1,70 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
DIR=$1
|
||||
DIR64=$2
|
||||
PREFIX_PATH=$3
|
||||
|
||||
#
|
||||
# Copy content of all folders except the library files
|
||||
#
|
||||
echo "Copy content to ${PREFIX_PATH}:"
|
||||
for dir in ${DIR}/* ; do
|
||||
if [ -d $dir ]
|
||||
then
|
||||
dirname=$(basename "$dir")
|
||||
if [ "$dirname" != "lib" ]
|
||||
then
|
||||
echo "* Copy content of ${dir}"
|
||||
mkdir -p ${PREFIX_PATH}/${dirname}
|
||||
cp -R ${dir}/* ${PREFIX_PATH}/${dirname}
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
#
|
||||
# Make multi-architecture libraries
|
||||
#
|
||||
echo "Create multi-architecture libraries in ${PREFIX_PATH}/lib:"
|
||||
mkdir -p ${PREFIX_PATH}/lib
|
||||
cd ${PREFIX_PATH}/lib
|
||||
for file in ${DIR}/lib/* ; do
|
||||
filename=$(basename "$file")
|
||||
|
||||
if [[ ( $filename == *.dylib ) || ( $filename == *.a ) ]]
|
||||
then
|
||||
if [ -h $file ]
|
||||
then
|
||||
# create symbolic links for multi-architecture library
|
||||
|
||||
resolvedfilename=$(readlink "$file")
|
||||
echo "* Create sym link ${filename}"
|
||||
ln -s ${resolvedfilename} ${filename}
|
||||
else
|
||||
# create multi-architecture library
|
||||
|
||||
file64=${DIR64}/lib/${filename}
|
||||
if [ -f $file64 ]
|
||||
then
|
||||
echo "* Create lib ${filename}"
|
||||
lipo $file $file64 -create -output ${filename}
|
||||
else
|
||||
echo "* 64bit library not found ${file64}"
|
||||
fi
|
||||
fi
|
||||
elif [[ ( $filename == pkgconfig ) ]]
|
||||
then
|
||||
|
||||
mkdir -p ${PREFIX_PATH}/lib/pkgconfig
|
||||
for configfile in ${DIR}/lib/pkgconfig/* ; do
|
||||
configfilename=$(basename "$configfile")
|
||||
sed "s:${DIR}:${PREFIX_PATH}:g" "$configfile" > pkgconfig/${configfilename}
|
||||
echo "* Copy adapted package config file ${configfilename}"
|
||||
done
|
||||
elif [ -f $file ]
|
||||
then
|
||||
echo "* Skip file ${filename}"
|
||||
else
|
||||
echo "* Skip directory ${filename}"
|
||||
fi
|
||||
done
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
From 08b250d56592b8e385cfc37c2d938b839653c264 Mon Sep 17 00:00:00 2001
|
||||
From aeae7469061c1675d651224789fc664d6809b0d9 Mon Sep 17 00:00:00 2001
|
||||
From: "Dr. Stephen Henson" <steve@openssl.org>
|
||||
Date: Sat, 16 Jan 2016 16:11:34 +0000
|
||||
Subject: [PATCH] fix no-engine build
|
||||
|
@ -11,10 +11,10 @@ Reviewed-by: Richard Levitte <levitte@openssl.org>
|
|||
util/mk1mf.pl | 3 +--
|
||||
3 files changed, 5 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/crypto/ts/ts.h b/crypto/ts/ts.h
|
||||
index 2daa1b2fb..fc8c14b2d 100644
|
||||
--- a/crypto/ts/ts.h
|
||||
+++ b/crypto/ts/ts.h
|
||||
diff --git x/crypto/ts/ts.h y/crypto/ts/ts.h
|
||||
index 2daa1b2fb5..fc8c14b2d0 100644
|
||||
--- x/crypto/ts/ts.h
|
||||
+++ y/crypto/ts/ts.h
|
||||
@@ -737,9 +737,11 @@ EVP_PKEY *TS_CONF_load_key(const char *file, const char *pass);
|
||||
const char *TS_CONF_get_tsa_section(CONF *conf, const char *section);
|
||||
int TS_CONF_set_serial(CONF *conf, const char *section, TS_serial_cb cb,
|
||||
|
@ -27,10 +27,10 @@ index 2daa1b2fb..fc8c14b2d 100644
|
|||
int TS_CONF_set_signer_cert(CONF *conf, const char *section,
|
||||
const char *cert, TS_RESP_CTX *ctx);
|
||||
int TS_CONF_set_certs(CONF *conf, const char *section, const char *certs,
|
||||
diff --git a/util/libeay.num b/util/libeay.num
|
||||
index 2094ab364..23ade08e2 100755
|
||||
--- a/util/libeay.num
|
||||
+++ b/util/libeay.num
|
||||
diff --git x/util/libeay.num y/util/libeay.num
|
||||
index fddfe1cbb2..a76424ceab 100755
|
||||
--- x/util/libeay.num
|
||||
+++ y/util/libeay.num
|
||||
@@ -3874,7 +3874,7 @@ b2i_PVK_bio 4250 EXIST::FUNCTION:RC4
|
||||
ASN1_UTCTIME_adj 4251 EXIST::FUNCTION:
|
||||
TS_TST_INFO_new 4252 EXIST::FUNCTION:
|
||||
|
@ -49,15 +49,15 @@ index 2094ab364..23ade08e2 100755
|
|||
EVP_PKEY_verify_init 4474 EXIST::FUNCTION:
|
||||
TS_CONF_set_policies 4475 EXIST::FUNCTION:
|
||||
ASN1_PCTX_new 4476 EXIST::FUNCTION:
|
||||
diff --git a/util/mk1mf.pl b/util/mk1mf.pl
|
||||
index 7a3ae11f7..6ada6fa62 100755
|
||||
--- a/util/mk1mf.pl
|
||||
+++ b/util/mk1mf.pl
|
||||
diff --git x/util/mk1mf.pl y/util/mk1mf.pl
|
||||
index 6b31496ed1..ccfb24ca55 100755
|
||||
--- x/util/mk1mf.pl
|
||||
+++ y/util/mk1mf.pl
|
||||
@@ -428,7 +428,6 @@ EOF
|
||||
{
|
||||
$extra_install .= <<"EOF"
|
||||
\$(MKDIR) \"\$(INSTALLTOP)${o}lib${o}engines\"
|
||||
- \$(CP) \"\$(E_SHLIB)\" \"\$(INSTALLTOP)${o}lib${o}engines\"
|
||||
- \$(CP) \$(E_SHLIB) \"\$(INSTALLTOP)${o}lib${o}engines\"
|
||||
EOF
|
||||
}
|
||||
}
|
||||
|
@ -71,5 +71,5 @@ index 7a3ae11f7..6ada6fa62 100755
|
|||
exe: \$(T_EXE) \$(BIN_D)$o\$(E_EXE)$exep
|
||||
|
||||
--
|
||||
2.11.0
|
||||
2.15.0
|
||||
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
#!/bin/sh
|
||||
echo "Patching..."
|
||||
|
||||
perl -i -pe "s|^MAKEDEPPROG=makedepend|MAKEDEPPROG= \\\$(CC) -M|g" Makefile
|
|
@ -1,9 +0,0 @@
|
|||
#!/bin/sh
|
||||
echo "Patching..."
|
||||
|
||||
SDK=$1
|
||||
echo "SDK: ${SDK}"
|
||||
|
||||
perl -i -pe "s|^CC= (.*)|CC= \$1 -miphoneos-version-min=7.1|g" Makefile
|
||||
perl -i -pe "s|^MAKEDEPPROG=makedepend|MAKEDEPPROG= \\\$(CC) -M|g" Makefile
|
||||
perl -i -pe "s|isysroot\s\S+\s|isysroot ${SDK} |g" Makefile
|
|
@ -1,4 +1,4 @@
|
|||
From 496ac24b811593df82490643d574a037aa47d80e Mon Sep 17 00:00:00 2001
|
||||
From e681bc2125a396ff34aab4c3f629683dd0ce28bb Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Andr=C3=A9=20Klitzing?= <aklitzing@gmail.com>
|
||||
Date: Thu, 23 Apr 2015 20:59:30 +0200
|
||||
Subject: [PATCH] Introduce TLS-RSA-PSK support
|
||||
|
@ -12,21 +12,21 @@ This work has been sponsored by Governikus GmbH & Co. KG.
|
|||
PR: 2464
|
||||
---
|
||||
doc/apps/ciphers.pod | 12 +++
|
||||
ssl/s3_clnt.c | 122 ++++++++++++++++++++++-----
|
||||
ssl/s3_clnt.c | 106 ++++++++++++++++++++----
|
||||
ssl/s3_lib.c | 206 +++++++++++++++++++++++++++++++++++++++++++++-
|
||||
ssl/s3_srvr.c | 227 ++++++++++++++++++++++++++++++++++++++++++++++++---
|
||||
ssl/s3_srvr.c | 226 ++++++++++++++++++++++++++++++++++++++++++++++++---
|
||||
ssl/ssl.h | 2 +
|
||||
ssl/ssl_ciph.c | 9 +-
|
||||
ssl/ssl_lib.c | 6 ++
|
||||
ssl/ssl_locl.h | 2 +
|
||||
ssl/tls1.h | 36 ++++++++
|
||||
9 files changed, 587 insertions(+), 35 deletions(-)
|
||||
9 files changed, 572 insertions(+), 33 deletions(-)
|
||||
|
||||
diff --git x/doc/apps/ciphers.pod y/doc/apps/ciphers.pod
|
||||
index 922455725..234350faa 100644
|
||||
index fa16124d08..45db06c168 100644
|
||||
--- x/doc/apps/ciphers.pod
|
||||
+++ y/doc/apps/ciphers.pod
|
||||
@@ -583,10 +583,22 @@ Note: these ciphers can also be used in SSL v3.
|
||||
@@ -585,10 +585,22 @@ Note: these ciphers can also be used in SSL v3.
|
||||
|
||||
=head2 Pre shared keying (PSK) cipheruites
|
||||
|
||||
|
@ -50,10 +50,10 @@ index 922455725..234350faa 100644
|
|||
=head2 Deprecated SSL v2.0 cipher suites.
|
||||
|
||||
diff --git x/ssl/s3_clnt.c y/ssl/s3_clnt.c
|
||||
index 32f2f1aee..cd05f4d52 100644
|
||||
index 5b8b2da59f..ae0d4d840c 100644
|
||||
--- x/ssl/s3_clnt.c
|
||||
+++ y/ssl/s3_clnt.c
|
||||
@@ -337,7 +337,7 @@ int ssl3_connect(SSL *s)
|
||||
@@ -342,7 +342,7 @@ int ssl3_connect(SSL *s)
|
||||
}
|
||||
#endif
|
||||
/* Check if it is anon DH/ECDH, SRP auth */
|
||||
|
@ -62,7 +62,7 @@ index 32f2f1aee..cd05f4d52 100644
|
|||
if (!
|
||||
(s->s3->tmp.
|
||||
new_cipher->algorithm_auth & (SSL_aNULL | SSL_aSRP))
|
||||
@@ -1419,9 +1419,9 @@ int ssl3_get_key_exchange(SSL *s)
|
||||
@@ -1424,9 +1424,9 @@ int ssl3_get_key_exchange(SSL *s)
|
||||
}
|
||||
#ifndef OPENSSL_NO_PSK
|
||||
/*
|
||||
|
@ -75,53 +75,30 @@ index 32f2f1aee..cd05f4d52 100644
|
|||
*/
|
||||
if (alg_k & SSL_kPSK) {
|
||||
s->session->sess_cert = ssl_sess_cert_new();
|
||||
@@ -1466,7 +1466,12 @@ int ssl3_get_key_exchange(SSL *s)
|
||||
@@ -1471,7 +1471,12 @@ int ssl3_get_key_exchange(SSL *s)
|
||||
al = SSL_AD_DECODE_ERROR;
|
||||
|
||||
#ifndef OPENSSL_NO_PSK
|
||||
- if (alg_k & SSL_kPSK) {
|
||||
+ /* handle PSK identity hint */
|
||||
+ if (alg_k & (SSL_kPSK
|
||||
+ if (alg_k & SSL_kPSK
|
||||
+#ifndef OPENSSL_NO_RSA
|
||||
+ | SSL_kRSAPSK
|
||||
+ || alg_k & SSL_kRSAPSK
|
||||
+#endif
|
||||
+ )) {
|
||||
+ ) {
|
||||
param_len = 2;
|
||||
if (param_len > n) {
|
||||
SSLerr(SSL_F_SSL3_GET_KEY_EXCHANGE, SSL_R_LENGTH_TOO_SHORT);
|
||||
@@ -1610,7 +1615,11 @@ int ssl3_get_key_exchange(SSL *s)
|
||||
} else
|
||||
#endif /* !OPENSSL_NO_SRP */
|
||||
#ifndef OPENSSL_NO_RSA
|
||||
- if (alg_k & SSL_kRSA) {
|
||||
+ if (alg_k & (SSL_kRSA
|
||||
+#ifndef OPENSSL_NO_PSK
|
||||
+ | SSL_kRSAPSK
|
||||
+#endif
|
||||
+ )) {
|
||||
/* Temporary RSA keys only allowed in export ciphersuites */
|
||||
if (!SSL_C_IS_EXPORT(s->s3->tmp.new_cipher)) {
|
||||
al = SSL_AD_UNEXPECTED_MESSAGE;
|
||||
@@ -2034,8 +2043,16 @@ int ssl3_get_key_exchange(SSL *s)
|
||||
}
|
||||
@@ -2041,7 +2046,7 @@ int ssl3_get_key_exchange(SSL *s)
|
||||
}
|
||||
} else {
|
||||
- /* aNULL, aSRP or kPSK do not need public keys */
|
||||
/* aNULL, aSRP or kPSK do not need public keys */
|
||||
- if (!(alg_a & (SSL_aNULL | SSL_aSRP)) && !(alg_k & SSL_kPSK)) {
|
||||
+ /* aNULL, aSRP, kPSK or kRSAPSK do not need public keys */
|
||||
+ if (!(alg_a & (SSL_aNULL | SSL_aSRP))
|
||||
+#ifndef OPENSSL_NO_PSK
|
||||
+ && !(alg_k & (SSL_kPSK
|
||||
+#ifndef OPENSSL_NO_RSA
|
||||
+ | SSL_kRSAPSK
|
||||
+#endif
|
||||
+ ))
|
||||
+#endif
|
||||
+ ) {
|
||||
+ if (!(alg_a & (SSL_aNULL | SSL_aSRP)) && !(alg_k & SSL_kPSK) && !(alg_k & SSL_kRSAPSK)) {
|
||||
/* Might be wrong key type, check it */
|
||||
if (ssl3_check_cert_and_algorithm(s))
|
||||
/* Otherwise this shouldn't happen */
|
||||
@@ -3124,7 +3141,11 @@ int ssl3_send_client_key_exchange(SSL *s)
|
||||
@@ -3130,7 +3135,11 @@ int ssl3_send_client_key_exchange(SSL *s)
|
||||
}
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_PSK
|
||||
|
@ -134,7 +111,7 @@ index 32f2f1aee..cd05f4d52 100644
|
|||
/*
|
||||
* The callback needs PSK_MAX_IDENTITY_LEN + 1 bytes to return a
|
||||
* \0-terminated identity. The last byte is for us for simulating
|
||||
@@ -3132,8 +3153,8 @@ int ssl3_send_client_key_exchange(SSL *s)
|
||||
@@ -3138,8 +3147,8 @@ int ssl3_send_client_key_exchange(SSL *s)
|
||||
*/
|
||||
char identity[PSK_MAX_IDENTITY_LEN + 2];
|
||||
size_t identity_len;
|
||||
|
@ -144,7 +121,7 @@ index 32f2f1aee..cd05f4d52 100644
|
|||
unsigned int pre_ms_len = 0, psk_len = 0;
|
||||
int psk_err = 1;
|
||||
|
||||
@@ -3165,14 +3186,34 @@ int ssl3_send_client_key_exchange(SSL *s)
|
||||
@@ -3171,14 +3180,34 @@ int ssl3_send_client_key_exchange(SSL *s)
|
||||
ERR_R_INTERNAL_ERROR);
|
||||
goto psk_err;
|
||||
}
|
||||
|
@ -187,7 +164,7 @@ index 32f2f1aee..cd05f4d52 100644
|
|||
|
||||
if (s->session->psk_identity_hint != NULL)
|
||||
OPENSSL_free(s->session->psk_identity_hint);
|
||||
@@ -3202,8 +3243,41 @@ int ssl3_send_client_key_exchange(SSL *s)
|
||||
@@ -3208,8 +3237,41 @@ int ssl3_send_client_key_exchange(SSL *s)
|
||||
pre_ms_len);
|
||||
s2n(identity_len, p);
|
||||
memcpy(p, identity, identity_len);
|
||||
|
@ -229,34 +206,34 @@ index 32f2f1aee..cd05f4d52 100644
|
|||
psk_err:
|
||||
OPENSSL_cleanse(identity, sizeof(identity));
|
||||
OPENSSL_cleanse(psk_or_pre_ms, sizeof(psk_or_pre_ms));
|
||||
@@ -3574,7 +3648,11 @@ int ssl3_check_cert_and_algorithm(SSL *s)
|
||||
@@ -3580,7 +3642,11 @@ int ssl3_check_cert_and_algorithm(SSL *s)
|
||||
}
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_RSA
|
||||
- if (alg_k & SSL_kRSA) {
|
||||
+ if (alg_k & (SSL_kRSA
|
||||
+ if (alg_k & SSL_kRSA
|
||||
+#ifndef OPENSSL_NO_PSK
|
||||
+ | SSL_kRSAPSK
|
||||
+ || alg_k & SSL_kRSAPSK
|
||||
+#endif
|
||||
+ )) {
|
||||
+ ) {
|
||||
if (!SSL_C_IS_EXPORT(s->s3->tmp.new_cipher) &&
|
||||
!has_bits(i, EVP_PK_RSA | EVP_PKT_ENC)) {
|
||||
SSLerr(SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM,
|
||||
@@ -3641,7 +3719,11 @@ int ssl3_check_cert_and_algorithm(SSL *s)
|
||||
@@ -3647,7 +3713,11 @@ int ssl3_check_cert_and_algorithm(SSL *s)
|
||||
if (SSL_C_IS_EXPORT(s->s3->tmp.new_cipher) &&
|
||||
pkey_bits > SSL_C_EXPORT_PKEYLENGTH(s->s3->tmp.new_cipher)) {
|
||||
#ifndef OPENSSL_NO_RSA
|
||||
- if (alg_k & SSL_kRSA) {
|
||||
+ if (alg_k & (SSL_kRSA
|
||||
+ if (alg_k & SSL_kRSA
|
||||
+#ifndef OPENSSL_NO_PSK
|
||||
+ | SSL_kRSAPSK
|
||||
+ || alg_k & SSL_kRSAPSK
|
||||
+#endif
|
||||
+ )) {
|
||||
+ ) {
|
||||
if (rsa == NULL) {
|
||||
SSLerr(SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM,
|
||||
SSL_R_MISSING_EXPORT_TMP_RSA_KEY);
|
||||
diff --git x/ssl/s3_lib.c y/ssl/s3_lib.c
|
||||
index 0385e039c..ce69ec470 100644
|
||||
index 1014a3fce1..0187d508a1 100644
|
||||
--- x/ssl/s3_lib.c
|
||||
+++ y/ssl/s3_lib.c
|
||||
@@ -1765,6 +1765,74 @@ OPENSSL_GLOBAL SSL_CIPHER ssl3_ciphers[] = {
|
||||
|
@ -482,15 +459,15 @@ index 0385e039c..ce69ec470 100644
|
|||
#ifndef OPENSSL_NO_PSK
|
||||
/* with PSK there must be server callback set */
|
||||
- if ((alg_k & SSL_kPSK) && s->psk_server_callback == NULL)
|
||||
+ if ((alg_k & (SSL_kPSK | SSL_kRSAPSK)) && s->psk_server_callback == NULL)
|
||||
+ if ((alg_k & SSL_kPSK || alg_k & SSL_kRSAPSK) && s->psk_server_callback == NULL)
|
||||
continue;
|
||||
#endif /* OPENSSL_NO_PSK */
|
||||
|
||||
diff --git x/ssl/s3_srvr.c y/ssl/s3_srvr.c
|
||||
index ea56f9ca8..2b1797cc8 100644
|
||||
index 0fb4845d44..3498836e7d 100644
|
||||
--- x/ssl/s3_srvr.c
|
||||
+++ y/ssl/s3_srvr.c
|
||||
@@ -458,19 +458,23 @@ int ssl3_accept(SSL *s)
|
||||
@@ -467,19 +467,22 @@ int ssl3_accept(SSL *s)
|
||||
|
||||
/*
|
||||
* only send if a DH key exchange, fortezza or RSA but we have a
|
||||
|
@ -513,15 +490,14 @@ index ea56f9ca8..2b1797cc8 100644
|
|||
- */
|
||||
#ifndef OPENSSL_NO_PSK
|
||||
- || ((alg_k & SSL_kPSK) && s->ctx->psk_identity_hint)
|
||||
+ || ((alg_k & (SSL_kPSK
|
||||
+ || (alg_k & SSL_kPSK && s->ctx->psk_identity_hint)
|
||||
+#ifndef OPENSSL_NO_RSA
|
||||
+ | SSL_kRSAPSK
|
||||
+ || (alg_k & SSL_kRSAPSK && s->ctx->psk_identity_hint)
|
||||
+#endif
|
||||
+ )) && s->ctx->psk_identity_hint)
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_SRP
|
||||
/* SRP: send ServerKeyExchange */
|
||||
@@ -526,11 +530,14 @@ int ssl3_accept(SSL *s)
|
||||
@@ -535,11 +538,14 @@ int ssl3_accept(SSL *s)
|
||||
(s->s3->tmp.new_cipher->algorithm_auth & SSL_aKRB5) ||
|
||||
/* don't request certificate for SRP auth */
|
||||
(s->s3->tmp.new_cipher->algorithm_auth & SSL_aSRP)
|
||||
|
@ -538,49 +514,56 @@ index ea56f9ca8..2b1797cc8 100644
|
|||
/* no cert request */
|
||||
skip = 1;
|
||||
s->s3->tmp.cert_request = 0;
|
||||
@@ -1830,7 +1837,11 @@ int ssl3_send_server_key_exchange(SSL *s)
|
||||
@@ -1835,7 +1841,11 @@ int ssl3_send_server_key_exchange(SSL *s)
|
||||
} else
|
||||
#endif /* !OPENSSL_NO_ECDH */
|
||||
#ifndef OPENSSL_NO_PSK
|
||||
- if (type & SSL_kPSK) {
|
||||
+ if (type & (SSL_kPSK
|
||||
+ if (type & SSL_kPSK
|
||||
+#ifndef OPENSSL_NO_RSA
|
||||
+ | SSL_kRSAPSK
|
||||
+ || type & SSL_kRSAPSK
|
||||
+#endif
|
||||
+ )) {
|
||||
+ ) {
|
||||
/*
|
||||
* reserve size for record length and PSK identity hint
|
||||
*/
|
||||
@@ -1879,7 +1890,14 @@ int ssl3_send_server_key_exchange(SSL *s)
|
||||
@@ -1884,7 +1894,8 @@ int ssl3_send_server_key_exchange(SSL *s)
|
||||
}
|
||||
|
||||
if (!(s->s3->tmp.new_cipher->algorithm_auth & (SSL_aNULL | SSL_aSRP))
|
||||
- && !(s->s3->tmp.new_cipher->algorithm_mkey & SSL_kPSK)) {
|
||||
+#ifndef OPENSSL_NO_PSK
|
||||
+ && !(s->s3->tmp.new_cipher->algorithm_mkey & (SSL_kPSK
|
||||
+#ifndef OPENSSL_NO_RSA
|
||||
+ | SSL_kRSAPSK
|
||||
+#endif
|
||||
+ ))
|
||||
+#endif
|
||||
+ ) {
|
||||
+ && !(s->s3->tmp.new_cipher->algorithm_mkey & SSL_kPSK)
|
||||
+ && !(s->s3->tmp.new_cipher->algorithm_mkey & SSL_kRSAPSK)) {
|
||||
if ((pkey = ssl_get_sign_pkey(s, s->s3->tmp.new_cipher, &md))
|
||||
== NULL) {
|
||||
al = SSL_AD_DECODE_ERROR;
|
||||
@@ -1953,7 +1971,11 @@ int ssl3_send_server_key_exchange(SSL *s)
|
||||
@@ -1899,6 +1910,12 @@ int ssl3_send_server_key_exchange(SSL *s)
|
||||
} else {
|
||||
pkey = NULL;
|
||||
kn = 0;
|
||||
+ /* Allow space for signature algorithm */
|
||||
+ if (SSL_USE_SIGALGS(s)) {
|
||||
+ kn += 4;
|
||||
+ const unsigned char *sig;
|
||||
+ kn += tls12_get_psigalgs(s, 1, &sig);
|
||||
+ }
|
||||
}
|
||||
|
||||
if (!BUF_MEM_grow_clean(buf, n + SSL_HM_HEADER_LENGTH(s) + kn)) {
|
||||
@@ -1958,7 +1975,11 @@ int ssl3_send_server_key_exchange(SSL *s)
|
||||
#endif
|
||||
|
||||
#ifndef OPENSSL_NO_PSK
|
||||
- if (type & SSL_kPSK) {
|
||||
+ if (type & (SSL_kPSK
|
||||
+ if (type & SSL_kPSK
|
||||
+#ifndef OPENSSL_NO_RSA
|
||||
+ | SSL_kRSAPSK
|
||||
+ || type & SSL_kRSAPSK
|
||||
+#endif
|
||||
+ )) {
|
||||
+ ) {
|
||||
/* copy PSK identity hint */
|
||||
s2n(strlen(s->ctx->psk_identity_hint), p);
|
||||
strncpy((char *)p, s->ctx->psk_identity_hint,
|
||||
@@ -1969,7 +1991,11 @@ int ssl3_send_server_key_exchange(SSL *s)
|
||||
@@ -1974,7 +1995,11 @@ int ssl3_send_server_key_exchange(SSL *s)
|
||||
* points to the space at the end.
|
||||
*/
|
||||
#ifndef OPENSSL_NO_RSA
|
||||
|
@ -593,7 +576,7 @@ index ea56f9ca8..2b1797cc8 100644
|
|||
q = md_buf;
|
||||
j = 0;
|
||||
for (num = 2; num > 0; num--) {
|
||||
@@ -2843,6 +2869,181 @@ int ssl3_get_client_key_exchange(SSL *s)
|
||||
@@ -2870,6 +2895,181 @@ int ssl3_get_client_key_exchange(SSL *s)
|
||||
goto f_err;
|
||||
} else
|
||||
#endif
|
||||
|
@ -776,7 +759,7 @@ index ea56f9ca8..2b1797cc8 100644
|
|||
if (alg_k & SSL_kSRP) {
|
||||
int param_len;
|
||||
diff --git x/ssl/ssl.h y/ssl/ssl.h
|
||||
index 90aeb0ce4..78cf2212e 100644
|
||||
index 90aeb0ce4e..78cf2212ed 100644
|
||||
--- x/ssl/ssl.h
|
||||
+++ y/ssl/ssl.h
|
||||
@@ -254,6 +254,7 @@ extern "C" {
|
||||
|
@ -796,7 +779,7 @@ index 90aeb0ce4..78cf2212e 100644
|
|||
|
||||
# define SSL_TXT_DES "DES"
|
||||
diff --git x/ssl/ssl_ciph.c y/ssl/ssl_ciph.c
|
||||
index 2ad8f4392..33f6da1be 100644
|
||||
index ccdf00fa1b..19c4ac0656 100644
|
||||
--- x/ssl/ssl_ciph.c
|
||||
+++ y/ssl/ssl_ciph.c
|
||||
@@ -263,6 +263,7 @@ static const SSL_CIPHER cipher_aliases[] = {
|
||||
|
@ -844,10 +827,10 @@ index 2ad8f4392..33f6da1be 100644
|
|||
kx = "SRP";
|
||||
break;
|
||||
diff --git x/ssl/ssl_lib.c y/ssl/ssl_lib.c
|
||||
index f8054dae6..b835f1fa5 100644
|
||||
index 3539f4b8d2..df6a45bdc4 100644
|
||||
--- x/ssl/ssl_lib.c
|
||||
+++ y/ssl/ssl_lib.c
|
||||
@@ -2434,8 +2434,14 @@ void ssl_set_cert_masks(CERT *c, const SSL_CIPHER *cipher)
|
||||
@@ -2442,8 +2442,14 @@ void ssl_set_cert_masks(CERT *c, const SSL_CIPHER *cipher)
|
||||
|
||||
#ifndef OPENSSL_NO_PSK
|
||||
mask_k |= SSL_kPSK;
|
||||
|
@ -863,7 +846,7 @@ index f8054dae6..b835f1fa5 100644
|
|||
#endif
|
||||
|
||||
diff --git x/ssl/ssl_locl.h y/ssl/ssl_locl.h
|
||||
index d50edd18c..3c59fff1b 100644
|
||||
index aeffc00634..25b9f1d5b1 100644
|
||||
--- x/ssl/ssl_locl.h
|
||||
+++ y/ssl/ssl_locl.h
|
||||
@@ -314,6 +314,8 @@
|
||||
|
@ -876,7 +859,7 @@ index d50edd18c..3c59fff1b 100644
|
|||
/* Bits for algorithm_auth (server authentication) */
|
||||
/* RSA auth */
|
||||
diff --git x/ssl/tls1.h y/ssl/tls1.h
|
||||
index 7e237d063..173be499f 100644
|
||||
index dd1d8c109e..e04e7ddabc 100644
|
||||
--- x/ssl/tls1.h
|
||||
+++ y/ssl/tls1.h
|
||||
@@ -410,6 +410,24 @@ SSL_CTX_callback_ctrl(ssl,SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB,(void (*)(void))cb)
|
||||
|
@ -930,5 +913,5 @@ index 7e237d063..173be499f 100644
|
|||
# define TLS1_TXT_SRP_SHA_WITH_3DES_EDE_CBC_SHA "SRP-3DES-EDE-CBC-SHA"
|
||||
# define TLS1_TXT_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA "SRP-RSA-3DES-EDE-CBC-SHA"
|
||||
--
|
||||
2.11.0
|
||||
2.15.0
|
||||
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
From e06d2d0d163501fdb0926175d7c539c7bb413d70 Mon Sep 17 00:00:00 2001
|
||||
From: Lars Schmertmann <Lars.Schmertmann@governikus.de>
|
||||
Date: Wed, 22 Nov 2017 07:35:56 +0100
|
||||
Subject: Add IsoDep to the techList on Android
|
||||
|
||||
Change-Id: I26c183c1344cd0d9323fcedde82347487eebdffb
|
||||
---
|
||||
src/android/nfc/src/org/qtproject/qt5/android/nfc/QtNfc.java | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git x/qtconnectivity/src/android/nfc/src/org/qtproject/qt5/android/nfc/QtNfc.java y/qtconnectivity/src/android/nfc/src/org/qtproject/qt5/android/nfc/QtNfc.java
|
||||
index 345b87d3..a1ae5c37 100644
|
||||
--- x/qtconnectivity/src/android/nfc/src/org/qtproject/qt5/android/nfc/QtNfc.java
|
||||
+++ y/qtconnectivity/src/android/nfc/src/org/qtproject/qt5/android/nfc/QtNfc.java
|
||||
@@ -127,6 +127,7 @@ public class QtNfc
|
||||
filters[2] = new IntentFilter();
|
||||
filters[2].addAction(NfcAdapter.ACTION_TECH_DISCOVERED);
|
||||
String[][] techList = new String[][]{
|
||||
+ {"android.nfc.tech.IsoDep"},
|
||||
{"android.nfc.tech.Ndef"},
|
||||
{"android.nfc.tech.NdefFormatable"}
|
||||
};
|
||||
--
|
||||
2.14.2
|
||||
|
|
@ -1,80 +0,0 @@
|
|||
From a65c1ef2833757f49024f13900645abf62d6eb22 Mon Sep 17 00:00:00 2001
|
||||
From: Lars Schmertmann <Lars.Schmertmann@governikus.de>
|
||||
Date: Tue, 10 Jan 2017 08:52:35 +0100
|
||||
Subject: Add debug stream operator for QNetworkProxyQuery
|
||||
|
||||
Change-Id: Iae215827350e47a8ce31e5828d3ad1ed54564e84
|
||||
---
|
||||
src/network/kernel/qnetworkproxy.cpp | 19 +++++++++++++++----
|
||||
src/network/kernel/qnetworkproxy.h | 4 ++++
|
||||
2 files changed, 19 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git x/qtbase/src/network/kernel/qnetworkproxy.cpp y/qtbase/src/network/kernel/qnetworkproxy.cpp
|
||||
index 94719e9c2d..6bd6fa2658 100644
|
||||
--- x/qtbase/src/network/kernel/qnetworkproxy.cpp
|
||||
+++ y/qtbase/src/network/kernel/qnetworkproxy.cpp
|
||||
@@ -1634,10 +1634,6 @@ QList<QNetworkProxy> QNetworkProxyFactory::proxyForQuery(const QNetworkProxyQuer
|
||||
}
|
||||
|
||||
#ifndef QT_NO_DEBUG_STREAM
|
||||
-/*!
|
||||
- \since 5.0
|
||||
- Outputs a QNetworkProxy details to a debug stream
|
||||
-*/
|
||||
QDebug operator<<(QDebug debug, const QNetworkProxy &proxy)
|
||||
{
|
||||
QDebugStateSaver saver(debug);
|
||||
@@ -1686,6 +1682,21 @@ QDebug operator<<(QDebug debug, const QNetworkProxy &proxy)
|
||||
debug << '[' << scaps.join(QLatin1Char(' ')) << ']';
|
||||
return debug;
|
||||
}
|
||||
+
|
||||
+QDebug operator<<(QDebug debug, const QNetworkProxyQuery &proxyQuery)
|
||||
+{
|
||||
+ QDebugStateSaver saver(debug);
|
||||
+ debug.resetFormat().nospace()
|
||||
+ << "ProxyQuery("
|
||||
+ << "type: " << proxyQuery.queryType()
|
||||
+ << ", protocol: " << proxyQuery.protocolTag()
|
||||
+ << ", peerPort: " << proxyQuery.peerPort()
|
||||
+ << ", peerHostName: " << proxyQuery.peerHostName()
|
||||
+ << ", localPort: " << proxyQuery.localPort()
|
||||
+ << ", url: " << proxyQuery.url()
|
||||
+ << ')';
|
||||
+ return debug;
|
||||
+}
|
||||
#endif
|
||||
|
||||
QT_END_NAMESPACE
|
||||
diff --git x/qtbase/src/network/kernel/qnetworkproxy.h y/qtbase/src/network/kernel/qnetworkproxy.h
|
||||
index 8fcb7e33cf..8699c313e9 100644
|
||||
--- x/qtbase/src/network/kernel/qnetworkproxy.h
|
||||
+++ y/qtbase/src/network/kernel/qnetworkproxy.h
|
||||
@@ -56,6 +56,8 @@ class QNetworkConfiguration;
|
||||
class QNetworkProxyQueryPrivate;
|
||||
class Q_NETWORK_EXPORT QNetworkProxyQuery
|
||||
{
|
||||
+ Q_GADGET
|
||||
+
|
||||
public:
|
||||
enum QueryType {
|
||||
TcpSocket,
|
||||
@@ -65,6 +67,7 @@ public:
|
||||
UrlRequest,
|
||||
SctpServer
|
||||
};
|
||||
+ Q_ENUM(QueryType)
|
||||
|
||||
QNetworkProxyQuery();
|
||||
explicit QNetworkProxyQuery(const QUrl &requestUrl, QueryType queryType = UrlRequest);
|
||||
@@ -222,6 +225,7 @@ public:
|
||||
|
||||
#ifndef QT_NO_DEBUG_STREAM
|
||||
Q_NETWORK_EXPORT QDebug operator<<(QDebug debug, const QNetworkProxy &proxy);
|
||||
+Q_NETWORK_EXPORT QDebug operator<<(QDebug debug, const QNetworkProxyQuery &proxyQuery);
|
||||
#endif
|
||||
|
||||
QT_END_NAMESPACE
|
||||
--
|
||||
2.11.0
|
||||
|
|
@ -1,98 +0,0 @@
|
|||
From b42f7623ee75b651f6e756a73d0f8f385f337220 Mon Sep 17 00:00:00 2001
|
||||
From: Lars Schmertmann <Lars.Schmertmann@governikus.de>
|
||||
Date: Thu, 26 Jan 2017 15:02:37 +0100
|
||||
Subject: Allow using nfc when running as a service
|
||||
|
||||
With this change it will be possible to use a tag
|
||||
injected from outside when running as a service.
|
||||
|
||||
Intent newIntent = new Intent();
|
||||
newIntent.putExtra(NfcAdapter.EXTRA_TAG, tag);
|
||||
QtNative.onNewIntent(newIntent);
|
||||
|
||||
Task-number: QTBUG-57646
|
||||
Change-Id: I628d4357f023a0926e7d61914b39278342ac7161
|
||||
---
|
||||
.../src/org/qtproject/qt5/android/nfc/QtNfc.java | 24 ++++++++++++++--------
|
||||
1 file changed, 15 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git x/qtconnectivity/src/android/nfc/src/org/qtproject/qt5/android/nfc/QtNfc.java y/qtconnectivity/src/android/nfc/src/org/qtproject/qt5/android/nfc/QtNfc.java
|
||||
index 47dcf1bf..25c560f8 100644
|
||||
--- x/qtconnectivity/src/android/nfc/src/org/qtproject/qt5/android/nfc/QtNfc.java
|
||||
+++ y/qtconnectivity/src/android/nfc/src/org/qtproject/qt5/android/nfc/QtNfc.java
|
||||
@@ -62,22 +62,25 @@ public class QtNfc
|
||||
static public NfcAdapter m_adapter = null;
|
||||
static public PendingIntent m_pendingIntent = null;
|
||||
static public IntentFilter[] m_filters;
|
||||
- static public Activity m_activity;
|
||||
+ static public Context m_context = null;
|
||||
+ static public Activity m_activity = null;
|
||||
|
||||
static public void setContext(Context context)
|
||||
{
|
||||
- if (!(context instanceof Activity)) {
|
||||
- Log.w(TAG, "NFC only works with Android activities and not in Android services. " +
|
||||
- "NFC has been disabled.");
|
||||
+ m_context = context;
|
||||
+ if (context instanceof Activity) m_activity = (Activity) context;
|
||||
+ m_adapter = NfcAdapter.getDefaultAdapter(context);
|
||||
+
|
||||
+ if (m_activity == null) {
|
||||
+ Log.w(TAG, "New NFC tags will only be recognized with Android activities and not with Android services.");
|
||||
return;
|
||||
}
|
||||
|
||||
- m_activity = (Activity)context;
|
||||
- m_adapter = NfcAdapter.getDefaultAdapter(m_activity);
|
||||
if (m_adapter == null) {
|
||||
//Log.e(TAG, "No NFC available");
|
||||
return;
|
||||
}
|
||||
+
|
||||
m_pendingIntent = PendingIntent.getActivity(
|
||||
m_activity,
|
||||
0,
|
||||
@@ -103,7 +106,8 @@ public class QtNfc
|
||||
|
||||
static public boolean start()
|
||||
{
|
||||
- if (m_adapter == null) return false;
|
||||
+ if (m_adapter == null || m_activity == null) return false;
|
||||
+
|
||||
m_activity.runOnUiThread(new Runnable() {
|
||||
public void run() {
|
||||
//Log.d(TAG, "Enabling NFC");
|
||||
@@ -136,7 +140,8 @@ public class QtNfc
|
||||
|
||||
static public boolean stop()
|
||||
{
|
||||
- if (m_adapter == null) return false;
|
||||
+ if (m_adapter == null || m_activity == null) return false;
|
||||
+
|
||||
m_activity.runOnUiThread(new Runnable() {
|
||||
public void run() {
|
||||
//Log.d(TAG, "Disabling NFC");
|
||||
@@ -153,11 +158,11 @@ public class QtNfc
|
||||
|
||||
static public boolean isAvailable()
|
||||
{
|
||||
- m_adapter = NfcAdapter.getDefaultAdapter(m_activity);
|
||||
if (m_adapter == null) {
|
||||
//Log.e(TAG, "No NFC available (Adapter is null)");
|
||||
return false;
|
||||
}
|
||||
+
|
||||
return m_adapter.isEnabled();
|
||||
}
|
||||
|
||||
@@ -165,6 +170,7 @@ public class QtNfc
|
||||
{
|
||||
Log.d(TAG, "getStartIntent");
|
||||
if (m_activity == null) return null;
|
||||
+
|
||||
Intent intent = m_activity.getIntent();
|
||||
if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(intent.getAction()) ||
|
||||
NfcAdapter.ACTION_TECH_DISCOVERED.equals(intent.getAction()) ||
|
||||
--
|
||||
2.11.0
|
||||
|
|
@ -1,180 +0,0 @@
|
|||
From 6483796d9c117a7dee7c2ffcef090600b04bd21c Mon Sep 17 00:00:00 2001
|
||||
From: Lars Schmertmann <Lars.Schmertmann@governikus.de>
|
||||
Date: Tue, 13 Dec 2016 15:34:32 +0100
|
||||
Subject: Android: Add support for sendCommand to QNearFieldTarget
|
||||
|
||||
For the communication with a German ID card its required to execute
|
||||
commands. This change enables support for sendCommand.
|
||||
|
||||
Change-Id: I95773c047953b244cd5c3e22bfc7abf7f7eb656e
|
||||
---
|
||||
src/nfc/qnearfieldtarget.cpp | 3 +-
|
||||
src/nfc/qnearfieldtarget.h | 3 +-
|
||||
src/nfc/qnearfieldtarget_android.cpp | 81 +++++++++++++++++++++++-------------
|
||||
3 files changed, 56 insertions(+), 31 deletions(-)
|
||||
|
||||
diff --git x/qtconnectivity/src/nfc/qnearfieldtarget.cpp y/qtconnectivity/src/nfc/qnearfieldtarget.cpp
|
||||
index 509160c1..a65b4be2 100644
|
||||
--- x/qtconnectivity/src/nfc/qnearfieldtarget.cpp
|
||||
+++ y/qtconnectivity/src/nfc/qnearfieldtarget.cpp
|
||||
@@ -111,7 +111,7 @@ QT_BEGIN_NAMESPACE
|
||||
/*!
|
||||
\enum QNearFieldTarget::Error
|
||||
|
||||
- This enum describes the error codes that that a near field target reports.
|
||||
+ This enum describes the error codes that a near field target reports.
|
||||
|
||||
\value NoError No error has occurred.
|
||||
\value UnknownError An unidentified error occurred.
|
||||
@@ -123,6 +123,7 @@ QT_BEGIN_NAMESPACE
|
||||
\value InvalidParametersError Invalid parameters were passed to a tag type specific function.
|
||||
\value NdefReadError Failed to read NDEF messages from the target.
|
||||
\value NdefWriteError Failed to write NDEF messages to the target.
|
||||
+ \value CommandError Failed to send a command to the target.
|
||||
*/
|
||||
|
||||
// Copied from qbytearray.cpp
|
||||
diff --git x/qtconnectivity/src/nfc/qnearfieldtarget.h y/qtconnectivity/src/nfc/qnearfieldtarget.h
|
||||
index dc081f5e..dfb474f6 100644
|
||||
--- x/qtconnectivity/src/nfc/qnearfieldtarget.h
|
||||
+++ y/qtconnectivity/src/nfc/qnearfieldtarget.h
|
||||
@@ -91,7 +91,8 @@ public:
|
||||
ChecksumMismatchError,
|
||||
InvalidParametersError,
|
||||
NdefReadError,
|
||||
- NdefWriteError
|
||||
+ NdefWriteError,
|
||||
+ CommandError
|
||||
};
|
||||
Q_ENUM(Error)
|
||||
|
||||
diff --git x/qtconnectivity/src/nfc/qnearfieldtarget_android.cpp y/qtconnectivity/src/nfc/qnearfieldtarget_android.cpp
|
||||
index e0c1616d..478f4d8c 100644
|
||||
--- x/qtconnectivity/src/nfc/qnearfieldtarget_android.cpp
|
||||
+++ y/qtconnectivity/src/nfc/qnearfieldtarget_android.cpp
|
||||
@@ -43,6 +43,7 @@
|
||||
|
||||
#define NDEFTECHNOLOGY "android.nfc.tech.Ndef"
|
||||
#define NDEFFORMATABLETECHNOLOGY "android.nfc.tech.NdefFormatable"
|
||||
+#define ISODEPTECHNOLOGY "android.nfc.tech.IsoDep"
|
||||
#define NFCATECHNOLOGY "android.nfc.tech.NfcA"
|
||||
#define NFCBTECHNOLOGY "android.nfc.tech.NfcB"
|
||||
#define NFCFTECHNOLOGY "android.nfc.tech.NfcF"
|
||||
@@ -84,7 +85,19 @@ QNearFieldTarget::Type NearFieldTarget::type() const
|
||||
|
||||
QNearFieldTarget::AccessMethods NearFieldTarget::accessMethods() const
|
||||
{
|
||||
- AccessMethods result = NdefAccess;
|
||||
+ AccessMethods result = UnknownAccess;
|
||||
+
|
||||
+ if (m_techList.contains(QStringLiteral(NDEFTECHNOLOGY))
|
||||
+ || m_techList.contains(QStringLiteral(NDEFFORMATABLETECHNOLOGY)))
|
||||
+ result |= NdefAccess;
|
||||
+
|
||||
+ if (m_techList.contains(QStringLiteral(ISODEPTECHNOLOGY))
|
||||
+ || m_techList.contains(QStringLiteral(NFCATECHNOLOGY))
|
||||
+ || m_techList.contains(QStringLiteral(NFCBTECHNOLOGY))
|
||||
+ || m_techList.contains(QStringLiteral(NFCFTECHNOLOGY))
|
||||
+ || m_techList.contains(QStringLiteral(NFCVTECHNOLOGY)))
|
||||
+ result |= TagTypeSpecificAccess;
|
||||
+
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -157,24 +170,23 @@ QNearFieldTarget::RequestId NearFieldTarget::readNdefMessages()
|
||||
return requestId;
|
||||
}
|
||||
|
||||
-
|
||||
QNearFieldTarget::RequestId NearFieldTarget::sendCommand(const QByteArray &command)
|
||||
{
|
||||
- Q_UNUSED(command);
|
||||
- Q_EMIT QNearFieldTarget::error(QNearFieldTarget::UnsupportedError, QNearFieldTarget::RequestId());
|
||||
- return QNearFieldTarget::RequestId();
|
||||
-
|
||||
- //Not supported for now
|
||||
- /*if (command.size() == 0) {
|
||||
+ if (command.size() == 0) {
|
||||
Q_EMIT QNearFieldTarget::error(QNearFieldTarget::InvalidParametersError, QNearFieldTarget::RequestId());
|
||||
return QNearFieldTarget::RequestId();
|
||||
}
|
||||
|
||||
- AndroidNfc::AttachedJNIEnv aenv;
|
||||
- JNIEnv *env = aenv.jniEnv;
|
||||
+ // Making sure that target has commands
|
||||
+ if (!(accessMethods() & TagTypeSpecificAccess))
|
||||
+ return QNearFieldTarget::RequestId();
|
||||
+
|
||||
+ QAndroidJniEnvironment env;
|
||||
|
||||
- jobject tagTech;
|
||||
- if (m_techList.contains(QStringLiteral(NFCATECHNOLOGY))) {
|
||||
+ QAndroidJniObject tagTech;
|
||||
+ if (m_techList.contains(ISODEPTECHNOLOGY)) {
|
||||
+ tagTech = getTagTechnology(ISODEPTECHNOLOGY);
|
||||
+ } else if (m_techList.contains(QStringLiteral(NFCATECHNOLOGY))) {
|
||||
tagTech = getTagTechnology(QStringLiteral(NFCATECHNOLOGY));
|
||||
} else if (m_techList.contains(QStringLiteral(NFCBTECHNOLOGY))) {
|
||||
tagTech = getTagTechnology(QStringLiteral(NFCBTECHNOLOGY));
|
||||
@@ -187,30 +199,41 @@ QNearFieldTarget::RequestId NearFieldTarget::sendCommand(const QByteArray &comma
|
||||
return QNearFieldTarget::RequestId();
|
||||
}
|
||||
|
||||
- QByteArray ba(ba);
|
||||
-
|
||||
- jclass techClass = env->GetObjectClass(tagTech);
|
||||
- jmethodID tranceiveMID = env->GetMethodID(techClass, "tranceive", "([B)[B");
|
||||
- Q_ASSERT_X(tranceiveMID != 0, "sendCommand", "could not find tranceive method");
|
||||
+ // Connecting
|
||||
+ QNearFieldTarget::RequestId requestId = QNearFieldTarget::RequestId(new QNearFieldTarget::RequestIdPrivate());
|
||||
+ tagTech.callMethod<void>("connect");
|
||||
+ if (catchJavaExceptions()) {
|
||||
+ QMetaObject::invokeMethod(this, "error", Qt::QueuedConnection,
|
||||
+ Q_ARG(QNearFieldTarget::Error, QNearFieldTarget::TargetOutOfRangeError),
|
||||
+ Q_ARG(const QNearFieldTarget::RequestId&, requestId));
|
||||
+ return requestId;
|
||||
+ }
|
||||
|
||||
+ // Making QByteArray
|
||||
+ QByteArray ba(command);
|
||||
jbyteArray jba = env->NewByteArray(ba.size());
|
||||
env->SetByteArrayRegion(jba, 0, ba.size(), reinterpret_cast<jbyte*>(ba.data()));
|
||||
|
||||
- jbyteArray rsp = reinterpret_cast<jbyteArray>(env->CallObjectMethod(tagTech, tranceiveMID, jba));
|
||||
-
|
||||
- jsize len = env->GetArrayLength(rsp);
|
||||
- QByteArray rspQBA;
|
||||
- rspQBA.resize(len);
|
||||
-
|
||||
- env->GetByteArrayRegion(rsp, 0, len, reinterpret_cast<jbyte*>(rspQBA.data()));
|
||||
-
|
||||
- qDebug() << "Send command returned QBA size: " << rspQBA.size();
|
||||
-
|
||||
-
|
||||
+ // Writing
|
||||
+ QAndroidJniObject myNewVal = tagTech.callObjectMethod("transceive", "([B)[B", jba);
|
||||
+ if (catchJavaExceptions()) {
|
||||
+ QMetaObject::invokeMethod(this, "error", Qt::QueuedConnection,
|
||||
+ Q_ARG(QNearFieldTarget::Error, QNearFieldTarget::CommandError),
|
||||
+ Q_ARG(const QNearFieldTarget::RequestId&, requestId));
|
||||
+ return requestId;
|
||||
+ }
|
||||
+ QByteArray result = jbyteArrayToQByteArray(myNewVal.object<jbyteArray>());
|
||||
env->DeleteLocalRef(jba);
|
||||
|
||||
+ handleResponse(requestId, result);
|
||||
|
||||
- return QNearFieldTarget::RequestId();*/
|
||||
+ // Closing connection, sending signal and exit
|
||||
+ tagTech.callMethod<void>("close");
|
||||
+ catchJavaExceptions(); // IOException at this point does not matter anymore.
|
||||
+ QMetaObject::invokeMethod(this, "requestCompleted", Qt::QueuedConnection,
|
||||
+ Q_ARG(const QNearFieldTarget::RequestId&, requestId));
|
||||
+
|
||||
+ return requestId;
|
||||
}
|
||||
|
||||
QNearFieldTarget::RequestId NearFieldTarget::sendCommands(const QList<QByteArray> &commands)
|
||||
--
|
||||
2.11.0
|
||||
|
|
@ -1,374 +0,0 @@
|
|||
From f4f7f906ed1c9763c8e79f0882d25caaa00eb264 Mon Sep 17 00:00:00 2001
|
||||
From: Lars Schmertmann <Lars.Schmertmann@governikus.de>
|
||||
Date: Tue, 29 Nov 2016 16:34:37 +0100
|
||||
Subject: Android: QNearfieldTarget: Introduce maxCommandLength()
|
||||
|
||||
For the communication with a German ID card its required to execute
|
||||
commands with a length up to 500 byte. With this change it is
|
||||
possible to check if the required length is supported.
|
||||
|
||||
[ChangeLog][QNearfieldTarget] Introduce maxCommandLength() to
|
||||
make it possible to check the maximum supported length for commands.
|
||||
|
||||
Change-Id: I7e655f419765d8ad728f6d6005a85a01d5aa03e9
|
||||
---
|
||||
src/nfc/nfc.pro | 7 +++--
|
||||
src/nfc/qnearfieldtarget.cpp | 15 +++++++++-
|
||||
src/nfc/qnearfieldtarget.h | 1 +
|
||||
src/nfc/qnearfieldtarget_android.cpp | 31 ++++++++++++++++++--
|
||||
src/nfc/qnearfieldtarget_android_p.cpp | 53 ++++++++++++++++++++++++++++++++++
|
||||
src/nfc/qnearfieldtarget_android_p.h | 1 +
|
||||
src/nfc/qnearfieldtarget_neard_p.cpp | 52 +++++++++++++++++++++++++++++++++
|
||||
src/nfc/qnearfieldtarget_p.cpp | 52 +++++++++++++++++++++++++++++++++
|
||||
src/nfc/qnearfieldtarget_p.h | 8 +++++
|
||||
9 files changed, 214 insertions(+), 6 deletions(-)
|
||||
create mode 100644 src/nfc/qnearfieldtarget_android_p.cpp
|
||||
create mode 100644 src/nfc/qnearfieldtarget_neard_p.cpp
|
||||
create mode 100644 src/nfc/qnearfieldtarget_p.cpp
|
||||
|
||||
diff --git x/qtconnectivity/src/nfc/nfc.pro y/qtconnectivity/src/nfc/nfc.pro
|
||||
index 0819cc4f..ce193efa 100644
|
||||
--- x/qtconnectivity/src/nfc/nfc.pro
|
||||
+++ y/qtconnectivity/src/nfc/nfc.pro
|
||||
@@ -74,7 +74,8 @@ linux:!android:qtHaveModule(dbus) {
|
||||
qllcpserver_p.cpp \
|
||||
qnearfieldsharemanagerimpl_p.cpp \
|
||||
qnearfieldsharetargetimpl_p.cpp \
|
||||
- qnearfieldmanager_neard.cpp
|
||||
+ qnearfieldmanager_neard.cpp \
|
||||
+ qnearfieldtarget_neard_p.cpp
|
||||
|
||||
include(neard/neard.pri)
|
||||
|
||||
@@ -107,6 +108,7 @@ linux:!android:qtHaveModule(dbus) {
|
||||
android/androidjninfc.cpp \
|
||||
qnearfieldmanager_android.cpp \
|
||||
qnearfieldtarget_android.cpp \
|
||||
+ qnearfieldtarget_android_p.cpp \
|
||||
qnearfieldsharemanagerimpl_p.cpp \
|
||||
qnearfieldsharetargetimpl_p.cpp \
|
||||
android/androidmainnewintentlistener.cpp
|
||||
@@ -127,7 +129,8 @@ isEmpty(NFC_BACKEND_AVAILABLE) {
|
||||
qllcpserver_p.cpp \
|
||||
qnearfieldmanagerimpl_p.cpp \
|
||||
qnearfieldsharemanagerimpl_p.cpp \
|
||||
- qnearfieldsharetargetimpl_p.cpp
|
||||
+ qnearfieldsharetargetimpl_p.cpp \
|
||||
+ qnearfieldtarget_p.cpp
|
||||
}
|
||||
|
||||
HEADERS += $$PUBLIC_HEADERS $$PRIVATE_HEADERS
|
||||
diff --git x/qtconnectivity/src/nfc/qnearfieldtarget.cpp y/qtconnectivity/src/nfc/qnearfieldtarget.cpp
|
||||
index a65b4be2..274ef175 100644
|
||||
--- x/qtconnectivity/src/nfc/qnearfieldtarget.cpp
|
||||
+++ y/qtconnectivity/src/nfc/qnearfieldtarget.cpp
|
||||
@@ -277,7 +277,7 @@ QNearFieldTarget::RequestId &QNearFieldTarget::RequestId::operator=(const Reques
|
||||
Constructs a new near field target with \a parent.
|
||||
*/
|
||||
QNearFieldTarget::QNearFieldTarget(QObject *parent)
|
||||
-: QObject(parent), d_ptr(new QNearFieldTargetPrivate)
|
||||
+: QObject(parent), d_ptr(new QNearFieldTargetPrivate(this))
|
||||
{
|
||||
qRegisterMetaType<QNearFieldTarget::RequestId>();
|
||||
qRegisterMetaType<QNearFieldTarget::Error>();
|
||||
@@ -365,6 +365,19 @@ QNearFieldTarget::RequestId QNearFieldTarget::writeNdefMessages(const QList<QNde
|
||||
}
|
||||
|
||||
/*!
|
||||
+ \since 5.9
|
||||
+
|
||||
+ Returns the maximum number of bytes that can be sent with sendCommand. 0 will
|
||||
+ be returned if the target does not support sending tag type specific commands.
|
||||
+
|
||||
+ \sa sendCommand(), sendCommands()
|
||||
+*/
|
||||
+int QNearFieldTarget::maxCommandLength() const
|
||||
+{
|
||||
+ return d_ptr->maxCommandLength();
|
||||
+}
|
||||
+
|
||||
+/*!
|
||||
Sends \a command to the near field target. Returns a request id which can be used to track the
|
||||
completion status of the request. An invalid request id will be returned if the target does not
|
||||
support sending tag type specific commands.
|
||||
diff --git x/qtconnectivity/src/nfc/qnearfieldtarget.h y/qtconnectivity/src/nfc/qnearfieldtarget.h
|
||||
index dfb474f6..620ea813 100644
|
||||
--- x/qtconnectivity/src/nfc/qnearfieldtarget.h
|
||||
+++ y/qtconnectivity/src/nfc/qnearfieldtarget.h
|
||||
@@ -134,6 +134,7 @@ public:
|
||||
virtual RequestId writeNdefMessages(const QList<QNdefMessage> &messages);
|
||||
|
||||
// TagTypeSpecificAccess
|
||||
+ int maxCommandLength() const;
|
||||
virtual RequestId sendCommand(const QByteArray &command);
|
||||
virtual RequestId sendCommands(const QList<QByteArray> &commands);
|
||||
|
||||
diff --git x/qtconnectivity/src/nfc/qnearfieldtarget_android.cpp y/qtconnectivity/src/nfc/qnearfieldtarget_android.cpp
|
||||
index 478f4d8c..f41b0b2e 100644
|
||||
--- x/qtconnectivity/src/nfc/qnearfieldtarget_android.cpp
|
||||
+++ y/qtconnectivity/src/nfc/qnearfieldtarget_android.cpp
|
||||
@@ -170,9 +170,34 @@ QNearFieldTarget::RequestId NearFieldTarget::readNdefMessages()
|
||||
return requestId;
|
||||
}
|
||||
|
||||
+int NearFieldTarget::maxCommandLength() const
|
||||
+{
|
||||
+ QAndroidJniObject tagTech;
|
||||
+ if (m_techList.contains(QStringLiteral(ISODEPTECHNOLOGY))) {
|
||||
+ tagTech = getTagTechnology(QStringLiteral(ISODEPTECHNOLOGY));
|
||||
+ } else if (m_techList.contains(QStringLiteral(NFCATECHNOLOGY))) {
|
||||
+ tagTech = getTagTechnology(QStringLiteral(NFCATECHNOLOGY));
|
||||
+ } else if (m_techList.contains(QStringLiteral(NFCBTECHNOLOGY))) {
|
||||
+ tagTech = getTagTechnology(QStringLiteral(NFCBTECHNOLOGY));
|
||||
+ } else if (m_techList.contains(QStringLiteral(NFCFTECHNOLOGY))) {
|
||||
+ tagTech = getTagTechnology(QStringLiteral(NFCFTECHNOLOGY));
|
||||
+ } else if (m_techList.contains(QStringLiteral(NFCVTECHNOLOGY))) {
|
||||
+ tagTech = getTagTechnology(QStringLiteral(NFCVTECHNOLOGY));
|
||||
+ } else {
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
+ int returnVal = tagTech.callMethod<jint>("getMaxTransceiveLength");
|
||||
+ if (catchJavaExceptions()) {
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
+ return returnVal;
|
||||
+}
|
||||
+
|
||||
QNearFieldTarget::RequestId NearFieldTarget::sendCommand(const QByteArray &command)
|
||||
{
|
||||
- if (command.size() == 0) {
|
||||
+ if (command.size() == 0 || command.size() > maxCommandLength()) {
|
||||
Q_EMIT QNearFieldTarget::error(QNearFieldTarget::InvalidParametersError, QNearFieldTarget::RequestId());
|
||||
return QNearFieldTarget::RequestId();
|
||||
}
|
||||
@@ -184,8 +209,8 @@ QNearFieldTarget::RequestId NearFieldTarget::sendCommand(const QByteArray &comma
|
||||
QAndroidJniEnvironment env;
|
||||
|
||||
QAndroidJniObject tagTech;
|
||||
- if (m_techList.contains(ISODEPTECHNOLOGY)) {
|
||||
- tagTech = getTagTechnology(ISODEPTECHNOLOGY);
|
||||
+ if (m_techList.contains(QStringLiteral(ISODEPTECHNOLOGY))) {
|
||||
+ tagTech = getTagTechnology(QStringLiteral(ISODEPTECHNOLOGY));
|
||||
} else if (m_techList.contains(QStringLiteral(NFCATECHNOLOGY))) {
|
||||
tagTech = getTagTechnology(QStringLiteral(NFCATECHNOLOGY));
|
||||
} else if (m_techList.contains(QStringLiteral(NFCBTECHNOLOGY))) {
|
||||
diff --git x/qtconnectivity/src/nfc/qnearfieldtarget_android_p.cpp y/qtconnectivity/src/nfc/qnearfieldtarget_android_p.cpp
|
||||
new file mode 100644
|
||||
index 00000000..da2d8f2d
|
||||
--- /dev/null
|
||||
+++ y/qtconnectivity/src/nfc/qnearfieldtarget_android_p.cpp
|
||||
@@ -0,0 +1,53 @@
|
||||
+/****************************************************************************
|
||||
+**
|
||||
+** Copyright (C) 2017 Governikus GmbH & Co. KG
|
||||
+** Contact: https://www.qt.io/licensing/
|
||||
+**
|
||||
+** This file is part of the QtNfc module of the Qt Toolkit.
|
||||
+**
|
||||
+** $QT_BEGIN_LICENSE:LGPL$
|
||||
+** Commercial License Usage
|
||||
+** Licensees holding valid commercial Qt licenses may use this file in
|
||||
+** accordance with the commercial license agreement provided with the
|
||||
+** Software or, alternatively, in accordance with the terms contained in
|
||||
+** a written agreement between you and The Qt Company. For licensing terms
|
||||
+** and conditions see https://www.qt.io/terms-conditions. For further
|
||||
+** information use the contact form at https://www.qt.io/contact-us.
|
||||
+**
|
||||
+** GNU Lesser General Public License Usage
|
||||
+** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
+** General Public License version 3 as published by the Free Software
|
||||
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
|
||||
+** packaging of this file. Please review the following information to
|
||||
+** ensure the GNU Lesser General Public License version 3 requirements
|
||||
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
|
||||
+**
|
||||
+** GNU General Public License Usage
|
||||
+** Alternatively, this file may be used under the terms of the GNU
|
||||
+** General Public License version 2.0 or (at your option) the GNU General
|
||||
+** Public license version 3 or any later version approved by the KDE Free
|
||||
+** Qt Foundation. The licenses are as published by the Free Software
|
||||
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
|
||||
+** included in the packaging of this file. Please review the following
|
||||
+** information to ensure the GNU General Public License requirements will
|
||||
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
|
||||
+** https://www.gnu.org/licenses/gpl-3.0.html.
|
||||
+**
|
||||
+** $QT_END_LICENSE$
|
||||
+**
|
||||
+****************************************************************************/
|
||||
+
|
||||
+#include <QCoreApplication>
|
||||
+
|
||||
+#include "qnearfieldtarget_p.h"
|
||||
+#include "qnearfieldtarget_android_p.h"
|
||||
+
|
||||
+QT_BEGIN_NAMESPACE
|
||||
+
|
||||
+int QNearFieldTargetPrivate::maxCommandLength() const
|
||||
+{
|
||||
+ NearFieldTarget * const q = reinterpret_cast<NearFieldTarget *>(q_ptr);
|
||||
+ return q->maxCommandLength();
|
||||
+}
|
||||
+
|
||||
+QT_END_NAMESPACE
|
||||
diff --git x/qtconnectivity/src/nfc/qnearfieldtarget_android_p.h y/qtconnectivity/src/nfc/qnearfieldtarget_android_p.h
|
||||
index 94bb394d..f2e2ee7f 100644
|
||||
--- x/qtconnectivity/src/nfc/qnearfieldtarget_android_p.h
|
||||
+++ y/qtconnectivity/src/nfc/qnearfieldtarget_android_p.h
|
||||
@@ -77,6 +77,7 @@ public:
|
||||
virtual AccessMethods accessMethods() const;
|
||||
virtual bool hasNdefMessage();
|
||||
virtual RequestId readNdefMessages();
|
||||
+ int maxCommandLength() const;
|
||||
virtual RequestId sendCommand(const QByteArray &command);
|
||||
virtual RequestId sendCommands(const QList<QByteArray> &commands);
|
||||
virtual RequestId writeNdefMessages(const QList<QNdefMessage> &messages);
|
||||
diff --git x/qtconnectivity/src/nfc/qnearfieldtarget_neard_p.cpp y/qtconnectivity/src/nfc/qnearfieldtarget_neard_p.cpp
|
||||
new file mode 100644
|
||||
index 00000000..3d1bfa6c
|
||||
--- /dev/null
|
||||
+++ y/qtconnectivity/src/nfc/qnearfieldtarget_neard_p.cpp
|
||||
@@ -0,0 +1,52 @@
|
||||
+/****************************************************************************
|
||||
+**
|
||||
+** Copyright (C) 2017 Governikus GmbH & Co. K
|
||||
+** Contact: https://www.qt.io/licensing/
|
||||
+**
|
||||
+** This file is part of the QtNfc module of the Qt Toolkit.
|
||||
+**
|
||||
+** $QT_BEGIN_LICENSE:LGPL$
|
||||
+** Commercial License Usage
|
||||
+** Licensees holding valid commercial Qt licenses may use this file in
|
||||
+** accordance with the commercial license agreement provided with the
|
||||
+** Software or, alternatively, in accordance with the terms contained in
|
||||
+** a written agreement between you and The Qt Company. For licensing terms
|
||||
+** and conditions see https://www.qt.io/terms-conditions. For further
|
||||
+** information use the contact form at https://www.qt.io/contact-us.
|
||||
+**
|
||||
+** GNU Lesser General Public License Usage
|
||||
+** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
+** General Public License version 3 as published by the Free Software
|
||||
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
|
||||
+** packaging of this file. Please review the following information to
|
||||
+** ensure the GNU Lesser General Public License version 3 requirements
|
||||
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
|
||||
+**
|
||||
+** GNU General Public License Usage
|
||||
+** Alternatively, this file may be used under the terms of the GNU
|
||||
+** General Public License version 2.0 or (at your option) the GNU General
|
||||
+** Public license version 3 or any later version approved by the KDE Free
|
||||
+** Qt Foundation. The licenses are as published by the Free Software
|
||||
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
|
||||
+** included in the packaging of this file. Please review the following
|
||||
+** information to ensure the GNU General Public License requirements will
|
||||
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
|
||||
+** https://www.gnu.org/licenses/gpl-3.0.html.
|
||||
+**
|
||||
+** $QT_END_LICENSE$
|
||||
+**
|
||||
+****************************************************************************/
|
||||
+
|
||||
+#include <QCoreApplication>
|
||||
+
|
||||
+#include "qnearfieldtarget.h"
|
||||
+#include "qnearfieldtarget_p.h"
|
||||
+
|
||||
+QT_BEGIN_NAMESPACE
|
||||
+
|
||||
+int QNearFieldTargetPrivate::maxCommandLength() const
|
||||
+{
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+QT_END_NAMESPACE
|
||||
diff --git x/qtconnectivity/src/nfc/qnearfieldtarget_p.cpp y/qtconnectivity/src/nfc/qnearfieldtarget_p.cpp
|
||||
new file mode 100644
|
||||
index 00000000..3d1bfa6c
|
||||
--- /dev/null
|
||||
+++ y/qtconnectivity/src/nfc/qnearfieldtarget_p.cpp
|
||||
@@ -0,0 +1,52 @@
|
||||
+/****************************************************************************
|
||||
+**
|
||||
+** Copyright (C) 2017 Governikus GmbH & Co. K
|
||||
+** Contact: https://www.qt.io/licensing/
|
||||
+**
|
||||
+** This file is part of the QtNfc module of the Qt Toolkit.
|
||||
+**
|
||||
+** $QT_BEGIN_LICENSE:LGPL$
|
||||
+** Commercial License Usage
|
||||
+** Licensees holding valid commercial Qt licenses may use this file in
|
||||
+** accordance with the commercial license agreement provided with the
|
||||
+** Software or, alternatively, in accordance with the terms contained in
|
||||
+** a written agreement between you and The Qt Company. For licensing terms
|
||||
+** and conditions see https://www.qt.io/terms-conditions. For further
|
||||
+** information use the contact form at https://www.qt.io/contact-us.
|
||||
+**
|
||||
+** GNU Lesser General Public License Usage
|
||||
+** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
+** General Public License version 3 as published by the Free Software
|
||||
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
|
||||
+** packaging of this file. Please review the following information to
|
||||
+** ensure the GNU Lesser General Public License version 3 requirements
|
||||
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
|
||||
+**
|
||||
+** GNU General Public License Usage
|
||||
+** Alternatively, this file may be used under the terms of the GNU
|
||||
+** General Public License version 2.0 or (at your option) the GNU General
|
||||
+** Public license version 3 or any later version approved by the KDE Free
|
||||
+** Qt Foundation. The licenses are as published by the Free Software
|
||||
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
|
||||
+** included in the packaging of this file. Please review the following
|
||||
+** information to ensure the GNU General Public License requirements will
|
||||
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
|
||||
+** https://www.gnu.org/licenses/gpl-3.0.html.
|
||||
+**
|
||||
+** $QT_END_LICENSE$
|
||||
+**
|
||||
+****************************************************************************/
|
||||
+
|
||||
+#include <QCoreApplication>
|
||||
+
|
||||
+#include "qnearfieldtarget.h"
|
||||
+#include "qnearfieldtarget_p.h"
|
||||
+
|
||||
+QT_BEGIN_NAMESPACE
|
||||
+
|
||||
+int QNearFieldTargetPrivate::maxCommandLength() const
|
||||
+{
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+QT_END_NAMESPACE
|
||||
diff --git x/qtconnectivity/src/nfc/qnearfieldtarget_p.h y/qtconnectivity/src/nfc/qnearfieldtarget_p.h
|
||||
index 7a787ace..9b2ed480 100644
|
||||
--- x/qtconnectivity/src/nfc/qnearfieldtarget_p.h
|
||||
+++ y/qtconnectivity/src/nfc/qnearfieldtarget_p.h
|
||||
@@ -57,6 +57,7 @@
|
||||
|
||||
#include <QtCore/QMap>
|
||||
#include <QtCore/QSharedData>
|
||||
+#include <QtCore/QVariant>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
@@ -66,8 +67,15 @@ class QNearFieldTarget::RequestIdPrivate : public QSharedData
|
||||
|
||||
class QNearFieldTargetPrivate
|
||||
{
|
||||
+ QNearFieldTarget *q_ptr;
|
||||
+ Q_DECLARE_PUBLIC(QNearFieldTarget)
|
||||
+
|
||||
public:
|
||||
+ QNearFieldTargetPrivate(QNearFieldTarget *q) : q_ptr(q) {}
|
||||
+
|
||||
QMap<QNearFieldTarget::RequestId, QVariant> m_decodedResponses;
|
||||
+
|
||||
+ int maxCommandLength() const;
|
||||
};
|
||||
|
||||
QT_END_NAMESPACE
|
||||
--
|
||||
2.11.0
|
||||
|
|
@ -0,0 +1,73 @@
|
|||
From 26383dba15ceed74b36dd71e5b1837c63aade927 Mon Sep 17 00:00:00 2001
|
||||
From: Lars Schmertmann <Lars.Schmertmann@governikus.de>
|
||||
Date: Thu, 14 Sep 2017 12:47:11 +0200
|
||||
Subject: Avoid using deprecated APIs on iOS 10.0+
|
||||
|
||||
Change-Id: Ic9dc6a24ef793a29c2652ad37bc11120e2e6ceef
|
||||
---
|
||||
src/gui/util/qdesktopservices.cpp | 13 +++++++++++++
|
||||
src/plugins/platforms/ios/qiosservices.mm | 14 ++++++++++++--
|
||||
2 files changed, 25 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git x/qtbase/src/gui/util/qdesktopservices.cpp y/qtbase/src/gui/util/qdesktopservices.cpp
|
||||
index c9747877f7..77ccc02aa5 100644
|
||||
--- x/qtbase/src/gui/util/qdesktopservices.cpp
|
||||
+++ y/qtbase/src/gui/util/qdesktopservices.cpp
|
||||
@@ -177,6 +177,19 @@ void QOpenUrlHandlerRegistry::handlerDestroyed(QObject *handler)
|
||||
still fail to launch or fail to open the requested URL. This result will not be reported back
|
||||
to the application.
|
||||
|
||||
+ \warning URLs passed to this function on iOS will not load unless their schemes are
|
||||
+ listed in the \c LSApplicationQueriesSchemes key of the application's Info.plist file.
|
||||
+ For more information, see the Apple Developer Documentation for
|
||||
+ \l{https://developer.apple.com/documentation/uikit/uiapplication/1622952-canopenurl}{canOpenURL(_:)}.
|
||||
+ For example, the following lines enable URLs with the HTTPS scheme:
|
||||
+
|
||||
+ \code
|
||||
+ <key>LSApplicationQueriesSchemes</key>
|
||||
+ <array>
|
||||
+ <string>https</string>
|
||||
+ </array>
|
||||
+ \endcode
|
||||
+
|
||||
\sa setUrlHandler()
|
||||
*/
|
||||
bool QDesktopServices::openUrl(const QUrl &url)
|
||||
diff --git x/qtbase/src/plugins/platforms/ios/qiosservices.mm y/qtbase/src/plugins/platforms/ios/qiosservices.mm
|
||||
index 0ecc8e123f..a963a5c05d 100644
|
||||
--- x/qtbase/src/plugins/platforms/ios/qiosservices.mm
|
||||
+++ y/qtbase/src/plugins/platforms/ios/qiosservices.mm
|
||||
@@ -41,6 +41,7 @@
|
||||
|
||||
#include <QtCore/qurl.h>
|
||||
#include <QtGui/qdesktopservices.h>
|
||||
+#include <QOperatingSystemVersion>
|
||||
|
||||
#import <UIKit/UIApplication.h>
|
||||
|
||||
@@ -55,11 +56,20 @@ bool QIOSServices::openUrl(const QUrl &url)
|
||||
return openDocument(url);
|
||||
|
||||
NSURL *nsUrl = url.toNSURL();
|
||||
+ UIApplication *application = [UIApplication sharedApplication];
|
||||
|
||||
- if (![[UIApplication sharedApplication] canOpenURL:nsUrl])
|
||||
+ if (![application canOpenURL:nsUrl])
|
||||
return false;
|
||||
|
||||
- return [[UIApplication sharedApplication] openURL:nsUrl];
|
||||
+#if QT_DARWIN_PLATFORM_SDK_EQUAL_OR_ABOVE(__MAC_NA, 100000, 100000, __WATCHOS_NA)
|
||||
+ if (QOperatingSystemVersion::current() >= QOperatingSystemVersion(QOperatingSystemVersion::IOS, 10)) {
|
||||
+ [application openURL:nsUrl options:@{} completionHandler:nil];
|
||||
+ return true;
|
||||
+ } else
|
||||
+#endif
|
||||
+ {
|
||||
+ return [application openURL:nsUrl];
|
||||
+ }
|
||||
}
|
||||
|
||||
bool QIOSServices::openDocument(const QUrl &url)
|
||||
--
|
||||
2.14.1
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
From 1f505127d1dba4b755fc00360a5bffff8163acb7 Mon Sep 17 00:00:00 2001
|
||||
From: Lars Schmertmann <Lars.Schmertmann@governikus.de>
|
||||
Date: Wed, 19 Jul 2017 09:44:01 +0200
|
||||
Subject: Change build configuration for Qt on iOS
|
||||
---
|
||||
mkspecs/macx-ios-clang/qmake.conf | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git x/qtbase/mkspecs/macx-ios-clang/qmake.conf y/qtbase/mkspecs/macx-ios-clang/qmake.conf
|
||||
index 825e03aa85..fe783faee3 100644
|
||||
--- x/qtbase/mkspecs/macx-ios-clang/qmake.conf
|
||||
+++ y/qtbase/mkspecs/macx-ios-clang/qmake.conf
|
||||
@@ -2,13 +2,13 @@
|
||||
# qmake configuration for macx-ios-clang
|
||||
#
|
||||
|
||||
-QMAKE_IOS_DEPLOYMENT_TARGET = 8.0
|
||||
+QMAKE_IOS_DEPLOYMENT_TARGET = 10.0
|
||||
|
||||
# Universal target (iPhone and iPad)
|
||||
QMAKE_APPLE_TARGETED_DEVICE_FAMILY = 1,2
|
||||
|
||||
-QMAKE_APPLE_DEVICE_ARCHS = armv7 arm64
|
||||
-QMAKE_APPLE_SIMULATOR_ARCHS = i386 x86_64
|
||||
+QMAKE_APPLE_DEVICE_ARCHS = arm64
|
||||
+QMAKE_APPLE_SIMULATOR_ARCHS = x86_64
|
||||
|
||||
include(../common/ios.conf)
|
||||
include(../common/gcc-base-mac.conf)
|
||||
--
|
||||
2.13.2
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
From 978caa044d4e1c52c90a87490defbac387db58d6 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Andr=C3=A9=20Klitzing?= <aklitzing@gmail.com>
|
||||
Date: Mon, 25 Sep 2017 14:10:56 +0200
|
||||
Subject: [PATCH] Disable unused imageformats
|
||||
|
||||
---
|
||||
src/plugins/imageformats/imageformats.pro | 3 +--
|
||||
1 file changed, 1 insertion(+), 2 deletions(-)
|
||||
|
||||
diff --git x/qtimageformats/src/plugins/imageformats/imageformats.pro y/qtimageformats/src/plugins/imageformats/imageformats.pro
|
||||
index 8c79379..2aa80f5 100644
|
||||
--- x/qtimageformats/src/plugins/imageformats/imageformats.pro
|
||||
+++ y/qtimageformats/src/plugins/imageformats/imageformats.pro
|
||||
@@ -16,8 +16,7 @@ config_jasper {
|
||||
SUBDIRS += macjp2
|
||||
}
|
||||
|
||||
-winrt {
|
||||
SUBDIRS -= tiff \
|
||||
tga \
|
||||
+ wbmp \
|
||||
webp
|
||||
-}
|
||||
--
|
||||
2.14.1
|
||||
|
|
@ -1,44 +0,0 @@
|
|||
From 1e9d5b22fbd18cfcf56f5c6ced19c0d9ba55a4f1 Mon Sep 17 00:00:00 2001
|
||||
From: Lars Schmertmann <Lars.Schmertmann@governikus.de>
|
||||
Date: Wed, 11 Jan 2017 17:29:40 +0100
|
||||
Subject: [PATCH] Do not request an unnessessary dangerous right
|
||||
|
||||
Bluetooth LE discovery needs ACCESS_COARSE_LOCATION permission
|
||||
since android 6.0. In the manifest file it is possible use it by
|
||||
"<uses-permission-sdk-23 android:name="ACCESS_COARSE_LOCATION" />"
|
||||
in general. But the bluetooth LE discovery requests it for every
|
||||
android version. This change enables the request for android > 6.0
|
||||
only (API-Level >=23).
|
||||
|
||||
Task-number: QTBUG-58085
|
||||
Change-Id: I78ad2fe83eb16eaf45813137335f85c7b3930992
|
||||
---
|
||||
src/bluetooth/qbluetoothdevicediscoveryagent_android.cpp | 5 ++++-
|
||||
1 file changed, 4 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git x/qtconnectivity/src/bluetooth/qbluetoothdevicediscoveryagent_android.cpp y/qtconnectivity/src/bluetooth/qbluetoothdevicediscoveryagent_android.cpp
|
||||
index 2d6e64be..e76ddff7 100644
|
||||
--- x/qtconnectivity/src/bluetooth/qbluetoothdevicediscoveryagent_android.cpp
|
||||
+++ y/qtconnectivity/src/bluetooth/qbluetoothdevicediscoveryagent_android.cpp
|
||||
@@ -45,6 +45,7 @@
|
||||
#include <QtCore/private/qjnihelpers_p.h>
|
||||
#include "android/devicediscoverybroadcastreceiver_p.h"
|
||||
#include <QtAndroidExtras/QAndroidJniEnvironment>
|
||||
+#include <QtAndroid>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
@@ -147,7 +148,9 @@ void QBluetoothDeviceDiscoveryAgentPrivate::start(QBluetoothDeviceDiscoveryAgent
|
||||
|
||||
// check Android v23+ permissions
|
||||
// -> BTLE search requires android.permission.ACCESS_COARSE_LOCATION
|
||||
- if (requestedMethods && QBluetoothDeviceDiscoveryAgent::LowEnergyMethod) {
|
||||
+ if (requestedMethods & QBluetoothDeviceDiscoveryAgent::LowEnergyMethod
|
||||
+ && QtAndroid::androidSdkVersion() >= 23)
|
||||
+ {
|
||||
QString permission(QLatin1String("android.permission.ACCESS_COARSE_LOCATION"));
|
||||
|
||||
// do we have required permission already, if so nothing to do
|
||||
--
|
||||
2.11.0
|
||||
|
|
@ -1,140 +0,0 @@
|
|||
From 523c61571e234865e411d823366dc87d62fe50ab Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Sebastian=20L=C3=B6sch?= <Sebastian.Loesch@governikus.de>
|
||||
Date: Wed, 10 Aug 2016 16:51:34 +0200
|
||||
Subject: Introduce QNetworkAccessManager::clearConnectionCache()
|
||||
|
||||
Sometimes it is desirable to use a new connection but keep already
|
||||
entered user credentials for usability reasons. This is now possible by
|
||||
clearing the connection cache (but keeping the authentication cache).
|
||||
|
||||
Change-Id: I2f5f64836ce19f81c8525701783a3da823dd468e
|
||||
---
|
||||
src/network/access/qnetworkaccessmanager.cpp | 25 +++++++++++++++++++---
|
||||
src/network/access/qnetworkaccessmanager.h | 2 ++
|
||||
src/network/access/qnetworkaccessmanager_p.h | 3 ++-
|
||||
.../access/qnetworkreply/tst_qnetworkreply.cpp | 3 ++-
|
||||
.../tst_network_remote_stresstest.cpp | 3 ++-
|
||||
.../network_stresstest/tst_network_stresstest.cpp | 3 ++-
|
||||
6 files changed, 32 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git x/qtbase/src/network/access/qnetworkaccessmanager.cpp y/qtbase/src/network/access/qnetworkaccessmanager.cpp
|
||||
index 6d5b2400f1..b763547a15 100644
|
||||
--- x/qtbase/src/network/access/qnetworkaccessmanager.cpp
|
||||
+++ y/qtbase/src/network/access/qnetworkaccessmanager.cpp
|
||||
@@ -1352,10 +1352,26 @@ QStringList QNetworkAccessManager::supportedSchemesImplementation() const
|
||||
|
||||
This function is useful for doing auto tests.
|
||||
|
||||
+ \sa clearConnectionCache()
|
||||
*/
|
||||
void QNetworkAccessManager::clearAccessCache()
|
||||
{
|
||||
- QNetworkAccessManagerPrivate::clearCache(this);
|
||||
+ QNetworkAccessManagerPrivate::clearAuthenticationCache(this);
|
||||
+ QNetworkAccessManagerPrivate::clearConnectionCache(this);
|
||||
+}
|
||||
+
|
||||
+/*!
|
||||
+ \since 5.9
|
||||
+
|
||||
+ Flushes the internal cache of network connections.
|
||||
+ In contrast to clearAccessCache() the authentication data
|
||||
+ is preserved.
|
||||
+
|
||||
+ \sa clearAccessCache()
|
||||
+*/
|
||||
+void QNetworkAccessManager::clearConnectionCache()
|
||||
+{
|
||||
+ QNetworkAccessManagerPrivate::clearConnectionCache(this);
|
||||
}
|
||||
|
||||
void QNetworkAccessManagerPrivate::_q_replyFinished()
|
||||
@@ -1552,11 +1568,14 @@ QList<QNetworkProxy> QNetworkAccessManagerPrivate::queryProxy(const QNetworkProx
|
||||
}
|
||||
#endif
|
||||
|
||||
-void QNetworkAccessManagerPrivate::clearCache(QNetworkAccessManager *manager)
|
||||
+void QNetworkAccessManagerPrivate::clearAuthenticationCache(QNetworkAccessManager *manager)
|
||||
{
|
||||
- manager->d_func()->objectCache.clear();
|
||||
manager->d_func()->authenticationManager->clearCache();
|
||||
+}
|
||||
|
||||
+void QNetworkAccessManagerPrivate::clearConnectionCache(QNetworkAccessManager *manager)
|
||||
+{
|
||||
+ manager->d_func()->objectCache.clear();
|
||||
manager->d_func()->destroyThread();
|
||||
}
|
||||
|
||||
diff --git x/qtbase/src/network/access/qnetworkaccessmanager.h y/qtbase/src/network/access/qnetworkaccessmanager.h
|
||||
index 4b8c4ddf0e..649013cced 100644
|
||||
--- x/qtbase/src/network/access/qnetworkaccessmanager.h
|
||||
+++ y/qtbase/src/network/access/qnetworkaccessmanager.h
|
||||
@@ -106,6 +106,8 @@ public:
|
||||
|
||||
void clearAccessCache();
|
||||
|
||||
+ void clearConnectionCache();
|
||||
+
|
||||
#ifndef QT_NO_NETWORKPROXY
|
||||
QNetworkProxy proxy() const;
|
||||
void setProxy(const QNetworkProxy &proxy);
|
||||
diff --git x/qtbase/src/network/access/qnetworkaccessmanager_p.h y/qtbase/src/network/access/qnetworkaccessmanager_p.h
|
||||
index bb4641ab8b..b4b5e6a789 100644
|
||||
--- x/qtbase/src/network/access/qnetworkaccessmanager_p.h
|
||||
+++ y/qtbase/src/network/access/qnetworkaccessmanager_p.h
|
||||
@@ -202,7 +202,8 @@ public:
|
||||
QNetworkAccessCache objectCache;
|
||||
static inline QNetworkAccessCache *getObjectCache(QNetworkAccessBackend *backend)
|
||||
{ return &backend->manager->objectCache; }
|
||||
- Q_AUTOTEST_EXPORT static void clearCache(QNetworkAccessManager *manager);
|
||||
+ Q_AUTOTEST_EXPORT static void clearAuthenticationCache(QNetworkAccessManager *manager);
|
||||
+ Q_AUTOTEST_EXPORT static void clearConnectionCache(QNetworkAccessManager *manager);
|
||||
#ifndef QT_NO_BEARERMANAGEMENT
|
||||
Q_AUTOTEST_EXPORT static const QWeakPointer<const QNetworkSession> getNetworkSession(const QNetworkAccessManager *manager);
|
||||
#endif
|
||||
diff --git x/qtbase/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp y/qtbase/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp
|
||||
index 649278d48b..c555cd8fa0 100644
|
||||
--- x/qtbase/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp
|
||||
+++ y/qtbase/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp
|
||||
@@ -6797,7 +6797,8 @@ void tst_QNetworkReply::authenticationCacheAfterCancel()
|
||||
// QTBUG-23136 workaround (needed even with danted v1.1.19):
|
||||
if (proxy.port() == 1081) {
|
||||
#ifdef QT_BUILD_INTERNAL
|
||||
- QNetworkAccessManagerPrivate::clearCache(&manager);
|
||||
+ QNetworkAccessManagerPrivate::clearAuthenticationCache(&manager);
|
||||
+ QNetworkAccessManagerPrivate::clearConnectionCache(&manager);
|
||||
#else
|
||||
return;
|
||||
#endif
|
||||
diff --git x/qtbase/tests/manual/network_remote_stresstest/tst_network_remote_stresstest.cpp y/qtbase/tests/manual/network_remote_stresstest/tst_network_remote_stresstest.cpp
|
||||
index 05ede9da99..99e3d148df 100644
|
||||
--- x/qtbase/tests/manual/network_remote_stresstest/tst_network_remote_stresstest.cpp
|
||||
+++ y/qtbase/tests/manual/network_remote_stresstest/tst_network_remote_stresstest.cpp
|
||||
@@ -147,7 +147,8 @@ void tst_NetworkRemoteStressTest::init()
|
||||
void tst_NetworkRemoteStressTest::clearManager()
|
||||
{
|
||||
#ifdef QT_BUILD_INTERNAL
|
||||
- QNetworkAccessManagerPrivate::clearCache(&manager);
|
||||
+ QNetworkAccessManagerPrivate::clearAuthenticationCache(&manager);
|
||||
+ QNetworkAccessManagerPrivate::clearConnectionCache(&manager);
|
||||
manager.setProxy(QNetworkProxy());
|
||||
manager.setCache(0);
|
||||
#endif
|
||||
diff --git x/qtbase/tests/manual/network_stresstest/tst_network_stresstest.cpp y/qtbase/tests/manual/network_stresstest/tst_network_stresstest.cpp
|
||||
index e3c76ea11b..d46703c671 100644
|
||||
--- x/qtbase/tests/manual/network_stresstest/tst_network_stresstest.cpp
|
||||
+++ y/qtbase/tests/manual/network_stresstest/tst_network_stresstest.cpp
|
||||
@@ -138,7 +138,8 @@ void tst_NetworkStressTest::init()
|
||||
void tst_NetworkStressTest::clearManager()
|
||||
{
|
||||
#ifdef QT_BUILD_INTERNAL
|
||||
- QNetworkAccessManagerPrivate::clearCache(&manager);
|
||||
+ QNetworkAccessManagerPrivate::clearAuthenticationCache(&manager);
|
||||
+ QNetworkAccessManagerPrivate::clearConnectionCache(&manager);
|
||||
manager.setProxy(QNetworkProxy());
|
||||
manager.setCache(0);
|
||||
#endif
|
||||
--
|
||||
2.11.0
|
||||
|
|
@ -1,59 +0,0 @@
|
|||
From e1ba5a3265be01d7d353bf82e4d8af331edbb434 Mon Sep 17 00:00:00 2001
|
||||
From: Lars Schmertmann <Lars.Schmertmann@governikus.de>
|
||||
Date: Tue, 13 Sep 2016 14:24:25 +0200
|
||||
Subject: Introduce QNetworkAccessManager::useAuthenticationManagerFrom
|
||||
|
||||
Sometimes it is desirable to use a new connection but keep already
|
||||
entered user credentials for usability reasons. This is now possible by
|
||||
using the AuthenticationManager from a different NetworkAccessManager.
|
||||
|
||||
[ChangeLog][QtCore][QNetworkAccessManager] Introduce useAuthenticationManagerFrom()
|
||||
|
||||
Change-Id: If61f0d03fc8b2f159bad869d0a2b650170e1e174
|
||||
---
|
||||
src/network/access/qnetworkaccessmanager.cpp | 15 +++++++++++++++
|
||||
src/network/access/qnetworkaccessmanager.h | 2 ++
|
||||
2 files changed, 17 insertions(+)
|
||||
|
||||
diff --git x/qtbase/src/network/access/qnetworkaccessmanager.cpp y/qtbase/src/network/access/qnetworkaccessmanager.cpp
|
||||
index b763547a15..83cb33ce72 100644
|
||||
--- x/qtbase/src/network/access/qnetworkaccessmanager.cpp
|
||||
+++ y/qtbase/src/network/access/qnetworkaccessmanager.cpp
|
||||
@@ -1079,6 +1079,21 @@ void QNetworkAccessManager::connectToHost(const QString &hostName, quint16 port)
|
||||
}
|
||||
|
||||
/*!
|
||||
+ \since 5.9
|
||||
+
|
||||
+ Sets the manager's authentication manager to be the one from
|
||||
+ \a accessManager. This is useful when you need to use a new connection,
|
||||
+ but keep already-entered user-credentials for usability reasons.
|
||||
+*/
|
||||
+void QNetworkAccessManager::useAuthenticationManagerFrom(const QNetworkAccessManager& accessManager)
|
||||
+{
|
||||
+ const QNetworkAccessManagerPrivate * const e = accessManager.d_func();
|
||||
+
|
||||
+ Q_D(QNetworkAccessManager);
|
||||
+ d->authenticationManager = e->authenticationManager;
|
||||
+}
|
||||
+
|
||||
+/*!
|
||||
\since 4.7
|
||||
|
||||
Sends a custom request to the server identified by the URL of \a request.
|
||||
diff --git x/qtbase/src/network/access/qnetworkaccessmanager.h y/qtbase/src/network/access/qnetworkaccessmanager.h
|
||||
index 649013cced..24f3c7147c 100644
|
||||
--- x/qtbase/src/network/access/qnetworkaccessmanager.h
|
||||
+++ y/qtbase/src/network/access/qnetworkaccessmanager.h
|
||||
@@ -149,6 +149,8 @@ public:
|
||||
#endif
|
||||
void connectToHost(const QString &hostName, quint16 port = 80);
|
||||
|
||||
+ void useAuthenticationManagerFrom(const QNetworkAccessManager& accessManager);
|
||||
+
|
||||
Q_SIGNALS:
|
||||
#ifndef QT_NO_NETWORKPROXY
|
||||
void proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *authenticator);
|
||||
--
|
||||
2.11.0
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
From 992a338b639e4df6da16659dc238dbaae0ae802f Mon Sep 17 00:00:00 2001
|
||||
From b0404383ab573d7550a6564405bb9b1316ff193a Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Sebastian=20L=C3=B6sch?= <Sebastian.Loesch@governikus.de>
|
||||
Date: Thu, 21 Apr 2016 09:19:19 +0200
|
||||
Subject: [PATCH] Make server side signature algorithms configurable
|
||||
|
@ -10,18 +10,17 @@ server side.
|
|||
|
||||
Change-Id: Ia178efd4778b91863fcc919bf50219115b300d77
|
||||
---
|
||||
src/network/ssl/qsslconfiguration.cpp | 42 +++++++++++++
|
||||
src/network/ssl/qsslconfiguration.h | 8 ++-
|
||||
src/network/ssl/qsslconfiguration_p.h | 5 ++
|
||||
src/network/ssl/qsslcontext_openssl.cpp | 45 ++++++++++++++
|
||||
src/network/ssl/qsslcontext_openssl_p.h | 1 +
|
||||
src/network/ssl/qsslsocket.cpp | 2 +
|
||||
src/network/ssl/qsslsocket_openssl_symbols_p.h | 5 ++
|
||||
.../auto/network/ssl/qsslsocket/tst_qsslsocket.cpp | 70 ++++++++++++++++++++++
|
||||
8 files changed, 177 insertions(+), 1 deletion(-)
|
||||
src/network/ssl/qsslconfiguration.cpp | 42 ++++++++++++++++++++++++
|
||||
src/network/ssl/qsslconfiguration.h | 8 ++++-
|
||||
src/network/ssl/qsslconfiguration_p.h | 5 +++
|
||||
src/network/ssl/qsslcontext_openssl.cpp | 45 ++++++++++++++++++++++++++
|
||||
src/network/ssl/qsslcontext_openssl_p.h | 1 +
|
||||
src/network/ssl/qsslsocket.cpp | 2 ++
|
||||
src/network/ssl/qsslsocket_openssl_symbols_p.h | 5 +++
|
||||
7 files changed, 107 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git x/qtbase/src/network/ssl/qsslconfiguration.cpp y/qtbase/src/network/ssl/qsslconfiguration.cpp
|
||||
index 75a880f..37f99fe 100644
|
||||
index 75a880f115..37f99feef1 100644
|
||||
--- x/qtbase/src/network/ssl/qsslconfiguration.cpp
|
||||
+++ y/qtbase/src/network/ssl/qsslconfiguration.cpp
|
||||
@@ -221,6 +221,7 @@ bool QSslConfiguration::operator==(const QSslConfiguration &other) const
|
||||
|
@ -40,10 +39,11 @@ index 75a880f..37f99fe 100644
|
|||
d->sslOptions == QSslConfigurationPrivate::defaultSslOptions &&
|
||||
d->sslSession.isNull() &&
|
||||
d->sslSessionTicketLifeTimeHint == -1 &&
|
||||
@@ -870,6 +872,46 @@ void QSslConfiguration::setDiffieHellmanParameters(const QSslDiffieHellmanParame
|
||||
@@ -869,6 +871,46 @@ void QSslConfiguration::setDiffieHellmanParameters(const QSslDiffieHellmanParame
|
||||
d->dhParams = dhparams;
|
||||
}
|
||||
|
||||
/*!
|
||||
+/*!
|
||||
+ \since 5.9
|
||||
+
|
||||
+ Returns the connection's current list of supported signature
|
||||
|
@ -83,12 +83,11 @@ index 75a880f..37f99fe 100644
|
|||
+ d->signatureAndHashAlgorithms = algorithms;
|
||||
+}
|
||||
+
|
||||
+/*!
|
||||
/*!
|
||||
\since 5.3
|
||||
|
||||
This function returns the protocol negotiated with the server
|
||||
diff --git x/qtbase/src/network/ssl/qsslconfiguration.h y/qtbase/src/network/ssl/qsslconfiguration.h
|
||||
index 1c57beb..4d3e512 100644
|
||||
index 1c57bebd65..4d3e5129d5 100644
|
||||
--- x/qtbase/src/network/ssl/qsslconfiguration.h
|
||||
+++ y/qtbase/src/network/ssl/qsslconfiguration.h
|
||||
@@ -56,10 +56,13 @@
|
||||
|
@ -117,7 +116,7 @@ index 1c57beb..4d3e512 100644
|
|||
static void setDefaultConfiguration(const QSslConfiguration &configuration);
|
||||
|
||||
diff --git x/qtbase/src/network/ssl/qsslconfiguration_p.h y/qtbase/src/network/ssl/qsslconfiguration_p.h
|
||||
index 6adf2c9..7be2539 100644
|
||||
index 6adf2c9b54..7be253973b 100644
|
||||
--- x/qtbase/src/network/ssl/qsslconfiguration_p.h
|
||||
+++ y/qtbase/src/network/ssl/qsslconfiguration_p.h
|
||||
@@ -75,6 +75,9 @@
|
||||
|
@ -140,7 +139,7 @@ index 6adf2c9..7be2539 100644
|
|||
int sslSessionTicketLifeTimeHint;
|
||||
|
||||
diff --git x/qtbase/src/network/ssl/qsslcontext_openssl.cpp y/qtbase/src/network/ssl/qsslcontext_openssl.cpp
|
||||
index c92d8fc..29df53a 100644
|
||||
index c92d8fc3f8..29df53abc0 100644
|
||||
--- x/qtbase/src/network/ssl/qsslcontext_openssl.cpp
|
||||
+++ y/qtbase/src/network/ssl/qsslcontext_openssl.cpp
|
||||
@@ -42,6 +42,7 @@
|
||||
|
@ -210,7 +209,7 @@ index c92d8fc..29df53a 100644
|
|||
|
||||
QSslContext* QSslContext::fromConfiguration(QSslSocket::SslMode mode, const QSslConfiguration &configuration, bool allowRootCertOnDemandLoading)
|
||||
diff --git x/qtbase/src/network/ssl/qsslcontext_openssl_p.h y/qtbase/src/network/ssl/qsslcontext_openssl_p.h
|
||||
index 06a31af..c8c8e194 100644
|
||||
index 06a31af5e5..c8c8e1941b 100644
|
||||
--- x/qtbase/src/network/ssl/qsslcontext_openssl_p.h
|
||||
+++ y/qtbase/src/network/ssl/qsslcontext_openssl_p.h
|
||||
@@ -54,6 +54,7 @@
|
||||
|
@ -222,7 +221,7 @@ index 06a31af..c8c8e194 100644
|
|||
#include <QtNetwork/qsslcertificate.h>
|
||||
#include <QtNetwork/qsslconfiguration.h>
|
||||
diff --git x/qtbase/src/network/ssl/qsslsocket.cpp y/qtbase/src/network/ssl/qsslsocket.cpp
|
||||
index 29e1f32..8257112 100644
|
||||
index 8eba5db9fe..c0aa8b9bdf 100644
|
||||
--- x/qtbase/src/network/ssl/qsslsocket.cpp
|
||||
+++ y/qtbase/src/network/ssl/qsslsocket.cpp
|
||||
@@ -922,6 +922,7 @@ void QSslSocket::setSslConfiguration(const QSslConfiguration &configuration)
|
||||
|
@ -233,7 +232,7 @@ index 29e1f32..8257112 100644
|
|||
d->configuration.sslOptions = configuration.d->sslOptions;
|
||||
d->configuration.sslSession = configuration.sessionTicket();
|
||||
d->configuration.sslSessionTicketLifeTimeHint = configuration.sessionTicketLifeTimeHint();
|
||||
@@ -2230,6 +2231,7 @@ void QSslConfigurationPrivate::deepCopyDefaultConfiguration(QSslConfigurationPri
|
||||
@@ -2249,6 +2250,7 @@ void QSslConfigurationPrivate::deepCopyDefaultConfiguration(QSslConfigurationPri
|
||||
ptr->peerVerifyDepth = global->peerVerifyDepth;
|
||||
ptr->sslOptions = global->sslOptions;
|
||||
ptr->ellipticCurves = global->ellipticCurves;
|
||||
|
@ -242,7 +241,7 @@ index 29e1f32..8257112 100644
|
|||
|
||||
/*!
|
||||
diff --git x/qtbase/src/network/ssl/qsslsocket_openssl_symbols_p.h y/qtbase/src/network/ssl/qsslsocket_openssl_symbols_p.h
|
||||
index b35a895..d4cd493 100644
|
||||
index b35a895d38..d4cd493c45 100644
|
||||
--- x/qtbase/src/network/ssl/qsslsocket_openssl_symbols_p.h
|
||||
+++ y/qtbase/src/network/ssl/qsslsocket_openssl_symbols_p.h
|
||||
@@ -517,6 +517,11 @@ int q_EC_curve_nist2nid(const char *name);
|
||||
|
@ -257,94 +256,6 @@ index b35a895..d4cd493 100644
|
|||
// PKCS#12 support
|
||||
int q_PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert, STACK_OF(X509) **ca);
|
||||
PKCS12 *q_d2i_PKCS12_bio(BIO *bio, PKCS12 **pkcs12);
|
||||
diff --git x/qtbase/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp y/qtbase/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp
|
||||
index 4eb26d1..79a55cc 100644
|
||||
--- x/qtbase/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp
|
||||
+++ y/qtbase/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp
|
||||
@@ -236,6 +236,8 @@ private slots:
|
||||
void ephemeralServerKey();
|
||||
void allowedProtocolNegotiation();
|
||||
void pskServer();
|
||||
+ void signatureAlgorithm_data();
|
||||
+ void signatureAlgorithm();
|
||||
#endif
|
||||
|
||||
void setEmptyDefaultConfiguration(); // this test should be last
|
||||
@@ -3744,6 +3746,74 @@ void tst_QSslSocket::pskServer()
|
||||
QCOMPARE(socket.state(), QAbstractSocket::UnconnectedState);
|
||||
QCOMPARE(disconnectedSpy.count(), 1);
|
||||
}
|
||||
+using SigAlgPair = QPair<QSsl::KeyAlgorithm, QCryptographicHash::Algorithm>;
|
||||
+Q_DECLARE_METATYPE(QCryptographicHash::Algorithm);
|
||||
+Q_DECLARE_METATYPE(QSsl::KeyAlgorithm);
|
||||
+Q_DECLARE_METATYPE(SigAlgPair);
|
||||
+
|
||||
+void tst_QSslSocket::signatureAlgorithm_data()
|
||||
+{
|
||||
+ QTest::addColumn<SigAlgPair>("serverSigAlgPair");
|
||||
+ QTest::addColumn<QSsl::SslProtocol>("serverProtocol");
|
||||
+ QTest::addColumn<SigAlgPair>("clientSigAlgPair");
|
||||
+ QTest::addColumn<QSsl::SslProtocol>("clientProtocol");
|
||||
+ QTest::addColumn<QAbstractSocket::SocketState>("state");
|
||||
+
|
||||
+ auto rsaSha256 = SigAlgPair(QSsl::Rsa, QCryptographicHash::Sha256);
|
||||
+ auto rsaSha512 = SigAlgPair(QSsl::Rsa, QCryptographicHash::Sha512);
|
||||
+ auto ecdsaSha512= SigAlgPair(QSsl::Ec, QCryptographicHash::Sha512);
|
||||
+
|
||||
+ QTest::newRow("match_TlsV1_2") << rsaSha256 << QSsl::TlsV1_2 << rsaSha256 << QSsl::AnyProtocol << QAbstractSocket::ConnectedState;
|
||||
+ QTest::newRow("no_hashalg_match_TlsV1_2") << rsaSha256 << QSsl::TlsV1_2 << rsaSha512 << QSsl::AnyProtocol << QAbstractSocket::UnconnectedState;
|
||||
+ QTest::newRow("no_sigalg_match_TlsV1_2") << ecdsaSha512 << QSsl::TlsV1_2 << rsaSha512 << QSsl::AnyProtocol << QAbstractSocket::UnconnectedState;
|
||||
+ QTest::newRow("no_cipher_match_AnyProtocol") << rsaSha512 << QSsl::TlsV1_2 << ecdsaSha512 << QSsl::AnyProtocol << QAbstractSocket::UnconnectedState;
|
||||
+
|
||||
+ // signature algorithms do not match, but are ignored because the tls version is not v1.2
|
||||
+ QTest::newRow("client_ignore_TlsV1_1") << rsaSha256 << QSsl::TlsV1_1 << rsaSha512 << QSsl::AnyProtocol << QAbstractSocket::ConnectedState;
|
||||
+ QTest::newRow("server_ignore_TlsV1_1") << rsaSha256 << QSsl::AnyProtocol << rsaSha512 << QSsl::TlsV1_1 << QAbstractSocket::ConnectedState;
|
||||
+ QTest::newRow("client_ignore_TlsV1_0") << rsaSha256 << QSsl::TlsV1_0 << rsaSha512 << QSsl::AnyProtocol << QAbstractSocket::ConnectedState;
|
||||
+ QTest::newRow("server_ignore_TlsV1_0") << rsaSha256 << QSsl::AnyProtocol << rsaSha512 << QSsl::TlsV1_0 << QAbstractSocket::ConnectedState;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+void tst_QSslSocket::signatureAlgorithm()
|
||||
+{
|
||||
+ QFETCH_GLOBAL(bool, setProxy);
|
||||
+ if (!QSslSocket::supportsSsl() || setProxy)
|
||||
+ return;
|
||||
+
|
||||
+ QFETCH(SigAlgPair, serverSigAlgPair);
|
||||
+ QFETCH(QSsl::SslProtocol, serverProtocol);
|
||||
+ QFETCH(SigAlgPair, clientSigAlgPair);
|
||||
+ QFETCH(QSsl::SslProtocol, clientProtocol);
|
||||
+ QFETCH(QAbstractSocket::SocketState, state);
|
||||
+
|
||||
+
|
||||
+ SslServer server;
|
||||
+ server.protocol = serverProtocol;
|
||||
+ server.config.setCiphers({QSslCipher("ECDHE-RSA-AES256-SHA")});
|
||||
+ server.config.setSignatureAndHashAlgorithms({serverSigAlgPair});
|
||||
+ QVERIFY(server.listen());
|
||||
+
|
||||
+ QSslConfiguration clientConfig = QSslConfiguration::defaultConfiguration();
|
||||
+ clientConfig.setSignatureAndHashAlgorithms({clientSigAlgPair});
|
||||
+ clientConfig.setProtocol(clientProtocol);
|
||||
+ QSslSocket client;
|
||||
+ client.setSslConfiguration(clientConfig);
|
||||
+ socket = &client;
|
||||
+
|
||||
+ QEventLoop loop;
|
||||
+ QTimer::singleShot(5000, &loop, SLOT(quit()));
|
||||
+ connect(socket, SIGNAL(error(QAbstractSocket::SocketError)), &loop, SLOT(quit()));
|
||||
+ connect(socket, SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(ignoreErrorSlot()));
|
||||
+ connect(socket, SIGNAL(encrypted()), &loop, SLOT(quit()));
|
||||
+
|
||||
+
|
||||
+ client.connectToHostEncrypted(QHostAddress(QHostAddress::LocalHost).toString(), server.serverPort());
|
||||
+ loop.exec();
|
||||
+ QCOMPARE(client.state(), state);
|
||||
+}
|
||||
+
|
||||
|
||||
#endif // QT_NO_OPENSSL
|
||||
|
||||
--
|
||||
2.10.2
|
||||
2.15.0
|
||||
|
||||
|
|
|
@ -1,69 +0,0 @@
|
|||
From a3a86b6b4acb210392d0aa0aad555f7afb455e0b Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Sebastian=20L=C3=B6sch?= <Sebastian.Loesch@governikus.de>
|
||||
Date: Tue, 1 Nov 2016 11:16:32 +0100
|
||||
Subject: Make variant selection possible if base is missing
|
||||
|
||||
[ChangeLog][QtCore][QFileSelector] Removed the requirement for an unused
|
||||
default base file in case you want to load only a variant.
|
||||
|
||||
When the base file (e.g. /image.jpg) was missing, no selectors were
|
||||
considered and it was not possible to load variants of this file (e.g.
|
||||
/+android/image.jpg, /+android/+tablet/image.jpg) without specifying the
|
||||
directory as well.
|
||||
|
||||
As a work around, one previously had to place a default file in
|
||||
the base location, which is undesirable in some cases because:
|
||||
1. The extra file consumes unnecessary space.
|
||||
2. It is impossible to encapsulate platform-specific implementation
|
||||
details by hiding files in a subdirectory.
|
||||
|
||||
Task-number: QTBUG-51230
|
||||
Change-Id: I4c7f9ec952bff6e5b7738d8cabe3c762c208a38e
|
||||
---
|
||||
src/corelib/io/qfileselector.cpp | 9 +++------
|
||||
tests/auto/corelib/io/qfileselector/tst_qfileselector.cpp | 2 +-
|
||||
2 files changed, 4 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git x/qtbase/src/corelib/io/qfileselector.cpp y/qtbase/src/corelib/io/qfileselector.cpp
|
||||
index 920281cef7..b48b3e1162 100644
|
||||
--- x/qtbase/src/corelib/io/qfileselector.cpp
|
||||
+++ y/qtbase/src/corelib/io/qfileselector.cpp
|
||||
@@ -133,9 +133,9 @@ QFileSelectorPrivate::QFileSelectorPrivate()
|
||||
With those files available, you would select a different file on the android platform,
|
||||
but only if the locale was en_GB.
|
||||
|
||||
- QFileSelector will not attempt to select if the base file does not exist. For error handling in
|
||||
- the case no valid selectors are present, it is recommended to have a default or error-handling
|
||||
- file in the base file location even if you expect selectors to be present for all deployments.
|
||||
+ For error handling in the case no valid selectors are present, it is recommended to have a default or
|
||||
+ error-handling file in the base file location even if you expect selectors to be present for all
|
||||
+ deployments.
|
||||
|
||||
In a future version, some may be marked as deploy-time static and be moved during the
|
||||
deployment step as an optimization. As selectors come with a performance cost, it is
|
||||
@@ -298,9 +298,6 @@ QString QFileSelectorPrivate::select(const QString &filePath) const
|
||||
{
|
||||
Q_Q(const QFileSelector);
|
||||
QFileInfo fi(filePath);
|
||||
- // If file doesn't exist, don't select
|
||||
- if (!fi.exists())
|
||||
- return filePath;
|
||||
|
||||
QString ret = selectionHelper(fi.path().isEmpty() ? QString() : fi.path() + QLatin1Char('/'),
|
||||
fi.fileName(), q->allSelectors());
|
||||
diff --git x/qtbase/tests/auto/corelib/io/qfileselector/tst_qfileselector.cpp y/qtbase/tests/auto/corelib/io/qfileselector/tst_qfileselector.cpp
|
||||
index e5ede1ad06..8c2886f337 100644
|
||||
--- x/qtbase/tests/auto/corelib/io/qfileselector/tst_qfileselector.cpp
|
||||
+++ y/qtbase/tests/auto/corelib/io/qfileselector/tst_qfileselector.cpp
|
||||
@@ -138,7 +138,7 @@ void tst_QFileSelector::basicTest_data()
|
||||
<< QString(":/extras/test2");
|
||||
|
||||
QTest::newRow("custom1-withselector-nobasefile") << QString(":/extras/test3") << (QStringList() << custom1)
|
||||
- << QString(":/extras/test3");
|
||||
+ << QString(":/extras/+custom1/test3");
|
||||
|
||||
QString custom2("custom2");
|
||||
QString custom3("custom3");
|
||||
--
|
||||
2.11.0
|
||||
|
|
@ -1,681 +0,0 @@
|
|||
From 0d81394307262f386e9e7d05b37f373c6e64066d Mon Sep 17 00:00:00 2001
|
||||
From: Lars Schmertmann <Lars.Schmertmann@governikus.de>
|
||||
Date: Thu, 5 Jan 2017 13:43:57 +0100
|
||||
Subject: QNearfieldTarget: Introduce (set)keepConnection() and disconnect()
|
||||
|
||||
For the communication with a German ID card its required to execute
|
||||
several commands in a row, whereby a state is generated. Every command
|
||||
works on the state created by the command before. Depending on the
|
||||
Android version the state gets lost when the connection is closed.
|
||||
|
||||
With this change it is possible to keep the connection as long as needed
|
||||
and close it manually. Because of backward compatibility the connection
|
||||
is created and closed automatically by default. With the use of
|
||||
setKeepConnection(true) the communication with the target is also a
|
||||
lot of faster.
|
||||
|
||||
[ChangeLog][QNearfieldTarget] Introduce (set)keepConnection() and
|
||||
disconnect() to keep the state of a target and speed up communication.
|
||||
|
||||
Change-Id: I5778c9bdaf04cfeae78b3222bef4475f4cd7c436
|
||||
---
|
||||
src/nfc/qnearfieldtarget.cpp | 46 ++++++
|
||||
src/nfc/qnearfieldtarget.h | 4 +
|
||||
src/nfc/qnearfieldtarget_android.cpp | 252 ++++++++++++++++++++-------------
|
||||
src/nfc/qnearfieldtarget_android_p.cpp | 20 ++-
|
||||
src/nfc/qnearfieldtarget_android_p.h | 8 ++
|
||||
src/nfc/qnearfieldtarget_neard_p.cpp | 15 ++
|
||||
src/nfc/qnearfieldtarget_p.cpp | 16 +++
|
||||
src/nfc/qnearfieldtarget_p.h | 5 +
|
||||
8 files changed, 265 insertions(+), 101 deletions(-)
|
||||
|
||||
diff --git x/qtconnectivity/src/nfc/qnearfieldtarget.cpp y/qtconnectivity/src/nfc/qnearfieldtarget.cpp
|
||||
index 274ef175..4477d74b 100644
|
||||
--- x/qtconnectivity/src/nfc/qnearfieldtarget.cpp
|
||||
+++ y/qtconnectivity/src/nfc/qnearfieldtarget.cpp
|
||||
@@ -319,6 +319,52 @@ QUrl QNearFieldTarget::url() const
|
||||
*/
|
||||
|
||||
/*!
|
||||
+ \since 5.9
|
||||
+
|
||||
+ Returns true if this feature is enabled.
|
||||
+
|
||||
+ \sa setKeepConnection(), disconnect()
|
||||
+*/
|
||||
+bool QNearFieldTarget::keepConnection() const
|
||||
+{
|
||||
+ return d_ptr->keepConnection();
|
||||
+}
|
||||
+
|
||||
+/*!
|
||||
+ \since 5.9
|
||||
+
|
||||
+ Causes QNearFieldTarget to keep the connection after processing a command
|
||||
+ or reading/writing NDEF messages. A call of this function is only needed once.
|
||||
+
|
||||
+ Returns true if enabling this feature was successful. A possible
|
||||
+ reason for a failure is the lack of support on the used platform.
|
||||
+
|
||||
+ Enabling this feature requires to use the disconnect() function too, to close the
|
||||
+ connection manually and enable communication with the target from a different instance.
|
||||
+ Disabling this feature will also close an open connection.
|
||||
+
|
||||
+ \sa keepConnection(), disconnect()
|
||||
+*/
|
||||
+bool QNearFieldTarget::setKeepConnection(bool isPersistent)
|
||||
+{
|
||||
+ return d_ptr->setKeepConnection(isPersistent);
|
||||
+}
|
||||
+
|
||||
+/*!
|
||||
+ \since 5.9
|
||||
+
|
||||
+ Closes the connection to the target.
|
||||
+
|
||||
+ Returns true only if an existing connection was successfully closed.
|
||||
+
|
||||
+ \sa keepConnection(), setKeepConnection()
|
||||
+*/
|
||||
+bool QNearFieldTarget::disconnect()
|
||||
+{
|
||||
+ return d_ptr->disconnect();
|
||||
+}
|
||||
+
|
||||
+/*!
|
||||
Returns true if the target is processing commands; otherwise returns false.
|
||||
*/
|
||||
bool QNearFieldTarget::isProcessingCommand() const
|
||||
diff --git x/qtconnectivity/src/nfc/qnearfieldtarget.h y/qtconnectivity/src/nfc/qnearfieldtarget.h
|
||||
index 620ea813..19d87e96 100644
|
||||
--- x/qtconnectivity/src/nfc/qnearfieldtarget.h
|
||||
+++ y/qtconnectivity/src/nfc/qnearfieldtarget.h
|
||||
@@ -126,6 +126,10 @@ public:
|
||||
virtual Type type() const = 0;
|
||||
virtual AccessMethods accessMethods() const = 0;
|
||||
|
||||
+ bool keepConnection() const;
|
||||
+ bool setKeepConnection(bool isPersistent);
|
||||
+ bool disconnect();
|
||||
+
|
||||
bool isProcessingCommand() const;
|
||||
|
||||
// NdefAccess
|
||||
diff --git x/qtconnectivity/src/nfc/qnearfieldtarget_android.cpp y/qtconnectivity/src/nfc/qnearfieldtarget_android.cpp
|
||||
index f41b0b2e..04718fc5 100644
|
||||
--- x/qtconnectivity/src/nfc/qnearfieldtarget_android.cpp
|
||||
+++ y/qtconnectivity/src/nfc/qnearfieldtarget_android.cpp
|
||||
@@ -41,26 +41,27 @@
|
||||
#include "android/androidjninfc_p.h"
|
||||
#include "qdebug.h"
|
||||
|
||||
-#define NDEFTECHNOLOGY "android.nfc.tech.Ndef"
|
||||
-#define NDEFFORMATABLETECHNOLOGY "android.nfc.tech.NdefFormatable"
|
||||
-#define ISODEPTECHNOLOGY "android.nfc.tech.IsoDep"
|
||||
-#define NFCATECHNOLOGY "android.nfc.tech.NfcA"
|
||||
-#define NFCBTECHNOLOGY "android.nfc.tech.NfcB"
|
||||
-#define NFCFTECHNOLOGY "android.nfc.tech.NfcF"
|
||||
-#define NFCVTECHNOLOGY "android.nfc.tech.NfcV"
|
||||
-#define MIFARECLASSICTECHNOLOGY "android.nfc.tech.MifareClassic"
|
||||
-#define MIFARECULTRALIGHTTECHNOLOGY "android.nfc.tech.MifareUltralight"
|
||||
-
|
||||
-#define MIFARETAG "com.nxp.ndef.mifareclassic"
|
||||
-#define NFCTAGTYPE1 "org.nfcforum.ndef.type1"
|
||||
-#define NFCTAGTYPE2 "org.nfcforum.ndef.type2"
|
||||
-#define NFCTAGTYPE3 "org.nfcforum.ndef.type3"
|
||||
-#define NFCTAGTYPE4 "org.nfcforum.ndef.type4"
|
||||
+#define NDEFTECHNOLOGY QStringLiteral("android.nfc.tech.Ndef")
|
||||
+#define NDEFFORMATABLETECHNOLOGY QStringLiteral("android.nfc.tech.NdefFormatable")
|
||||
+#define ISODEPTECHNOLOGY QStringLiteral("android.nfc.tech.IsoDep")
|
||||
+#define NFCATECHNOLOGY QStringLiteral("android.nfc.tech.NfcA")
|
||||
+#define NFCBTECHNOLOGY QStringLiteral("android.nfc.tech.NfcB")
|
||||
+#define NFCFTECHNOLOGY QStringLiteral("android.nfc.tech.NfcF")
|
||||
+#define NFCVTECHNOLOGY QStringLiteral("android.nfc.tech.NfcV")
|
||||
+#define MIFARECLASSICTECHNOLOGY QStringLiteral("android.nfc.tech.MifareClassic")
|
||||
+#define MIFARECULTRALIGHTTECHNOLOGY QStringLiteral("android.nfc.tech.MifareUltralight")
|
||||
+
|
||||
+#define MIFARETAG QStringLiteral("com.nxp.ndef.mifareclassic")
|
||||
+#define NFCTAGTYPE1 QStringLiteral("org.nfcforum.ndef.type1")
|
||||
+#define NFCTAGTYPE2 QStringLiteral("org.nfcforum.ndef.type2")
|
||||
+#define NFCTAGTYPE3 QStringLiteral("org.nfcforum.ndef.type3")
|
||||
+#define NFCTAGTYPE4 QStringLiteral("org.nfcforum.ndef.type4")
|
||||
|
||||
NearFieldTarget::NearFieldTarget(QAndroidJniObject intent, const QByteArray uid, QObject *parent) :
|
||||
QNearFieldTarget(parent),
|
||||
m_intent(intent),
|
||||
- m_uid(uid)
|
||||
+ m_uid(uid),
|
||||
+ m_keepConnection(false)
|
||||
{
|
||||
updateTechList();
|
||||
updateType();
|
||||
@@ -87,23 +88,54 @@ QNearFieldTarget::AccessMethods NearFieldTarget::accessMethods() const
|
||||
{
|
||||
AccessMethods result = UnknownAccess;
|
||||
|
||||
- if (m_techList.contains(QStringLiteral(NDEFTECHNOLOGY))
|
||||
- || m_techList.contains(QStringLiteral(NDEFFORMATABLETECHNOLOGY)))
|
||||
+ if (m_techList.contains(NDEFTECHNOLOGY)
|
||||
+ || m_techList.contains(NDEFFORMATABLETECHNOLOGY))
|
||||
result |= NdefAccess;
|
||||
|
||||
- if (m_techList.contains(QStringLiteral(ISODEPTECHNOLOGY))
|
||||
- || m_techList.contains(QStringLiteral(NFCATECHNOLOGY))
|
||||
- || m_techList.contains(QStringLiteral(NFCBTECHNOLOGY))
|
||||
- || m_techList.contains(QStringLiteral(NFCFTECHNOLOGY))
|
||||
- || m_techList.contains(QStringLiteral(NFCVTECHNOLOGY)))
|
||||
+ if (m_techList.contains(ISODEPTECHNOLOGY)
|
||||
+ || m_techList.contains(NFCATECHNOLOGY)
|
||||
+ || m_techList.contains(NFCBTECHNOLOGY)
|
||||
+ || m_techList.contains(NFCFTECHNOLOGY)
|
||||
+ || m_techList.contains(NFCVTECHNOLOGY))
|
||||
result |= TagTypeSpecificAccess;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
+bool NearFieldTarget::keepConnection() const
|
||||
+{
|
||||
+ return m_keepConnection;
|
||||
+}
|
||||
+
|
||||
+bool NearFieldTarget::setKeepConnection(bool isPersistent)
|
||||
+{
|
||||
+ m_keepConnection = isPersistent;
|
||||
+
|
||||
+ if (!m_keepConnection)
|
||||
+ disconnect();
|
||||
+
|
||||
+ return true;
|
||||
+}
|
||||
+
|
||||
+bool NearFieldTarget::disconnect()
|
||||
+{
|
||||
+ if (!m_tagTech.isValid())
|
||||
+ return false;
|
||||
+
|
||||
+ bool connected = m_tagTech.callMethod<jboolean>("isConnected");
|
||||
+ if (catchJavaExceptions())
|
||||
+ return false;
|
||||
+
|
||||
+ if (!connected)
|
||||
+ return false;
|
||||
+
|
||||
+ m_tagTech.callMethod<void>("close");
|
||||
+ return !catchJavaExceptions();
|
||||
+}
|
||||
+
|
||||
bool NearFieldTarget::hasNdefMessage()
|
||||
{
|
||||
- return m_techList.contains(QStringLiteral(NDEFTECHNOLOGY));
|
||||
+ return m_techList.contains(NDEFTECHNOLOGY);
|
||||
}
|
||||
|
||||
QNearFieldTarget::RequestId NearFieldTarget::readNdefMessages()
|
||||
@@ -122,8 +154,7 @@ QNearFieldTarget::RequestId NearFieldTarget::readNdefMessages()
|
||||
}
|
||||
|
||||
// Getting Ndef technology object
|
||||
- QAndroidJniObject ndef = getTagTechnology(QStringLiteral(NDEFTECHNOLOGY));
|
||||
- if (!ndef.isValid()) {
|
||||
+ if (!setTagTechnology({NDEFTECHNOLOGY})) {
|
||||
QMetaObject::invokeMethod(this, "error", Qt::QueuedConnection,
|
||||
Q_ARG(QNearFieldTarget::Error, QNearFieldTarget::UnsupportedError),
|
||||
Q_ARG(const QNearFieldTarget::RequestId&, requestId));
|
||||
@@ -131,8 +162,7 @@ QNearFieldTarget::RequestId NearFieldTarget::readNdefMessages()
|
||||
}
|
||||
|
||||
// Connect
|
||||
- ndef.callMethod<void>("connect");
|
||||
- if (catchJavaExceptions()) {
|
||||
+ if (!connect()) {
|
||||
QMetaObject::invokeMethod(this, "error", Qt::QueuedConnection,
|
||||
Q_ARG(QNearFieldTarget::Error, QNearFieldTarget::TargetOutOfRangeError),
|
||||
Q_ARG(const QNearFieldTarget::RequestId&, requestId));
|
||||
@@ -140,7 +170,7 @@ QNearFieldTarget::RequestId NearFieldTarget::readNdefMessages()
|
||||
}
|
||||
|
||||
// Get NdefMessage object
|
||||
- QAndroidJniObject ndefMessage = ndef.callObjectMethod("getNdefMessage", "()Landroid/nfc/NdefMessage;");
|
||||
+ QAndroidJniObject ndefMessage = m_tagTech.callObjectMethod("getNdefMessage", "()Landroid/nfc/NdefMessage;");
|
||||
if (catchJavaExceptions())
|
||||
ndefMessage = QAndroidJniObject();
|
||||
if (!ndefMessage.isValid()) {
|
||||
@@ -154,9 +184,10 @@ QNearFieldTarget::RequestId NearFieldTarget::readNdefMessages()
|
||||
QAndroidJniObject ndefMessageBA = ndefMessage.callObjectMethod("toByteArray", "()[B");
|
||||
QByteArray ndefMessageQBA = jbyteArrayToQByteArray(ndefMessageBA.object<jbyteArray>());
|
||||
|
||||
- // Closing connection
|
||||
- ndef.callMethod<void>("close");
|
||||
- catchJavaExceptions(); // IOException at this point does not matter anymore.
|
||||
+ if (!m_keepConnection) {
|
||||
+ // Closing connection
|
||||
+ disconnect(); // IOException at this point does not matter anymore.
|
||||
+ }
|
||||
|
||||
// Sending QNdefMessage, requestCompleted and exit.
|
||||
QNdefMessage qNdefMessage = QNdefMessage::fromByteArray(ndefMessageQBA);
|
||||
@@ -173,24 +204,22 @@ QNearFieldTarget::RequestId NearFieldTarget::readNdefMessages()
|
||||
int NearFieldTarget::maxCommandLength() const
|
||||
{
|
||||
QAndroidJniObject tagTech;
|
||||
- if (m_techList.contains(QStringLiteral(ISODEPTECHNOLOGY))) {
|
||||
- tagTech = getTagTechnology(QStringLiteral(ISODEPTECHNOLOGY));
|
||||
- } else if (m_techList.contains(QStringLiteral(NFCATECHNOLOGY))) {
|
||||
- tagTech = getTagTechnology(QStringLiteral(NFCATECHNOLOGY));
|
||||
- } else if (m_techList.contains(QStringLiteral(NFCBTECHNOLOGY))) {
|
||||
- tagTech = getTagTechnology(QStringLiteral(NFCBTECHNOLOGY));
|
||||
- } else if (m_techList.contains(QStringLiteral(NFCFTECHNOLOGY))) {
|
||||
- tagTech = getTagTechnology(QStringLiteral(NFCFTECHNOLOGY));
|
||||
- } else if (m_techList.contains(QStringLiteral(NFCVTECHNOLOGY))) {
|
||||
- tagTech = getTagTechnology(QStringLiteral(NFCVTECHNOLOGY));
|
||||
- } else {
|
||||
+ if (m_techList.contains(ISODEPTECHNOLOGY))
|
||||
+ tagTech = getTagTechnology(ISODEPTECHNOLOGY);
|
||||
+ else if (m_techList.contains(NFCATECHNOLOGY))
|
||||
+ tagTech = getTagTechnology(NFCATECHNOLOGY);
|
||||
+ else if (m_techList.contains(NFCBTECHNOLOGY))
|
||||
+ tagTech = getTagTechnology(NFCBTECHNOLOGY);
|
||||
+ else if (m_techList.contains(NFCFTECHNOLOGY))
|
||||
+ tagTech = getTagTechnology(NFCFTECHNOLOGY);
|
||||
+ else if (m_techList.contains(NFCVTECHNOLOGY))
|
||||
+ tagTech = getTagTechnology(NFCVTECHNOLOGY);
|
||||
+ else
|
||||
return 0;
|
||||
- }
|
||||
|
||||
int returnVal = tagTech.callMethod<jint>("getMaxTransceiveLength");
|
||||
- if (catchJavaExceptions()) {
|
||||
+ if (catchJavaExceptions())
|
||||
return 0;
|
||||
- }
|
||||
|
||||
return returnVal;
|
||||
}
|
||||
@@ -208,26 +237,14 @@ QNearFieldTarget::RequestId NearFieldTarget::sendCommand(const QByteArray &comma
|
||||
|
||||
QAndroidJniEnvironment env;
|
||||
|
||||
- QAndroidJniObject tagTech;
|
||||
- if (m_techList.contains(QStringLiteral(ISODEPTECHNOLOGY))) {
|
||||
- tagTech = getTagTechnology(QStringLiteral(ISODEPTECHNOLOGY));
|
||||
- } else if (m_techList.contains(QStringLiteral(NFCATECHNOLOGY))) {
|
||||
- tagTech = getTagTechnology(QStringLiteral(NFCATECHNOLOGY));
|
||||
- } else if (m_techList.contains(QStringLiteral(NFCBTECHNOLOGY))) {
|
||||
- tagTech = getTagTechnology(QStringLiteral(NFCBTECHNOLOGY));
|
||||
- } else if (m_techList.contains(QStringLiteral(NFCFTECHNOLOGY))) {
|
||||
- tagTech = getTagTechnology(QStringLiteral(NFCFTECHNOLOGY));
|
||||
- } else if (m_techList.contains(QStringLiteral(NFCVTECHNOLOGY))) {
|
||||
- tagTech = getTagTechnology(QStringLiteral(NFCVTECHNOLOGY));
|
||||
- } else {
|
||||
+ if (!setTagTechnology({ISODEPTECHNOLOGY, NFCATECHNOLOGY, NFCBTECHNOLOGY, NFCFTECHNOLOGY, NFCVTECHNOLOGY})) {
|
||||
Q_EMIT QNearFieldTarget::error(QNearFieldTarget::UnsupportedError, QNearFieldTarget::RequestId());
|
||||
return QNearFieldTarget::RequestId();
|
||||
}
|
||||
|
||||
// Connecting
|
||||
QNearFieldTarget::RequestId requestId = QNearFieldTarget::RequestId(new QNearFieldTarget::RequestIdPrivate());
|
||||
- tagTech.callMethod<void>("connect");
|
||||
- if (catchJavaExceptions()) {
|
||||
+ if (!connect()) {
|
||||
QMetaObject::invokeMethod(this, "error", Qt::QueuedConnection,
|
||||
Q_ARG(QNearFieldTarget::Error, QNearFieldTarget::TargetOutOfRangeError),
|
||||
Q_ARG(const QNearFieldTarget::RequestId&, requestId));
|
||||
@@ -240,7 +257,7 @@ QNearFieldTarget::RequestId NearFieldTarget::sendCommand(const QByteArray &comma
|
||||
env->SetByteArrayRegion(jba, 0, ba.size(), reinterpret_cast<jbyte*>(ba.data()));
|
||||
|
||||
// Writing
|
||||
- QAndroidJniObject myNewVal = tagTech.callObjectMethod("transceive", "([B)[B", jba);
|
||||
+ QAndroidJniObject myNewVal = m_tagTech.callObjectMethod("transceive", "([B)[B", jba);
|
||||
if (catchJavaExceptions()) {
|
||||
QMetaObject::invokeMethod(this, "error", Qt::QueuedConnection,
|
||||
Q_ARG(QNearFieldTarget::Error, QNearFieldTarget::CommandError),
|
||||
@@ -252,9 +269,10 @@ QNearFieldTarget::RequestId NearFieldTarget::sendCommand(const QByteArray &comma
|
||||
|
||||
handleResponse(requestId, result);
|
||||
|
||||
- // Closing connection, sending signal and exit
|
||||
- tagTech.callMethod<void>("close");
|
||||
- catchJavaExceptions(); // IOException at this point does not matter anymore.
|
||||
+ if (!m_keepConnection) {
|
||||
+ // Closing connection
|
||||
+ disconnect(); // IOException at this point does not matter anymore.
|
||||
+ }
|
||||
QMetaObject::invokeMethod(this, "requestCompleted", Qt::QueuedConnection,
|
||||
Q_ARG(const QNearFieldTarget::RequestId&, requestId));
|
||||
|
||||
@@ -264,9 +282,8 @@ QNearFieldTarget::RequestId NearFieldTarget::sendCommand(const QByteArray &comma
|
||||
QNearFieldTarget::RequestId NearFieldTarget::sendCommands(const QList<QByteArray> &commands)
|
||||
{
|
||||
QNearFieldTarget::RequestId requestId;
|
||||
- for (int i=0; i < commands.size(); i++){
|
||||
+ for (int i=0; i < commands.size(); i++)
|
||||
requestId = sendCommand(commands.at(i));
|
||||
- }
|
||||
return requestId;
|
||||
}
|
||||
|
||||
@@ -282,22 +299,18 @@ QNearFieldTarget::RequestId NearFieldTarget::writeNdefMessages(const QList<QNdef
|
||||
const char *writeMethod;
|
||||
QAndroidJniObject tagTechnology;
|
||||
|
||||
+ if (!setTagTechnology({NDEFFORMATABLETECHNOLOGY, NDEFTECHNOLOGY}))
|
||||
+ return QNearFieldTarget::RequestId();
|
||||
+
|
||||
// Getting write method
|
||||
- if (m_techList.contains(QStringLiteral(NDEFFORMATABLETECHNOLOGY))) {
|
||||
- tagTechnology = getTagTechnology(QStringLiteral(NDEFFORMATABLETECHNOLOGY));
|
||||
+ if (m_tech == NDEFFORMATABLETECHNOLOGY)
|
||||
writeMethod = "format";
|
||||
- } else if (m_techList.contains(QStringLiteral(NDEFTECHNOLOGY))) {
|
||||
- tagTechnology = getTagTechnology(QStringLiteral(NDEFTECHNOLOGY));
|
||||
+ else
|
||||
writeMethod = "writeNdefMessage";
|
||||
- } else {
|
||||
- // An invalid request id will be returned if the target does not support writing NDEF messages.
|
||||
- return QNearFieldTarget::RequestId();
|
||||
- }
|
||||
|
||||
// Connecting
|
||||
QNearFieldTarget::RequestId requestId = QNearFieldTarget::RequestId(new QNearFieldTarget::RequestIdPrivate());
|
||||
- tagTechnology.callMethod<void>("connect");
|
||||
- if (catchJavaExceptions()) {
|
||||
+ if (!connect()) {
|
||||
QMetaObject::invokeMethod(this, "error", Qt::QueuedConnection,
|
||||
Q_ARG(QNearFieldTarget::Error, QNearFieldTarget::TargetOutOfRangeError),
|
||||
Q_ARG(const QNearFieldTarget::RequestId&, requestId));
|
||||
@@ -326,9 +339,8 @@ QNearFieldTarget::RequestId NearFieldTarget::writeNdefMessages(const QList<QNdef
|
||||
return requestId;
|
||||
}
|
||||
|
||||
- // Closing connection, sending signal and exit
|
||||
- tagTechnology.callMethod<void>("close");
|
||||
- catchJavaExceptions(); // IOException at this point does not matter anymore.
|
||||
+ if (!m_keepConnection)
|
||||
+ disconnect(); // IOException at this point does not matter anymore.
|
||||
QMetaObject::invokeMethod(this, "ndefMessagesWritten", Qt::QueuedConnection);
|
||||
return requestId;
|
||||
}
|
||||
@@ -350,19 +362,26 @@ void NearFieldTarget::setIntent(QAndroidJniObject intent)
|
||||
|
||||
void NearFieldTarget::checkIsTargetLost()
|
||||
{
|
||||
- if (!m_intent.isValid() || m_techList.isEmpty()) {
|
||||
+ if (!m_intent.isValid() || !setTagTechnology(m_techList)) {
|
||||
handleTargetLost();
|
||||
return;
|
||||
}
|
||||
- // Using first available technology to check connection
|
||||
- QString techStr = m_techList.first();
|
||||
- QAndroidJniObject tagTech = getTagTechnology(techStr);
|
||||
- tagTech.callMethod<void>("connect");
|
||||
+
|
||||
+ bool connected = m_tagTech.callMethod<jboolean>("isConnected");
|
||||
+ if (catchJavaExceptions()) {
|
||||
+ handleTargetLost();
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ if (connected)
|
||||
+ return;
|
||||
+
|
||||
+ m_tagTech.callMethod<void>("connect");
|
||||
if (catchJavaExceptions(false)) {
|
||||
handleTargetLost();
|
||||
return;
|
||||
}
|
||||
- tagTech.callMethod<void>("close");
|
||||
+ m_tagTech.callMethod<void>("close");
|
||||
if (catchJavaExceptions(false))
|
||||
handleTargetLost();
|
||||
}
|
||||
@@ -406,28 +425,28 @@ QNearFieldTarget::Type NearFieldTarget::getTagType() const
|
||||
{
|
||||
QAndroidJniEnvironment env;
|
||||
|
||||
- if (m_techList.contains(QStringLiteral(NDEFTECHNOLOGY))) {
|
||||
- QAndroidJniObject ndef = getTagTechnology(QStringLiteral(NDEFTECHNOLOGY));
|
||||
+ if (m_techList.contains(NDEFTECHNOLOGY)) {
|
||||
+ QAndroidJniObject ndef = getTagTechnology(NDEFTECHNOLOGY);
|
||||
QString qtype = ndef.callObjectMethod("getType", "()Ljava/lang/String;").toString();
|
||||
|
||||
- if (qtype.compare(QStringLiteral(MIFARETAG)) == 0)
|
||||
+ if (qtype.compare(MIFARETAG) == 0)
|
||||
return MifareTag;
|
||||
- if (qtype.compare(QStringLiteral(NFCTAGTYPE1)) == 0)
|
||||
+ if (qtype.compare(NFCTAGTYPE1) == 0)
|
||||
return NfcTagType1;
|
||||
- if (qtype.compare(QStringLiteral(NFCTAGTYPE2)) == 0)
|
||||
+ if (qtype.compare(NFCTAGTYPE2) == 0)
|
||||
return NfcTagType2;
|
||||
- if (qtype.compare(QStringLiteral(NFCTAGTYPE3)) == 0)
|
||||
+ if (qtype.compare(NFCTAGTYPE3) == 0)
|
||||
return NfcTagType3;
|
||||
- if (qtype.compare(QStringLiteral(NFCTAGTYPE4)) == 0)
|
||||
+ if (qtype.compare(NFCTAGTYPE4) == 0)
|
||||
return NfcTagType4;
|
||||
return ProprietaryTag;
|
||||
- } else if (m_techList.contains(QStringLiteral(NFCATECHNOLOGY))) {
|
||||
- if (m_techList.contains(QStringLiteral(MIFARECLASSICTECHNOLOGY)))
|
||||
+ } else if (m_techList.contains(NFCATECHNOLOGY)) {
|
||||
+ if (m_techList.contains(MIFARECLASSICTECHNOLOGY))
|
||||
return MifareTag;
|
||||
|
||||
// Checking ATQA/SENS_RES
|
||||
// xxx0 0000 xxxx xxxx: Identifies tag Type 1 platform
|
||||
- QAndroidJniObject nfca = getTagTechnology(QStringLiteral(NFCATECHNOLOGY));
|
||||
+ QAndroidJniObject nfca = getTagTechnology(NFCATECHNOLOGY);
|
||||
QAndroidJniObject atqaBA = nfca.callObjectMethod("getAtqa", "()[B");
|
||||
QByteArray atqaQBA = jbyteArrayToQByteArray(atqaBA.object<jbyteArray>());
|
||||
if (atqaQBA.isEmpty())
|
||||
@@ -444,9 +463,9 @@ QNearFieldTarget::Type NearFieldTarget::getTagType() const
|
||||
else if ((sakS & 0x0064) == 0x0020)
|
||||
return NfcTagType4;
|
||||
return ProprietaryTag;
|
||||
- } else if (m_techList.contains(QStringLiteral(NFCBTECHNOLOGY))) {
|
||||
+ } else if (m_techList.contains(NFCBTECHNOLOGY)) {
|
||||
return NfcTagType4;
|
||||
- } else if (m_techList.contains(QStringLiteral(NFCFTECHNOLOGY))) {
|
||||
+ } else if (m_techList.contains(NFCFTECHNOLOGY)) {
|
||||
return NfcTagType3;
|
||||
}
|
||||
|
||||
@@ -457,7 +476,7 @@ void NearFieldTarget::setupTargetCheckTimer()
|
||||
{
|
||||
m_targetCheckTimer = new QTimer(this);
|
||||
m_targetCheckTimer->setInterval(1000);
|
||||
- connect(m_targetCheckTimer, SIGNAL(timeout()), this, SLOT(checkIsTargetLost()));
|
||||
+ QObject::connect(m_targetCheckTimer, &QTimer::timeout, this, &NearFieldTarget::checkIsTargetLost);
|
||||
m_targetCheckTimer->start();
|
||||
}
|
||||
|
||||
@@ -475,9 +494,42 @@ QAndroidJniObject NearFieldTarget::getTagTechnology(const QString &tech) const
|
||||
// Getting requested technology
|
||||
QAndroidJniObject tag = AndroidNfc::getTag(m_intent);
|
||||
const QString sig = QString::fromUtf8("(Landroid/nfc/Tag;)L%1;");
|
||||
- QAndroidJniObject tagtech = QAndroidJniObject::callStaticObjectMethod(techClass.toUtf8().constData(), "get",
|
||||
+ QAndroidJniObject tagTech = QAndroidJniObject::callStaticObjectMethod(techClass.toUtf8().constData(), "get",
|
||||
sig.arg(techClass).toUtf8().constData(), tag.object<jobject>());
|
||||
- return tagtech;
|
||||
+
|
||||
+ return tagTech;
|
||||
+}
|
||||
+
|
||||
+bool NearFieldTarget::setTagTechnology(const QStringList &techList)
|
||||
+{
|
||||
+ for (const QString &tech : techList) {
|
||||
+ if (m_techList.contains(tech)) {
|
||||
+ if (m_tech == tech) {
|
||||
+ return true;
|
||||
+ }
|
||||
+ m_tech = tech;
|
||||
+ m_tagTech = getTagTechnology(tech);
|
||||
+ return m_tagTech.isValid();
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ return false;
|
||||
+}
|
||||
+
|
||||
+bool NearFieldTarget::connect()
|
||||
+{
|
||||
+ if (!m_tagTech.isValid())
|
||||
+ return false;
|
||||
+
|
||||
+ bool connected = m_tagTech.callMethod<jboolean>("isConnected");
|
||||
+ if (catchJavaExceptions())
|
||||
+ return false;
|
||||
+
|
||||
+ if (connected)
|
||||
+ return true;
|
||||
+
|
||||
+ m_tagTech.callMethod<void>("connect");
|
||||
+ return !catchJavaExceptions();
|
||||
}
|
||||
|
||||
QByteArray NearFieldTarget::jbyteArrayToQByteArray(const jbyteArray &byteArray) const
|
||||
diff --git x/qtconnectivity/src/nfc/qnearfieldtarget_android_p.cpp y/qtconnectivity/src/nfc/qnearfieldtarget_android_p.cpp
|
||||
index da2d8f2d..de553ea9 100644
|
||||
--- x/qtconnectivity/src/nfc/qnearfieldtarget_android_p.cpp
|
||||
+++ y/qtconnectivity/src/nfc/qnearfieldtarget_android_p.cpp
|
||||
@@ -44,9 +44,27 @@
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
+bool QNearFieldTargetPrivate::keepConnection() const
|
||||
+{
|
||||
+ NEARFIELDTARGET_Q();
|
||||
+ return q->keepConnection();
|
||||
+}
|
||||
+
|
||||
+bool QNearFieldTargetPrivate::setKeepConnection(bool isPersistent)
|
||||
+{
|
||||
+ NEARFIELDTARGET_Q();
|
||||
+ return q->setKeepConnection(isPersistent);
|
||||
+}
|
||||
+
|
||||
+bool QNearFieldTargetPrivate::disconnect()
|
||||
+{
|
||||
+ NEARFIELDTARGET_Q();
|
||||
+ return q->disconnect();
|
||||
+}
|
||||
+
|
||||
int QNearFieldTargetPrivate::maxCommandLength() const
|
||||
{
|
||||
- NearFieldTarget * const q = reinterpret_cast<NearFieldTarget *>(q_ptr);
|
||||
+ NEARFIELDTARGET_Q();
|
||||
return q->maxCommandLength();
|
||||
}
|
||||
|
||||
diff --git x/qtconnectivity/src/nfc/qnearfieldtarget_android_p.h y/qtconnectivity/src/nfc/qnearfieldtarget_android_p.h
|
||||
index f2e2ee7f..0063e9a5 100644
|
||||
--- x/qtconnectivity/src/nfc/qnearfieldtarget_android_p.h
|
||||
+++ y/qtconnectivity/src/nfc/qnearfieldtarget_android_p.h
|
||||
@@ -75,6 +75,9 @@ public:
|
||||
virtual QByteArray uid() const;
|
||||
virtual Type type() const;
|
||||
virtual AccessMethods accessMethods() const;
|
||||
+ bool keepConnection() const;
|
||||
+ bool setKeepConnection(bool isPersistent);
|
||||
+ bool disconnect();
|
||||
virtual bool hasNdefMessage();
|
||||
virtual RequestId readNdefMessages();
|
||||
int maxCommandLength() const;
|
||||
@@ -99,6 +102,8 @@ protected:
|
||||
void setupTargetCheckTimer();
|
||||
void handleTargetLost();
|
||||
QAndroidJniObject getTagTechnology(const QString &tech) const;
|
||||
+ bool setTagTechnology(const QStringList &techList);
|
||||
+ bool connect();
|
||||
QByteArray jbyteArrayToQByteArray(const jbyteArray &byteArray) const;
|
||||
bool catchJavaExceptions(bool verbose = true) const;
|
||||
|
||||
@@ -108,6 +113,9 @@ protected:
|
||||
QStringList m_techList;
|
||||
Type m_type;
|
||||
QTimer *m_targetCheckTimer;
|
||||
+ QString m_tech;
|
||||
+ QAndroidJniObject m_tagTech;
|
||||
+ bool m_keepConnection;
|
||||
};
|
||||
|
||||
QT_END_NAMESPACE
|
||||
diff --git x/qtconnectivity/src/nfc/qnearfieldtarget_neard_p.cpp y/qtconnectivity/src/nfc/qnearfieldtarget_neard_p.cpp
|
||||
index 3d1bfa6c..411b80d5 100644
|
||||
--- x/qtconnectivity/src/nfc/qnearfieldtarget_neard_p.cpp
|
||||
+++ y/qtconnectivity/src/nfc/qnearfieldtarget_neard_p.cpp
|
||||
@@ -44,6 +44,21 @@
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
+bool QNearFieldTargetPrivate::keepConnection() const
|
||||
+{
|
||||
+ return false;
|
||||
+}
|
||||
+
|
||||
+bool QNearFieldTargetPrivate::setKeepConnection(bool isPersistent)
|
||||
+{
|
||||
+ return false;
|
||||
+}
|
||||
+
|
||||
+bool QNearFieldTargetPrivate::disconnect()
|
||||
+{
|
||||
+ return false;
|
||||
+}
|
||||
+
|
||||
int QNearFieldTargetPrivate::maxCommandLength() const
|
||||
{
|
||||
return 0;
|
||||
diff --git x/qtconnectivity/src/nfc/qnearfieldtarget_p.cpp y/qtconnectivity/src/nfc/qnearfieldtarget_p.cpp
|
||||
index 3d1bfa6c..4ed17a15 100644
|
||||
--- x/qtconnectivity/src/nfc/qnearfieldtarget_p.cpp
|
||||
+++ y/qtconnectivity/src/nfc/qnearfieldtarget_p.cpp
|
||||
@@ -44,6 +44,22 @@
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
+bool QNearFieldTargetPrivate::keepConnection() const
|
||||
+{
|
||||
+ return false;
|
||||
+}
|
||||
+
|
||||
+bool QNearFieldTargetPrivate::setKeepConnection(bool isPersistent)
|
||||
+{
|
||||
+ Q_UNUSED(isPersistent);
|
||||
+ return false;
|
||||
+}
|
||||
+
|
||||
+bool QNearFieldTargetPrivate::disconnect()
|
||||
+{
|
||||
+ return false;
|
||||
+}
|
||||
+
|
||||
int QNearFieldTargetPrivate::maxCommandLength() const
|
||||
{
|
||||
return 0;
|
||||
diff --git x/qtconnectivity/src/nfc/qnearfieldtarget_p.h y/qtconnectivity/src/nfc/qnearfieldtarget_p.h
|
||||
index 9b2ed480..9cef2f55 100644
|
||||
--- x/qtconnectivity/src/nfc/qnearfieldtarget_p.h
|
||||
+++ y/qtconnectivity/src/nfc/qnearfieldtarget_p.h
|
||||
@@ -59,6 +59,8 @@
|
||||
#include <QtCore/QSharedData>
|
||||
#include <QtCore/QVariant>
|
||||
|
||||
+#define NEARFIELDTARGET_Q() NearFieldTarget * const q = reinterpret_cast<NearFieldTarget *>(q_ptr)
|
||||
+
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
class QNearFieldTarget::RequestIdPrivate : public QSharedData
|
||||
@@ -75,6 +77,9 @@ public:
|
||||
|
||||
QMap<QNearFieldTarget::RequestId, QVariant> m_decodedResponses;
|
||||
|
||||
+ bool keepConnection() const;
|
||||
+ bool setKeepConnection(bool isPersistent);
|
||||
+ bool disconnect();
|
||||
int maxCommandLength() const;
|
||||
};
|
||||
|
||||
--
|
||||
2.11.0
|
||||
|
|
@ -0,0 +1,123 @@
|
|||
From 3885257e655cefd1f8b18247aff76020c75379e1 Mon Sep 17 00:00:00 2001
|
||||
From: Lars Schmertmann <Lars.Schmertmann@governikus.de>
|
||||
Date: Fri, 24 Mar 2017 11:20:14 +0100
|
||||
Subject: [PATCH] Register additional meta types
|
||||
|
||||
Register QLowEnergyCharacteristic and QLowEnergyDescriptor
|
||||
as meta types because they are used in signals.
|
||||
|
||||
[ChangeLog][QtBluetooth] Register QLowEnergyCharacteristic
|
||||
and QLowEnergyDescriptor as meta types. It is therefore
|
||||
necessary to declare them as meta types in the header files.
|
||||
This commit will cause conflicts with existing meta type
|
||||
declarations in applications using Qt. These declarations
|
||||
need to be removed.
|
||||
|
||||
Change-Id: I18f33b1b2f159cffd6efbacc37178286b86a06e0
|
||||
Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
|
||||
---
|
||||
src/bluetooth/osx/osxbtcentralmanager.mm | 2 --
|
||||
src/bluetooth/qlowenergycharacteristic.h | 2 ++
|
||||
src/bluetooth/qlowenergycontroller_p.h | 5 -----
|
||||
src/bluetooth/qlowenergydescriptor.h | 2 ++
|
||||
src/bluetooth/qlowenergyservice.cpp | 2 ++
|
||||
.../test/tst_qlowenergycontroller-gattserver.cpp | 4 ----
|
||||
tests/auto/qlowenergycontroller/tst_qlowenergycontroller.cpp | 3 ---
|
||||
7 files changed, 6 insertions(+), 14 deletions(-)
|
||||
|
||||
diff --git x/qtconnectivity/src/bluetooth/osx/osxbtcentralmanager.mm y/qtconnectivity/src/bluetooth/osx/osxbtcentralmanager.mm
|
||||
index ec046d1b..70473f1f 100644
|
||||
--- x/qtconnectivity/src/bluetooth/osx/osxbtcentralmanager.mm
|
||||
+++ y/qtconnectivity/src/bluetooth/osx/osxbtcentralmanager.mm
|
||||
@@ -48,8 +48,6 @@
|
||||
#include <algorithm>
|
||||
#include <limits>
|
||||
|
||||
-Q_DECLARE_METATYPE(QLowEnergyCharacteristic)
|
||||
-Q_DECLARE_METATYPE(QLowEnergyDescriptor)
|
||||
Q_DECLARE_METATYPE(QLowEnergyHandle)
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
diff --git x/qtconnectivity/src/bluetooth/qlowenergycharacteristic.h y/qtconnectivity/src/bluetooth/qlowenergycharacteristic.h
|
||||
index b991e9a2..154c9936 100644
|
||||
--- x/qtconnectivity/src/bluetooth/qlowenergycharacteristic.h
|
||||
+++ y/qtconnectivity/src/bluetooth/qlowenergycharacteristic.h
|
||||
@@ -107,4 +107,6 @@ Q_DECLARE_OPERATORS_FOR_FLAGS(QLowEnergyCharacteristic::PropertyTypes)
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
+Q_DECLARE_METATYPE(QLowEnergyCharacteristic)
|
||||
+
|
||||
#endif // QLOWENERGYCHARACTERISTIC_H
|
||||
diff --git x/qtconnectivity/src/bluetooth/qlowenergycontroller_p.h y/qtconnectivity/src/bluetooth/qlowenergycontroller_p.h
|
||||
index b92716e9..6e866144 100644
|
||||
--- x/qtconnectivity/src/bluetooth/qlowenergycontroller_p.h
|
||||
+++ y/qtconnectivity/src/bluetooth/qlowenergycontroller_p.h
|
||||
@@ -497,11 +497,6 @@ Q_DECLARE_TYPEINFO(QLowEnergyControllerPrivate::Attribute, Q_MOVABLE_TYPE);
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
-#ifdef QT_WINRT_BLUETOOTH
|
||||
-Q_DECLARE_METATYPE(QLowEnergyCharacteristic)
|
||||
-Q_DECLARE_METATYPE(QLowEnergyDescriptor)
|
||||
-#endif // QT_WINRT_BLUETOOTH
|
||||
-
|
||||
#endif // QT_OSX_BLUETOOTH || QT_IOS_BLUETOOTH
|
||||
|
||||
#endif // QLOWENERGYCONTROLLERPRIVATE_P_H
|
||||
diff --git x/qtconnectivity/src/bluetooth/qlowenergydescriptor.h y/qtconnectivity/src/bluetooth/qlowenergydescriptor.h
|
||||
index 1dfe1c35..9e71fc56 100644
|
||||
--- x/qtconnectivity/src/bluetooth/qlowenergydescriptor.h
|
||||
+++ y/qtconnectivity/src/bluetooth/qlowenergydescriptor.h
|
||||
@@ -89,4 +89,6 @@ protected:
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
+Q_DECLARE_METATYPE(QLowEnergyDescriptor)
|
||||
+
|
||||
#endif // QLOWENERGYDESCRIPTOR_H
|
||||
diff --git x/qtconnectivity/src/bluetooth/qlowenergyservice.cpp y/qtconnectivity/src/bluetooth/qlowenergyservice.cpp
|
||||
index 6e33c565..9d3129fd 100644
|
||||
--- x/qtconnectivity/src/bluetooth/qlowenergyservice.cpp
|
||||
+++ y/qtconnectivity/src/bluetooth/qlowenergyservice.cpp
|
||||
@@ -380,6 +380,8 @@ QLowEnergyService::QLowEnergyService(QSharedPointer<QLowEnergyServicePrivate> p,
|
||||
qRegisterMetaType<QLowEnergyService::ServiceError>();
|
||||
qRegisterMetaType<QLowEnergyService::ServiceType>();
|
||||
qRegisterMetaType<QLowEnergyService::WriteMode>();
|
||||
+ qRegisterMetaType<QLowEnergyCharacteristic>();
|
||||
+ qRegisterMetaType<QLowEnergyDescriptor>();
|
||||
|
||||
connect(p.data(), SIGNAL(error(QLowEnergyService::ServiceError)),
|
||||
this, SIGNAL(error(QLowEnergyService::ServiceError)));
|
||||
diff --git x/qtconnectivity/tests/auto/qlowenergycontroller-gattserver/test/tst_qlowenergycontroller-gattserver.cpp y/qtconnectivity/tests/auto/qlowenergycontroller-gattserver/test/tst_qlowenergycontroller-gattserver.cpp
|
||||
index 3df27d92..e01457eb 100644
|
||||
--- x/qtconnectivity/tests/auto/qlowenergycontroller-gattserver/test/tst_qlowenergycontroller-gattserver.cpp
|
||||
+++ y/qtconnectivity/tests/auto/qlowenergycontroller-gattserver/test/tst_qlowenergycontroller-gattserver.cpp
|
||||
@@ -243,10 +243,6 @@ void TestQLowEnergyControllerGattServer::advertisedData()
|
||||
QVERIFY(m_serverInfo.serviceUuids().contains(QBluetoothUuid(quint16(0x2000))));
|
||||
}
|
||||
|
||||
-// TODO: Why on earth is this not in the library???
|
||||
-Q_DECLARE_METATYPE(QLowEnergyCharacteristic)
|
||||
-Q_DECLARE_METATYPE(QLowEnergyDescriptor)
|
||||
-
|
||||
void TestQLowEnergyControllerGattServer::serverCommunication()
|
||||
{
|
||||
qRegisterMetaType<QLowEnergyCharacteristic>();
|
||||
diff --git x/qtconnectivity/tests/auto/qlowenergycontroller/tst_qlowenergycontroller.cpp y/qtconnectivity/tests/auto/qlowenergycontroller/tst_qlowenergycontroller.cpp
|
||||
index 7b02dbcd..c6fd83e6 100644
|
||||
--- x/qtconnectivity/tests/auto/qlowenergycontroller/tst_qlowenergycontroller.cpp
|
||||
+++ y/qtconnectivity/tests/auto/qlowenergycontroller/tst_qlowenergycontroller.cpp
|
||||
@@ -91,9 +91,6 @@ private:
|
||||
QList<QBluetoothUuid> foundServices;
|
||||
};
|
||||
|
||||
-Q_DECLARE_METATYPE(QLowEnergyCharacteristic)
|
||||
-Q_DECLARE_METATYPE(QLowEnergyDescriptor)
|
||||
-
|
||||
tst_QLowEnergyController::tst_QLowEnergyController()
|
||||
{
|
||||
qRegisterMetaType<QLowEnergyCharacteristic>();
|
||||
--
|
||||
2.14.2
|
||||
|
|
@ -1,176 +0,0 @@
|
|||
From 797de4af8231945e1b3688b14719900d9fd0f09e Mon Sep 17 00:00:00 2001
|
||||
From: BogDan Vatra <bogdan@kdab.com>
|
||||
Date: Tue, 1 Nov 2016 17:53:29 +0200
|
||||
Subject: [PATCH] Use apksigner by default if available to sign the APKs
|
||||
|
||||
apksigner is smart enough to know which techique to use to sign the apk
|
||||
based on apk's manifest file.
|
||||
|
||||
People that really want to use jarsigner they need to pass --jarsigner
|
||||
argument
|
||||
|
||||
Task-number: QTBUG-56702
|
||||
Change-Id: I3acd26576c5b0b312d5f2424b1c0a52e48fb920e
|
||||
---
|
||||
src/androiddeployqt/main.cpp | 110 ++++++++++++++++++++++++++++++++++++++++++-
|
||||
1 file changed, 109 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git x/qttools/src/androiddeployqt/main.cpp y/qttools/src/androiddeployqt/main.cpp
|
||||
index c1fd130..fc1cb94 100644
|
||||
--- x/qttools/src/androiddeployqt/main.cpp
|
||||
+++ y/qttools/src/androiddeployqt/main.cpp
|
||||
@@ -102,6 +102,7 @@ struct Options
|
||||
, internalSf(false)
|
||||
, sectionsOnly(false)
|
||||
, protectedAuthenticationPath(false)
|
||||
+ , jarSigner(false)
|
||||
, gdbServer(Auto)
|
||||
, installApk(false)
|
||||
, uninstallApk(false)
|
||||
@@ -181,6 +182,7 @@ struct Options
|
||||
bool internalSf;
|
||||
bool sectionsOnly;
|
||||
bool protectedAuthenticationPath;
|
||||
+ bool jarSigner;
|
||||
|
||||
// Gdbserver
|
||||
TriState gdbServer;
|
||||
@@ -446,6 +448,8 @@ Options parseOptions()
|
||||
options.sectionsOnly = true;
|
||||
} else if (argument.compare(QLatin1String("--protected"), Qt::CaseInsensitive) == 0) {
|
||||
options.protectedAuthenticationPath = true;
|
||||
+ } else if (argument.compare(QLatin1String("--jarsigner"), Qt::CaseInsensitive) == 0) {
|
||||
+ options.jarSigner = true;
|
||||
} else if (argument.compare(QLatin1String("--no-generated-assets-cache"), Qt::CaseInsensitive) == 0) {
|
||||
options.generateAssetsFileList = false;
|
||||
}
|
||||
@@ -519,6 +523,8 @@ void printHelp()
|
||||
" --internalsf: Include the .SF file inside the signature block.\n"
|
||||
" --sectionsonly: Don't compute hash of entire manifest.\n"
|
||||
" --protected: Keystore has protected authentication path.\n"
|
||||
+ " --jarsigner: Force jarsigner usage, otherwise apksigner will be\n"
|
||||
+ " used if available.\n"
|
||||
" --gdbserver: Adds the gdbserver to the package. By default the gdbserver\n"
|
||||
" is bundled for debug pacakges.\n"
|
||||
" --no-gdbserver: Prevents the gdbserver from being added to the package\n"
|
||||
@@ -2554,7 +2560,7 @@ bool copyGnuStl(Options *options)
|
||||
return true;
|
||||
}
|
||||
|
||||
-bool signPackage(const Options &options)
|
||||
+bool jarSignerSignPackage(const Options &options)
|
||||
{
|
||||
if (options.verbose)
|
||||
fprintf(stdout, "Signing Android package.\n");
|
||||
@@ -2680,6 +2686,108 @@ bool signPackage(const Options &options)
|
||||
return QFile::remove(apkPath(options, UnsignedAPK));
|
||||
}
|
||||
|
||||
+bool signPackage(const Options &options)
|
||||
+{
|
||||
+ QString apksignerTool = options.sdkPath + QLatin1String("/build-tools/") + options.sdkBuildToolsVersion + QLatin1String("/apksigner");
|
||||
+#if defined(Q_OS_WIN32)
|
||||
+ apksignerTool += QLatin1String(".bat");
|
||||
+#endif
|
||||
+
|
||||
+ if (options.jarSigner || !QFile::exists(apksignerTool))
|
||||
+ return jarSignerSignPackage(options);
|
||||
+
|
||||
+ // APKs signed with apksigner must not be changed after they're signed, therefore we need to zipalign it before we sign it.
|
||||
+
|
||||
+ QString zipAlignTool = options.sdkPath + QLatin1String("/tools/zipalign");
|
||||
+#if defined(Q_OS_WIN32)
|
||||
+ zipAlignTool += QLatin1String(".exe");
|
||||
+#endif
|
||||
+
|
||||
+ if (!QFile::exists(zipAlignTool)) {
|
||||
+ zipAlignTool = options.sdkPath + QLatin1String("/build-tools/") + options.sdkBuildToolsVersion + QLatin1String("/zipalign");
|
||||
+#if defined(Q_OS_WIN32)
|
||||
+ zipAlignTool += QLatin1String(".exe");
|
||||
+#endif
|
||||
+ if (!QFile::exists(zipAlignTool)) {
|
||||
+ fprintf(stderr, "zipalign tool not found: %s\n", qPrintable(zipAlignTool));
|
||||
+ return false;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ zipAlignTool = QString::fromLatin1("%1%2 -f 4 %3 %4")
|
||||
+ .arg(shellQuote(zipAlignTool))
|
||||
+ .arg(options.verbose ? QString::fromLatin1(" -v") : QString())
|
||||
+ .arg(apkPath(options, UnsignedAPK))
|
||||
+ .arg(apkPath(options, SignedAPK));
|
||||
+
|
||||
+ FILE *zipAlignCommand = openProcess(zipAlignTool);
|
||||
+ if (zipAlignCommand == 0) {
|
||||
+ fprintf(stderr, "Couldn't run zipalign.\n");
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
+ char buffer[512];
|
||||
+ while (fgets(buffer, sizeof(buffer), zipAlignCommand) != 0)
|
||||
+ fprintf(stdout, "%s", buffer);
|
||||
+
|
||||
+ int errorCode = pclose(zipAlignCommand);
|
||||
+ if (errorCode != 0) {
|
||||
+ fprintf(stderr, "zipalign command failed.\n");
|
||||
+ if (!options.verbose)
|
||||
+ fprintf(stderr, " -- Run with --verbose for more information.\n");
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
+ QString apkSignerCommandLine = QString::fromLatin1("%1 sign --ks %2")
|
||||
+ .arg(shellQuote(apksignerTool)).arg(shellQuote(options.keyStore));
|
||||
+
|
||||
+ if (!options.keyStorePassword.isEmpty())
|
||||
+ apkSignerCommandLine += QString::fromLatin1(" --ks-pass pass:%1").arg(shellQuote(options.keyStorePassword));
|
||||
+
|
||||
+ if (!options.keyStoreAlias.isEmpty())
|
||||
+ apkSignerCommandLine += QString::fromLatin1(" --ks-key-alias %1").arg(shellQuote(options.keyStoreAlias));
|
||||
+
|
||||
+ if (!options.keyPass.isEmpty())
|
||||
+ apkSignerCommandLine += QString::fromLatin1(" --key-pass pass:%1").arg(shellQuote(options.keyPass));
|
||||
+
|
||||
+ if (options.verbose)
|
||||
+ apkSignerCommandLine += QLatin1String(" --verbose");
|
||||
+
|
||||
+ apkSignerCommandLine += QString::fromLatin1(" %1")
|
||||
+ .arg(apkPath(options, SignedAPK));
|
||||
+
|
||||
+ auto apkSignerRunner = [&] {
|
||||
+ FILE *apkSignerCommand = openProcess(apkSignerCommandLine);
|
||||
+ if (apkSignerCommand == 0) {
|
||||
+ fprintf(stderr, "Couldn't run apksigner.\n");
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
+ char buffer[512];
|
||||
+ while (fgets(buffer, sizeof(buffer), apkSignerCommand) != 0)
|
||||
+ fprintf(stdout, "%s", buffer);
|
||||
+
|
||||
+ errorCode = pclose(apkSignerCommand);
|
||||
+ if (errorCode != 0) {
|
||||
+ fprintf(stderr, "apksigner command failed.\n");
|
||||
+ if (!options.verbose)
|
||||
+ fprintf(stderr, " -- Run with --verbose for more information.\n");
|
||||
+ return false;
|
||||
+ }
|
||||
+ return true;
|
||||
+ };
|
||||
+
|
||||
+ // Sign the package
|
||||
+ if (!apkSignerRunner())
|
||||
+ return false;
|
||||
+
|
||||
+ apkSignerCommandLine = QString::fromLatin1("%1 verify --verbose %2")
|
||||
+ .arg(shellQuote(apksignerTool)).arg(apkPath(options, SignedAPK));
|
||||
+
|
||||
+ // Verify the package and remove the unsigned apk
|
||||
+ return apkSignerRunner() && QFile::remove(apkPath(options, UnsignedAPK));
|
||||
+}
|
||||
+
|
||||
bool copyGdbServer(const Options &options)
|
||||
{
|
||||
if (options.verbose)
|
||||
--
|
||||
2.10.2
|
||||
|
|
@ -1,379 +0,0 @@
|
|||
From eba0d9bdf34f60f2c36f8cef6c412cbed210fa2f Mon Sep 17 00:00:00 2001
|
||||
From: Lars Schmertmann <Lars.Schmertmann@governikus.de>
|
||||
Date: Fri, 2 Dec 2016 08:05:46 +0100
|
||||
Subject: Use defaultSize according to svg standard in svg plugin
|
||||
|
||||
The viewBox attribute defines the svg internal coordinate system. If no
|
||||
width/height is set, the viewBox size is the right choice for defaultSize.
|
||||
Otherwise the standard prescribes that the specified height/width must be
|
||||
used.
|
||||
|
||||
The old behavior ignored the width and height attributes, and this caused a
|
||||
lot of problems in qml. If the viewBox was very small the result was a low
|
||||
resolution image. If the viewBox was very large, loading took ages and the
|
||||
result used much more memory than needed. Both situations could be avoided
|
||||
by setting sourceSize. But when using the same image several times, the
|
||||
sourceSize must be set every time to the same value, otherwise the image
|
||||
cache would not work. It is cheaper to have the same high-quality source
|
||||
image in the cache, and scale it down when required.
|
||||
|
||||
With the new behavior it is possible to control the default image size
|
||||
directly in the svg file at one place while it is still possible to set
|
||||
different sourceSizes if needed.
|
||||
|
||||
Task-number: QTBUG-44863
|
||||
Change-Id: I9c2fc7c122a29ebcf288b7cbd12427e081d404d5
|
||||
---
|
||||
src/plugins/imageformats/svg/qsvgiohandler.cpp | 2 +-
|
||||
tests/auto/auto.pro | 1 +
|
||||
tests/auto/qsvgplugin/.gitignore | 1 +
|
||||
tests/auto/qsvgplugin/qsvgplugin.pro | 8 ++
|
||||
tests/auto/qsvgplugin/resources.qrc | 16 ++++
|
||||
tests/auto/qsvgplugin/square.svg | 5 ++
|
||||
tests/auto/qsvgplugin/square_size.svg | 5 ++
|
||||
tests/auto/qsvgplugin/square_size_viewbox.svg | 5 ++
|
||||
tests/auto/qsvgplugin/square_viewbox.svg | 5 ++
|
||||
tests/auto/qsvgplugin/tall.svg | 5 ++
|
||||
tests/auto/qsvgplugin/tall_size.svg | 5 ++
|
||||
tests/auto/qsvgplugin/tall_size_viewbox.svg | 5 ++
|
||||
tests/auto/qsvgplugin/tall_viewbox.svg | 5 ++
|
||||
tests/auto/qsvgplugin/tst_qsvgplugin.cpp | 108 +++++++++++++++++++++++++
|
||||
tests/auto/qsvgplugin/wide.svg | 5 ++
|
||||
tests/auto/qsvgplugin/wide_size.svg | 5 ++
|
||||
tests/auto/qsvgplugin/wide_size_viewbox.svg | 5 ++
|
||||
tests/auto/qsvgplugin/wide_viewbox.svg | 5 ++
|
||||
18 files changed, 195 insertions(+), 1 deletion(-)
|
||||
create mode 100644 tests/auto/qsvgplugin/.gitignore
|
||||
create mode 100644 tests/auto/qsvgplugin/qsvgplugin.pro
|
||||
create mode 100644 tests/auto/qsvgplugin/resources.qrc
|
||||
create mode 100644 tests/auto/qsvgplugin/square.svg
|
||||
create mode 100644 tests/auto/qsvgplugin/square_size.svg
|
||||
create mode 100644 tests/auto/qsvgplugin/square_size_viewbox.svg
|
||||
create mode 100644 tests/auto/qsvgplugin/square_viewbox.svg
|
||||
create mode 100644 tests/auto/qsvgplugin/tall.svg
|
||||
create mode 100644 tests/auto/qsvgplugin/tall_size.svg
|
||||
create mode 100644 tests/auto/qsvgplugin/tall_size_viewbox.svg
|
||||
create mode 100644 tests/auto/qsvgplugin/tall_viewbox.svg
|
||||
create mode 100644 tests/auto/qsvgplugin/tst_qsvgplugin.cpp
|
||||
create mode 100644 tests/auto/qsvgplugin/wide.svg
|
||||
create mode 100644 tests/auto/qsvgplugin/wide_size.svg
|
||||
create mode 100644 tests/auto/qsvgplugin/wide_size_viewbox.svg
|
||||
create mode 100644 tests/auto/qsvgplugin/wide_viewbox.svg
|
||||
|
||||
diff --git x/qtsvg/src/plugins/imageformats/svg/qsvgiohandler.cpp y/qtsvg/src/plugins/imageformats/svg/qsvgiohandler.cpp
|
||||
index 88d37bc..0c26cb5 100644
|
||||
--- x/qtsvg/src/plugins/imageformats/svg/qsvgiohandler.cpp
|
||||
+++ y/qtsvg/src/plugins/imageformats/svg/qsvgiohandler.cpp
|
||||
@@ -98,7 +98,7 @@ bool QSvgIOHandlerPrivate::load(QIODevice *device)
|
||||
}
|
||||
|
||||
if (res) {
|
||||
- defaultSize = QSize(r.viewBox().width(), r.viewBox().height());
|
||||
+ defaultSize = r.defaultSize();
|
||||
loaded = true;
|
||||
}
|
||||
|
||||
diff --git x/qtsvg/tests/auto/auto.pro y/qtsvg/tests/auto/auto.pro
|
||||
index 43ff500..e2d84ec 100644
|
||||
--- x/qtsvg/tests/auto/auto.pro
|
||||
+++ y/qtsvg/tests/auto/auto.pro
|
||||
@@ -4,6 +4,7 @@ qtHaveModule(widgets) {
|
||||
qsvgdevice \
|
||||
qsvggenerator \
|
||||
qsvgrenderer \
|
||||
+ qsvgplugin \
|
||||
qicon_svg \
|
||||
cmake \
|
||||
installed_cmake
|
||||
diff --git x/qtsvg/tests/auto/qsvgplugin/.gitignore y/qtsvg/tests/auto/qsvgplugin/.gitignore
|
||||
new file mode 100644
|
||||
index 0000000..c41c448
|
||||
--- /dev/null
|
||||
+++ y/qtsvg/tests/auto/qsvgplugin/.gitignore
|
||||
@@ -0,0 +1 @@
|
||||
+tst_qsvgplugin
|
||||
diff --git x/qtsvg/tests/auto/qsvgplugin/qsvgplugin.pro y/qtsvg/tests/auto/qsvgplugin/qsvgplugin.pro
|
||||
new file mode 100644
|
||||
index 0000000..3fec52e
|
||||
--- /dev/null
|
||||
+++ y/qtsvg/tests/auto/qsvgplugin/qsvgplugin.pro
|
||||
@@ -0,0 +1,8 @@
|
||||
+TARGET = tst_qsvgplugin
|
||||
+CONFIG += testcase
|
||||
+QT += svg testlib widgets gui-private
|
||||
+
|
||||
+SOURCES += tst_qsvgplugin.cpp
|
||||
+RESOURCES += resources.qrc
|
||||
+
|
||||
+DEFINES += SRCDIR=\\\"$$PWD/\\\"
|
||||
diff --git x/qtsvg/tests/auto/qsvgplugin/resources.qrc y/qtsvg/tests/auto/qsvgplugin/resources.qrc
|
||||
new file mode 100644
|
||||
index 0000000..fcb311a
|
||||
--- /dev/null
|
||||
+++ y/qtsvg/tests/auto/qsvgplugin/resources.qrc
|
||||
@@ -0,0 +1,16 @@
|
||||
+<!DOCTYPE RCC><RCC version="1.0">
|
||||
+<qresource>
|
||||
+ <file>square.svg</file>
|
||||
+ <file>square_size.svg</file>
|
||||
+ <file>square_size_viewbox.svg</file>
|
||||
+ <file>square_viewbox.svg</file>
|
||||
+ <file>tall.svg</file>
|
||||
+ <file>tall_size.svg</file>
|
||||
+ <file>tall_size_viewbox.svg</file>
|
||||
+ <file>tall_viewbox.svg</file>
|
||||
+ <file>wide.svg</file>
|
||||
+ <file>wide_size.svg</file>
|
||||
+ <file>wide_size_viewbox.svg</file>
|
||||
+ <file>wide_viewbox.svg</file>
|
||||
+</qresource>
|
||||
+</RCC>
|
||||
diff --git x/qtsvg/tests/auto/qsvgplugin/square.svg y/qtsvg/tests/auto/qsvgplugin/square.svg
|
||||
new file mode 100644
|
||||
index 0000000..f35fb87
|
||||
--- /dev/null
|
||||
+++ y/qtsvg/tests/auto/qsvgplugin/square.svg
|
||||
@@ -0,0 +1,5 @@
|
||||
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
||||
+<svg version="1.0" xmlns="http://www.w3.org/2000/svg">
|
||||
+ <circle cx="50" cy="50" r="25" fill="#00ff00" />
|
||||
+</svg>
|
||||
diff --git x/qtsvg/tests/auto/qsvgplugin/square_size.svg y/qtsvg/tests/auto/qsvgplugin/square_size.svg
|
||||
new file mode 100644
|
||||
index 0000000..f4aeb67
|
||||
--- /dev/null
|
||||
+++ y/qtsvg/tests/auto/qsvgplugin/square_size.svg
|
||||
@@ -0,0 +1,5 @@
|
||||
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
||||
+<svg version="1.0" xmlns="http://www.w3.org/2000/svg" width="200px" height="200px">
|
||||
+ <circle cx="50" cy="50" r="25" fill="#00ff00" />
|
||||
+</svg>
|
||||
diff --git x/qtsvg/tests/auto/qsvgplugin/square_size_viewbox.svg y/qtsvg/tests/auto/qsvgplugin/square_size_viewbox.svg
|
||||
new file mode 100644
|
||||
index 0000000..cf39bd7
|
||||
--- /dev/null
|
||||
+++ y/qtsvg/tests/auto/qsvgplugin/square_size_viewbox.svg
|
||||
@@ -0,0 +1,5 @@
|
||||
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
||||
+<svg version="1.0" xmlns="http://www.w3.org/2000/svg" width="200px" height="200px" viewBox="0 0 100 100">
|
||||
+ <circle cx="50" cy="50" r="25" fill="#00ff00" />
|
||||
+</svg>
|
||||
diff --git x/qtsvg/tests/auto/qsvgplugin/square_viewbox.svg y/qtsvg/tests/auto/qsvgplugin/square_viewbox.svg
|
||||
new file mode 100644
|
||||
index 0000000..5811505
|
||||
--- /dev/null
|
||||
+++ y/qtsvg/tests/auto/qsvgplugin/square_viewbox.svg
|
||||
@@ -0,0 +1,5 @@
|
||||
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
||||
+<svg version="1.0" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
|
||||
+ <circle cx="50" cy="50" r="25" fill="#00ff00" />
|
||||
+</svg>
|
||||
diff --git x/qtsvg/tests/auto/qsvgplugin/tall.svg y/qtsvg/tests/auto/qsvgplugin/tall.svg
|
||||
new file mode 100644
|
||||
index 0000000..b243b62
|
||||
--- /dev/null
|
||||
+++ y/qtsvg/tests/auto/qsvgplugin/tall.svg
|
||||
@@ -0,0 +1,5 @@
|
||||
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
||||
+<svg version="1.0" xmlns="http://www.w3.org/2000/svg">
|
||||
+ <ellipse cx="25" cy="50" rx="12.5" ry="25" fill="#00ff00" />
|
||||
+</svg>
|
||||
diff --git x/qtsvg/tests/auto/qsvgplugin/tall_size.svg y/qtsvg/tests/auto/qsvgplugin/tall_size.svg
|
||||
new file mode 100644
|
||||
index 0000000..6121451
|
||||
--- /dev/null
|
||||
+++ y/qtsvg/tests/auto/qsvgplugin/tall_size.svg
|
||||
@@ -0,0 +1,5 @@
|
||||
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
||||
+<svg version="1.0" xmlns="http://www.w3.org/2000/svg" width="100px" height="200px">
|
||||
+ <ellipse cx="25" cy="50" rx="12.5" ry="25" fill="#00ff00" />
|
||||
+</svg>
|
||||
diff --git x/qtsvg/tests/auto/qsvgplugin/tall_size_viewbox.svg y/qtsvg/tests/auto/qsvgplugin/tall_size_viewbox.svg
|
||||
new file mode 100644
|
||||
index 0000000..9d82492
|
||||
--- /dev/null
|
||||
+++ y/qtsvg/tests/auto/qsvgplugin/tall_size_viewbox.svg
|
||||
@@ -0,0 +1,5 @@
|
||||
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
||||
+<svg version="1.0" xmlns="http://www.w3.org/2000/svg" width="100px" height="200px" viewBox="0 0 50 100">
|
||||
+ <ellipse cx="25" cy="50" rx="12.5" ry="25" fill="#00ff00" />
|
||||
+</svg>
|
||||
diff --git x/qtsvg/tests/auto/qsvgplugin/tall_viewbox.svg y/qtsvg/tests/auto/qsvgplugin/tall_viewbox.svg
|
||||
new file mode 100644
|
||||
index 0000000..8ed61a9
|
||||
--- /dev/null
|
||||
+++ y/qtsvg/tests/auto/qsvgplugin/tall_viewbox.svg
|
||||
@@ -0,0 +1,5 @@
|
||||
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
||||
+<svg version="1.0" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 100">
|
||||
+ <ellipse cx="25" cy="50" rx="12.5" ry="25" fill="#00ff00" />
|
||||
+</svg>
|
||||
diff --git x/qtsvg/tests/auto/qsvgplugin/tst_qsvgplugin.cpp y/qtsvg/tests/auto/qsvgplugin/tst_qsvgplugin.cpp
|
||||
new file mode 100644
|
||||
index 0000000..4ec1737
|
||||
--- /dev/null
|
||||
+++ y/qtsvg/tests/auto/qsvgplugin/tst_qsvgplugin.cpp
|
||||
@@ -0,0 +1,108 @@
|
||||
+/****************************************************************************
|
||||
+**
|
||||
+** Copyright (C) 2016 The Qt Company Ltd.
|
||||
+** Contact: https://www.qt.io/licensing/
|
||||
+**
|
||||
+** This file is part of the test suite of the Qt Toolkit.
|
||||
+**
|
||||
+** $QT_BEGIN_LICENSE:GPL-EXCEPT$
|
||||
+** Commercial License Usage
|
||||
+** Licensees holding valid commercial Qt licenses may use this file in
|
||||
+** accordance with the commercial license agreement provided with the
|
||||
+** Software or, alternatively, in accordance with the terms contained in
|
||||
+** a written agreement between you and The Qt Company. For licensing terms
|
||||
+** and conditions see https://www.qt.io/terms-conditions. For further
|
||||
+** information use the contact form at https://www.qt.io/contact-us.
|
||||
+**
|
||||
+** GNU General Public License Usage
|
||||
+** Alternatively, this file may be used under the terms of the GNU
|
||||
+** General Public License version 3 as published by the Free Software
|
||||
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
|
||||
+** included in the packaging of this file. Please review the following
|
||||
+** information to ensure the GNU General Public License requirements will
|
||||
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
|
||||
+**
|
||||
+** $QT_END_LICENSE$
|
||||
+**
|
||||
+****************************************************************************/
|
||||
+
|
||||
+
|
||||
+#include <QtTest/QtTest>
|
||||
+
|
||||
+#include "../../../src/plugins/imageformats/svg/qsvgiohandler.cpp"
|
||||
+#include <QImage>
|
||||
+#include <QStringList>
|
||||
+#include <QVector>
|
||||
+
|
||||
+#ifndef SRCDIR
|
||||
+#define SRCDIR
|
||||
+#endif
|
||||
+
|
||||
+
|
||||
+class tst_QSvgPlugin : public QObject
|
||||
+{
|
||||
+Q_OBJECT
|
||||
+
|
||||
+public:
|
||||
+ tst_QSvgPlugin();
|
||||
+ virtual ~tst_QSvgPlugin();
|
||||
+
|
||||
+private slots:
|
||||
+ void checkSize_data();
|
||||
+ void checkSize();
|
||||
+};
|
||||
+
|
||||
+
|
||||
+
|
||||
+tst_QSvgPlugin::tst_QSvgPlugin()
|
||||
+{
|
||||
+}
|
||||
+
|
||||
+tst_QSvgPlugin::~tst_QSvgPlugin()
|
||||
+{
|
||||
+}
|
||||
+
|
||||
+void tst_QSvgPlugin::checkSize_data()
|
||||
+{
|
||||
+ QTest::addColumn<QString>("filename");
|
||||
+ QTest::addColumn<int>("imageHeight");
|
||||
+ QTest::addColumn<int>("imageWidth");
|
||||
+
|
||||
+ QTest::newRow("square") << SRCDIR "square.svg" << 50 << 50;
|
||||
+ QTest::newRow("square_size") << SRCDIR "square_size.svg" << 200 << 200;
|
||||
+ QTest::newRow("square_size_viewbox") << SRCDIR "square_size_viewbox.svg" << 200 << 200;
|
||||
+ QTest::newRow("square_viewbox") << SRCDIR "square_viewbox.svg" << 100 << 100;
|
||||
+ QTest::newRow("tall") << SRCDIR "tall.svg" << 50 << 25;
|
||||
+ QTest::newRow("tall_size") << SRCDIR "tall_size.svg" << 200 << 100;
|
||||
+ QTest::newRow("tall_size_viewbox") << SRCDIR "tall_size_viewbox.svg" << 200 << 100;
|
||||
+ QTest::newRow("tall_viewbox") << SRCDIR "tall_viewbox.svg" << 100 << 50;
|
||||
+ QTest::newRow("wide") << SRCDIR "wide.svg" << 25 << 50;
|
||||
+ QTest::newRow("wide_size") << SRCDIR "wide_size.svg" << 100 << 200;
|
||||
+ QTest::newRow("wide_size_viewbox") << SRCDIR "wide_size_viewbox.svg" << 100 << 200;
|
||||
+ QTest::newRow("wide_viewbox") << SRCDIR "wide_viewbox.svg" << 50 << 100;
|
||||
+}
|
||||
+
|
||||
+void tst_QSvgPlugin::checkSize()
|
||||
+{
|
||||
+ QFETCH(QString, filename);
|
||||
+ QFETCH(int, imageHeight);
|
||||
+ QFETCH(int, imageWidth);
|
||||
+
|
||||
+ QFile file(filename);
|
||||
+ file.open(QIODevice::ReadOnly);
|
||||
+
|
||||
+ QSvgIOHandler plugin;
|
||||
+ plugin.setDevice(&file);
|
||||
+
|
||||
+ QImage image;
|
||||
+ plugin.read(&image);
|
||||
+
|
||||
+ file.close();
|
||||
+
|
||||
+ QCOMPARE(imageHeight, image.height());
|
||||
+ QCOMPARE(imageWidth, image.width());
|
||||
+}
|
||||
+
|
||||
+
|
||||
+QTEST_MAIN(tst_QSvgPlugin)
|
||||
+#include "tst_qsvgplugin.moc"
|
||||
diff --git x/qtsvg/tests/auto/qsvgplugin/wide.svg y/qtsvg/tests/auto/qsvgplugin/wide.svg
|
||||
new file mode 100644
|
||||
index 0000000..9166606
|
||||
--- /dev/null
|
||||
+++ y/qtsvg/tests/auto/qsvgplugin/wide.svg
|
||||
@@ -0,0 +1,5 @@
|
||||
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
||||
+<svg version="1.0" xmlns="http://www.w3.org/2000/svg">
|
||||
+ <ellipse cx="50" cy="25" rx="25" ry="12.5" fill="#00ff00" />
|
||||
+</svg>
|
||||
diff --git x/qtsvg/tests/auto/qsvgplugin/wide_size.svg y/qtsvg/tests/auto/qsvgplugin/wide_size.svg
|
||||
new file mode 100644
|
||||
index 0000000..e816154
|
||||
--- /dev/null
|
||||
+++ y/qtsvg/tests/auto/qsvgplugin/wide_size.svg
|
||||
@@ -0,0 +1,5 @@
|
||||
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
||||
+<svg version="1.0" xmlns="http://www.w3.org/2000/svg" width="200px" height="100px">
|
||||
+ <ellipse cx="50" cy="25" rx="25" ry="12.5" fill="#00ff00" />
|
||||
+</svg>
|
||||
diff --git x/qtsvg/tests/auto/qsvgplugin/wide_size_viewbox.svg y/qtsvg/tests/auto/qsvgplugin/wide_size_viewbox.svg
|
||||
new file mode 100644
|
||||
index 0000000..3d9b044
|
||||
--- /dev/null
|
||||
+++ y/qtsvg/tests/auto/qsvgplugin/wide_size_viewbox.svg
|
||||
@@ -0,0 +1,5 @@
|
||||
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
||||
+<svg version="1.0" xmlns="http://www.w3.org/2000/svg" width="200px" height="100px" viewBox="0 0 100 50">
|
||||
+ <ellipse cx="50" cy="25" rx="25" ry="12.5" fill="#00ff00" />
|
||||
+</svg>
|
||||
diff --git x/qtsvg/tests/auto/qsvgplugin/wide_viewbox.svg y/qtsvg/tests/auto/qsvgplugin/wide_viewbox.svg
|
||||
new file mode 100644
|
||||
index 0000000..aface45
|
||||
--- /dev/null
|
||||
+++ y/qtsvg/tests/auto/qsvgplugin/wide_viewbox.svg
|
||||
@@ -0,0 +1,5 @@
|
||||
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
||||
+<svg version="1.0" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 50">
|
||||
+ <ellipse cx="50" cy="25" rx="25" ry="12.5" fill="#00ff00" />
|
||||
+</svg>
|
||||
--
|
||||
2.11.0
|
||||
|
|
@ -0,0 +1,90 @@
|
|||
From 13f25c979fe4396e6d5a76bf183341229da2bacd Mon Sep 17 00:00:00 2001
|
||||
From: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
|
||||
Date: Thu, 30 Nov 2017 15:00:26 +0100
|
||||
Subject: [PATCH] macOS/iOS: Fix garbled text under some conditions
|
||||
|
||||
There seems to be an issue in CoreText which may cause an existing
|
||||
font descriptor to give unreliable results if it refers to one of
|
||||
the system theme fonts. Since we do not know all function calls
|
||||
or events that may trigger this bug, the safe route is to always
|
||||
create fresh font descriptors when creating fonts for these
|
||||
descriptors. The impact on performance should be small, as Qt has
|
||||
its own internal caches.
|
||||
|
||||
[ChangeLog][macOS/iOS][Text] Fixed an issue where text using
|
||||
one of the system theme fonts would under certain circumstances
|
||||
display random glyphs.
|
||||
|
||||
Task-number: QTBUG-63476
|
||||
Change-Id: I9e9b253018c63976345eec1439a6b78de2cab869
|
||||
---
|
||||
.../fontdatabases/mac/qcoretextfontdatabase.mm | 24 ++++++++++++++--------
|
||||
.../fontdatabases/mac/qcoretextfontdatabase_p.h | 4 +++-
|
||||
2 files changed, 19 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git x/qtbase/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm y/qtbase/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm
|
||||
index 6347d4d231..237e8a89a5 100644
|
||||
--- x/qtbase/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm
|
||||
+++ y/qtbase/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm
|
||||
@@ -416,7 +416,19 @@ extern CGAffineTransform qt_transform_from_fontdef(const QFontDef &fontDef);
|
||||
template <>
|
||||
QFontEngine *QCoreTextFontDatabaseEngineFactory<QCoreTextFontEngine>::fontEngine(const QFontDef &fontDef, void *usrPtr)
|
||||
{
|
||||
- CTFontDescriptorRef descriptor = static_cast<CTFontDescriptorRef>(usrPtr);
|
||||
+ QCFType<CTFontDescriptorRef> descriptor = QCFType<CTFontDescriptorRef>::constructFromGet(
|
||||
+ static_cast<CTFontDescriptorRef>(usrPtr));
|
||||
+
|
||||
+ // CoreText will sometimes invalidate information in font descriptors that refer
|
||||
+ // to system fonts in certain function calls or application states. While the descriptor
|
||||
+ // looks the same from the outside, some internal plumbing is different, causing the results
|
||||
+ // of creating CTFonts from those descriptors unreliable. The work-around for this
|
||||
+ // is to copy the attributes of those descriptors each time we make a new CTFont
|
||||
+ // from them instead of referring to the original, as that may trigger the CoreText bug.
|
||||
+ if (m_systemFontDescriptors.contains(descriptor)) {
|
||||
+ QCFType<CFDictionaryRef> attributes = CTFontDescriptorCopyAttributes(descriptor);
|
||||
+ descriptor = CTFontDescriptorCreateWithAttributes(attributes);
|
||||
+ }
|
||||
|
||||
// Since we do not pass in the destination DPI to CoreText when making
|
||||
// the font, we need to pass in a point size which is scaled to include
|
||||
@@ -427,14 +439,10 @@ QFontEngine *QCoreTextFontDatabaseEngineFactory<QCoreTextFontEngine>::fontEngine
|
||||
qreal scaledPointSize = fontDef.pixelSize;
|
||||
|
||||
CGAffineTransform matrix = qt_transform_from_fontdef(fontDef);
|
||||
- CTFontRef font = CTFontCreateWithFontDescriptor(descriptor, scaledPointSize, &matrix);
|
||||
- if (font) {
|
||||
- QFontEngine *engine = new QCoreTextFontEngine(font, fontDef);
|
||||
- CFRelease(font);
|
||||
- return engine;
|
||||
- }
|
||||
+ if (QCFType<CTFontRef> font = CTFontCreateWithFontDescriptor(descriptor, scaledPointSize, &matrix))
|
||||
+ return new QCoreTextFontEngine(font, fontDef);
|
||||
|
||||
- return NULL;
|
||||
+ return nullptr;
|
||||
}
|
||||
|
||||
#ifndef QT_NO_FREETYPE
|
||||
diff --git x/qtbase/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase_p.h y/qtbase/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase_p.h
|
||||
index 9612b909f1..e14d1d6e6e 100644
|
||||
--- x/qtbase/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase_p.h
|
||||
+++ y/qtbase/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase_p.h
|
||||
@@ -91,12 +91,14 @@ public:
|
||||
QFont *themeFont(QPlatformTheme::Font) const;
|
||||
const QHash<QPlatformTheme::Font, QFont *> &themeFonts() const;
|
||||
|
||||
+protected:
|
||||
+ mutable QSet<CTFontDescriptorRef> m_systemFontDescriptors;
|
||||
+
|
||||
private:
|
||||
void populateFromDescriptor(CTFontDescriptorRef font, const QString &familyName = QString());
|
||||
|
||||
mutable QString defaultFontName;
|
||||
|
||||
- mutable QSet<CTFontDescriptorRef> m_systemFontDescriptors;
|
||||
mutable QHash<QPlatformTheme::Font, QFont *> m_themeFonts;
|
||||
bool m_hasPopulatedAliases;
|
||||
};
|
||||
--
|
||||
2.15.1
|
||||
|
|
@ -1,49 +0,0 @@
|
|||
--- Makefile.shared.orig 2014-05-09 12:44:04.801960645 +0200
|
||||
+++ Makefile.shared 2014-05-09 13:08:04.595689322 +0200
|
||||
@@ -109,23 +109,7 @@
|
||||
$${SHAREDCMD} $${SHAREDFLAGS} \
|
||||
-o $$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX \
|
||||
$$ALLSYMSFLAGS $$SHOBJECTS $$NOALLSYMSFLAGS $$LIBDEPS \
|
||||
- ) && $(SYMLINK_SO)
|
||||
-
|
||||
-SYMLINK_SO= \
|
||||
- if [ -n "$$INHIBIT_SYMLINKS" ]; then :; else \
|
||||
- prev=$$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX; \
|
||||
- if [ -n "$$SHLIB_COMPAT" ]; then \
|
||||
- for x in $$SHLIB_COMPAT; do \
|
||||
- ( $(SET_X); rm -f $$SHLIB$$x$$SHLIB_SUFFIX; \
|
||||
- ln -s $$prev $$SHLIB$$x$$SHLIB_SUFFIX ); \
|
||||
- prev=$$SHLIB$$x$$SHLIB_SUFFIX; \
|
||||
- done; \
|
||||
- fi; \
|
||||
- if [ -n "$$SHLIB_SOVER" ]; then \
|
||||
- ( $(SET_X); rm -f $$SHLIB$$SHLIB_SUFFIX; \
|
||||
- ln -s $$prev $$SHLIB$$SHLIB_SUFFIX ); \
|
||||
- fi; \
|
||||
- fi
|
||||
+ )
|
||||
|
||||
LINK_SO_A= SHOBJECTS="lib$(LIBNAME).a $(LIBEXTRAS)"; $(LINK_SO)
|
||||
LINK_SO_O= SHOBJECTS="$(LIBEXTRAS)"; $(LINK_SO)
|
||||
@@ -578,18 +562,15 @@
|
||||
symlink.gnu symlink.solaris symlink.svr3 symlink.svr5 symlink.irix \
|
||||
symlink.aix symlink.reliantunix:
|
||||
@ $(CALC_VERSIONS); \
|
||||
- SHLIB=lib$(LIBNAME).so; \
|
||||
- $(SYMLINK_SO)
|
||||
+ SHLIB=lib$(LIBNAME).so;
|
||||
symlink.darwin:
|
||||
@ $(CALC_VERSIONS); \
|
||||
SHLIB=lib$(LIBNAME); \
|
||||
- SHLIB_SUFFIX=.dylib; \
|
||||
- $(SYMLINK_SO)
|
||||
+ SHLIB_SUFFIX=.dylib;
|
||||
symlink.hpux:
|
||||
@ $(CALC_VERSIONS); \
|
||||
SHLIB=lib$(LIBNAME).sl; \
|
||||
- expr $(PLATFORM) : '.*ia64' > /dev/null && SHLIB=lib$(LIBNAME).so; \
|
||||
- $(SYMLINK_SO)
|
||||
+ expr $(PLATFORM) : '.*ia64' > /dev/null && SHLIB=lib$(LIBNAME).so;
|
||||
# The following lines means those specific architectures do no symlinks
|
||||
symlink.cygwin symlink.alpha-osf1 symlink.tru64 symlink.tru64-rpath symlink.beos:
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
#!/bin/sh
|
||||
echo "Patching Configure..."
|
||||
#sed -i 's/.so.\\$(SHLIB_MAJOR).\\$(SHLIB_MINOR)/.so/g' Configure
|
||||
sed -i 's/.\\$(SHLIB_MAJOR).\\$(SHLIB_MINOR)//g' Configure
|
||||
|
||||
echo "Patching Makefile..."
|
||||
sed -i 's/$$SHLIB$$SHLIB_SOVER$$SHLIB_SUFFIX/$$SHLIB/g' Makefile.shared
|
||||
|
|
@ -1,7 +1,23 @@
|
|||
FUNCTION(WRITE_QRC _dest_file _dir _prefix)
|
||||
FILE(GLOB_RECURSE files "${_dir}/*")
|
||||
|
||||
FILE(WRITE "${_dest_file}" "<!DOCTYPE RCC><RCC version=\"1.0\"><qresource prefix=\"/${_prefix}/\">\n")
|
||||
FOREACH(file ${files})
|
||||
STRING(REPLACE "${_dir}/" "" file_alias "${file}")
|
||||
FILE(APPEND "${_dest_file}" "<file alias=\"${file_alias}\">${file}</file>\n")
|
||||
ENDFOREACH()
|
||||
FILE(APPEND "${_dest_file}" "</qresource></RCC>")
|
||||
ENDFUNCTION()
|
||||
|
||||
|
||||
SET(QRC_FILES "ausweisapp.qrc")
|
||||
|
||||
IF(IOS OR ANDROID OR ${CMAKE_BUILD_TYPE} STREQUAL "DEBUG")
|
||||
LIST(APPEND QRC_FILES "ausweisapp_mobile.qrc")
|
||||
|
||||
SET(ausweisapp_qml.qrc "${CMAKE_CURRENT_BINARY_DIR}/ausweisapp_qml.qrc")
|
||||
WRITE_QRC("${ausweisapp_qml.qrc}" "${CMAKE_CURRENT_SOURCE_DIR}/qml" "qml")
|
||||
LIST(APPEND QRC_FILES "${ausweisapp_qml.qrc}")
|
||||
ENDIF()
|
||||
|
||||
IF(DESKTOP)
|
||||
|
@ -12,7 +28,3 @@ SET(RCC ${CMAKE_BINARY_DIR}/src/${PROJECT_NAME}.rcc)
|
|||
SET(RCC ${RCC} PARENT_SCOPE)
|
||||
qt5_add_binary_resources(AusweisAppRcc "${QRC_FILES}" DESTINATION ${RCC})
|
||||
SET(QML_IMPORT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/qml ${CMAKE_CURRENT_SOURCE_DIR}/qml_stationary CACHE string "qml files" FORCE)
|
||||
|
||||
IF(WIN32)
|
||||
SET(WINDOWS_RC "${CMAKE_CURRENT_SOURCE_DIR}/windows.rc" PARENT_SCOPE)
|
||||
ENDIF()
|
||||
|
|
|
@ -29,7 +29,6 @@
|
|||
<file>images/iOS/tabBar/Pin-on.png</file>
|
||||
<file>images/iOS/tabBar/Verlauf-off.png</file>
|
||||
<file>images/iOS/tabBar/Verlauf-on.png</file>
|
||||
<file>images/icon_Bluetooth.svg</file>
|
||||
<file>images/icon_Pin.svg</file>
|
||||
<file>images/iOS/tabBar/More-off.svg</file>
|
||||
<file>images/iOS/tabBar/More-on.svg</file>
|
||||
|
@ -57,28 +56,34 @@
|
|||
<file>images/provider/gradient-insurance.png</file>
|
||||
<file>images/provider/gradient-finance.png</file>
|
||||
<file>images/provider/gradient-other.png</file>
|
||||
<file>images/provider/categoryIcons/+android/General.svg</file>
|
||||
<file>images/provider/categoryIcons/+android/CitizenServices.svg</file>
|
||||
<file>images/provider/categoryIcons/+android/Financials.svg</file>
|
||||
<file>images/provider/categoryIcons/+android/Insurances.svg</file>
|
||||
<file>images/provider/categoryIcons/+android/OtherServices.svg</file>
|
||||
<file>images/provider/categoryIcons/+android/General_bg.svg</file>
|
||||
<file>images/provider/categoryIcons/+android/General_button.svg</file>
|
||||
<file>images/provider/categoryIcons/+android/CitizenServices_bg.svg</file>
|
||||
<file>images/provider/categoryIcons/+android/CitizenServices_button.svg</file>
|
||||
<file>images/provider/categoryIcons/+android/Financials_bg.svg</file>
|
||||
<file>images/provider/categoryIcons/+android/Financials_button.svg</file>
|
||||
<file>images/provider/categoryIcons/+android/Insurances_bg.svg</file>
|
||||
<file>images/provider/categoryIcons/+android/Insurances_button.svg</file>
|
||||
<file>images/provider/categoryIcons/+android/OtherServices_bg.svg</file>
|
||||
<file>images/provider/categoryIcons/+android/OtherServices_button.svg</file>
|
||||
<file>images/provider/categoryIcons/+android/General_section.svg</file>
|
||||
<file>images/provider/categoryIcons/+android/CitizenServices_section.svg</file>
|
||||
<file>images/provider/categoryIcons/+android/Financials_section.svg</file>
|
||||
<file>images/provider/categoryIcons/+android/Insurances_section.svg</file>
|
||||
<file>images/provider/categoryIcons/+android/OtherServices_section.svg</file>
|
||||
<file>images/provider/categoryIcons/+android/general.svg</file>
|
||||
<file>images/provider/categoryIcons/+android/citizen.svg</file>
|
||||
<file>images/provider/categoryIcons/+android/finance.svg</file>
|
||||
<file>images/provider/categoryIcons/+android/insurance.svg</file>
|
||||
<file>images/provider/categoryIcons/+android/other.svg</file>
|
||||
<file>images/provider/categoryIcons/+android/general_bg.svg</file>
|
||||
<file>images/provider/categoryIcons/+android/general_button.svg</file>
|
||||
<file>images/provider/categoryIcons/+android/citizen_bg.svg</file>
|
||||
<file>images/provider/categoryIcons/+android/citizen_button.svg</file>
|
||||
<file>images/provider/categoryIcons/+android/finance_bg.svg</file>
|
||||
<file>images/provider/categoryIcons/+android/finance_button.svg</file>
|
||||
<file>images/provider/categoryIcons/+android/insurance_bg.svg</file>
|
||||
<file>images/provider/categoryIcons/+android/insurance_button.svg</file>
|
||||
<file>images/provider/categoryIcons/+android/other_bg.svg</file>
|
||||
<file>images/provider/categoryIcons/+android/other_button.svg</file>
|
||||
<file>images/provider/categoryIcons/+android/general_section.svg</file>
|
||||
<file>images/provider/categoryIcons/+android/citizen_section.svg</file>
|
||||
<file>images/provider/categoryIcons/+android/finance_section.svg</file>
|
||||
<file>images/provider/categoryIcons/+android/insurance_section.svg</file>
|
||||
<file>images/provider/categoryIcons/+android/other_section.svg</file>
|
||||
<file>updatable-files/supported-providers.json</file>
|
||||
<file>images/icon_nfc.svg</file>
|
||||
<file>images/icon_remote.svg</file>
|
||||
<file>images/icon_bluetooth.svg</file>
|
||||
<file>images/phone_nfc.svg</file>
|
||||
<file>images/phone_remote.svg</file>
|
||||
<file>images/phone_bluetooth.svg</file>
|
||||
<file>images/location_flag_de.svg</file>
|
||||
<file>images/location_flag_en.svg</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
|
|
@ -2,13 +2,12 @@
|
|||
<qresource prefix="/">
|
||||
<file>html_templates/alreadyactive.html</file>
|
||||
<file>html_templates/error.html</file>
|
||||
|
||||
<file>stylesheets/common.qss</file>
|
||||
<file>stylesheets/macos.qss</file>
|
||||
<file>stylesheets/windows.qss</file>
|
||||
<file>stylesheets/desktop.qss</file>
|
||||
|
||||
<file>images/beta.svg</file>
|
||||
<file>images/green_check_mark.svg</file>
|
||||
<file>images/MenuSelected.png</file>
|
||||
<file>images/MenuUnselected.png</file>
|
||||
<file>images/MenuUnselectedDisabled.png</file>
|
||||
|
@ -19,6 +18,8 @@
|
|||
<file>images/start_nPA_eAT.png</file>
|
||||
<file>images/busy_animation.gif</file>
|
||||
<file>images/html_message_section.jpg</file>
|
||||
<file>images/padlock.svg</file>
|
||||
<file>images/padlock_empty.svg</file>
|
||||
<file>images/randompin/btn_normal_0.png</file>
|
||||
<file>images/randompin/btn_normal_1.png</file>
|
||||
<file>images/randompin/btn_normal_2.png</file>
|
||||
|
@ -33,36 +34,63 @@
|
|||
<file>images/randompin/btn_ok.png</file>
|
||||
<file>images/randompin/btn_cancel.png</file>
|
||||
<file>images/randompin/btn_clear.png</file>
|
||||
|
||||
<file>images/reader/default_no_cardreader_01.png</file>
|
||||
<file>images/reader/default_more_cardreader.png</file>
|
||||
<file>images/reader/default_no_card_found.png</file>
|
||||
<file>images/reader/img_cyberjack_wave.png</file>
|
||||
<file>images/reader/img_cyberjack_wave_mit_ausweis.png</file>
|
||||
<file>images/reader/img_Reiner_SCT_cyberjack_RFID_komfort.png</file>
|
||||
<file>images/reader/img_Reiner_SCT_cyberjack_RFID_komfort_mit_ausweis.png</file>
|
||||
<file>images/reader/img_Reiner_SCT_cyberjack_RFID_standard.png</file>
|
||||
<file>images/reader/img_Reiner_SCT_cyberjack_RFID_standard_mit_ausweis.png</file>
|
||||
<file>images/reader/img_Reiner_SCT_cyberjack_RFID_basis.png</file>
|
||||
<file>images/reader/img_Reiner_SCT_cyberjack_RFID_basis_mit_ausweis.png</file>
|
||||
<file>images/reader/img_Identive_SCL011.png</file>
|
||||
|
||||
<file>images/reader/img_Identive_SCL011_mit_ausweis.png</file>
|
||||
<file>images/reader/img_Identive_SDI011.png</file>
|
||||
<file>images/reader/img_Identive_SDI011_mit_ausweis.png</file>
|
||||
<file>images/reader/img_KOBIL_ID_Token.png</file>
|
||||
<file>images/reader/img_KOBIL_ID_Token_mit_ausweis.png</file>
|
||||
<file>images/reader/img_ACS_ACR1281U.png</file>
|
||||
<file>images/reader/img_ACS_ACR1281U_mit_ausweis.png</file>
|
||||
<file>images/reader/img_HID_Global_OMNIKEY_5321_V2.png</file>
|
||||
<file>images/reader/img_HID_Global_OMNIKEY_5321_V2_mit_ausweis.png</file>
|
||||
<file>images/reader/img_HID_Omnikey_Mobile_Reader_4121_CL.png</file>
|
||||
<file>images/reader/img_HID_Omnikey_Mobile_Reader_4121_CL_mit_ausweis.png</file>
|
||||
<file>images/reader/img_FEIG_myAXXES_basic.png</file>
|
||||
<file>images/reader/img_FEIG_myAXXES_basic_mit_ausweis.png</file>
|
||||
<file>images/reader/img_Gemalto_Prox_SU.png</file>
|
||||
<file>images/reader/img_Gemalto_Prox_SU_mit_ausweis.png</file>
|
||||
<file>images/reader/img_Gemalto_Prox_DU.png</file>
|
||||
<file>images/reader/img_Gemalto_Prox_DU_mit_ausweis.png</file>
|
||||
<file>images/reader/default_more_reader.png</file>
|
||||
<file>images/reader/default_no_card.png</file>
|
||||
<file>images/reader/default_no_reader.png</file>
|
||||
<file>images/reader/default_reader.png</file>
|
||||
<file>images/reader/default_reader_mit_ausweis.png</file>
|
||||
<file>updatable-files/supported-readers.json</file>
|
||||
<file>updatable-files/reader/img_ACS_ACR122U.png</file>
|
||||
<file>updatable-files/reader/img_ACS_ACR122U_mit_ausweis.png</file>
|
||||
<file>updatable-files/reader/img_ACS_ACR1252U.png</file>
|
||||
<file>updatable-files/reader/img_ACS_ACR1252U_mit_ausweis.png</file>
|
||||
<file>updatable-files/reader/img_ACS_ACR1281U.png</file>
|
||||
<file>updatable-files/reader/img_ACS_ACR1281U_mit_ausweis.png</file>
|
||||
<file>updatable-files/reader/img_Cherry_TC_1200.png</file>
|
||||
<file>updatable-files/reader/img_Cherry_TC_1200_mit_ausweis.png</file>
|
||||
<file>updatable-files/reader/img_Cherry_TC_1300.png</file>
|
||||
<file>updatable-files/reader/img_Cherry_TC_1300_mit_ausweis.png</file>
|
||||
<file>updatable-files/reader/img_cyberjack_wave.png</file>
|
||||
<file>updatable-files/reader/img_cyberjack_wave_mit_ausweis.png</file>
|
||||
<file>updatable-files/reader/img_FEIG_myAXXES_basic.png</file>
|
||||
<file>updatable-files/reader/img_FEIG_myAXXES_basic_mit_ausweis.png</file>
|
||||
<file>updatable-files/reader/img_Gemalto_Prox_DU.png</file>
|
||||
<file>updatable-files/reader/img_Gemalto_Prox_DU_mit_ausweis.png</file>
|
||||
<file>updatable-files/reader/img_Gemalto_Prox_SU.png</file>
|
||||
<file>updatable-files/reader/img_Gemalto_Prox_SU_mit_ausweis.png</file>
|
||||
<file>updatable-files/reader/img_HID_Global_OMNIKEY_5321_V2.png</file>
|
||||
<file>updatable-files/reader/img_HID_Global_OMNIKEY_5321_V2_mit_ausweis.png</file>
|
||||
<file>updatable-files/reader/img_HID_Omnikey_5421.png</file>
|
||||
<file>updatable-files/reader/img_HID_Omnikey_5421_mit_ausweis.png</file>
|
||||
<file>updatable-files/reader/img_HID_Omnikey_Mobile_Reader_4121_CL.png</file>
|
||||
<file>updatable-files/reader/img_HID_Omnikey_Mobile_Reader_4121_CL_mit_ausweis.png</file>
|
||||
<file>updatable-files/reader/img_HID_Omnikey_Mobile_Reader_5021_CL.png</file>
|
||||
<file>updatable-files/reader/img_HID_Omnikey_Mobile_Reader_5021_CL_mit_ausweis.png</file>
|
||||
<file>updatable-files/reader/img_HID_Omnikey_Mobile_Reader_5022_CL.png</file>
|
||||
<file>updatable-files/reader/img_HID_Omnikey_Mobile_Reader_5022_CL_mit_ausweis.png</file>
|
||||
<file>updatable-files/reader/img_Identive_Cloud_3700_F.png</file>
|
||||
<file>updatable-files/reader/img_Identive_Cloud_3700_F_mit_ausweis.png</file>
|
||||
<file>updatable-files/reader/img_Identive_Cloud_4700_F.png</file>
|
||||
<file>updatable-files/reader/img_Identive_Cloud_4700_F_mit_ausweis.png</file>
|
||||
<file>updatable-files/reader/img_Identive_Cloud_4701_F.png</file>
|
||||
<file>updatable-files/reader/img_Identive_Cloud_4701_F_mit_ausweis.png</file>
|
||||
<file>updatable-files/reader/img_Identive_SCL011.png</file>
|
||||
<file>updatable-files/reader/img_Identive_SCL011_mit_ausweis.png</file>
|
||||
<file>updatable-files/reader/img_Identive_SCL3711.png</file>
|
||||
<file>updatable-files/reader/img_Identive_SCL3711_mit_ausweis.png</file>
|
||||
<file>updatable-files/reader/img_Identive_SDI010.png</file>
|
||||
<file>updatable-files/reader/img_Identive_SDI010_mit_ausweis.png</file>
|
||||
<file>updatable-files/reader/img_Identive_SDI011.png</file>
|
||||
<file>updatable-files/reader/img_Identive_SDI011_mit_ausweis.png</file>
|
||||
<file>updatable-files/reader/img_KOBIL_ID_Token.png</file>
|
||||
<file>updatable-files/reader/img_KOBIL_ID_Token_mit_ausweis.png</file>
|
||||
<file>updatable-files/reader/img_Reiner_SCT_cyberjack_RFID_basis.png</file>
|
||||
<file>updatable-files/reader/img_Reiner_SCT_cyberjack_RFID_basis_mit_ausweis.png</file>
|
||||
<file>updatable-files/reader/img_Reiner_SCT_cyberjack_RFID_komfort.png</file>
|
||||
<file>updatable-files/reader/img_Reiner_SCT_cyberjack_RFID_komfort_mit_ausweis.png</file>
|
||||
<file>updatable-files/reader/img_Reiner_SCT_cyberjack_RFID_standard.png</file>
|
||||
<file>updatable-files/reader/img_Reiner_SCT_cyberjack_RFID_standard_mit_ausweis.png</file>
|
||||
<file>updatable-files/reader/img_RemoteReader.png</file>
|
||||
<file>updatable-files/reader/img_RemoteReader_mit_ausweis.png</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
<file>images/android/navigation/ausweisen.svg</file>
|
||||
<file>images/android/navigation/anbieter.svg</file>
|
||||
<file>images/android/navigation/balloon.svg</file>
|
||||
<file>images/android/navigation/remoteleser.svg</file>
|
||||
<file>images/android/navigation/verlauf.svg</file>
|
||||
<file>images/android/navigation/pin.svg</file>
|
||||
<file>images/android/navigation/versionsinformation.svg</file>
|
||||
|
@ -40,22 +41,27 @@
|
|||
<file>images/android/android_arrow_back_white.svg</file>
|
||||
<file>images/iOS/more/icon_mehr_favorit.svg</file>
|
||||
<file>images/iOS/more/icon_mehr_fragen.svg</file>
|
||||
<file>images/iOS/more/icon_mehr_upload.svg</file>
|
||||
<file>images/iOS/more/icon_mehr_info.svg</file>
|
||||
<file>images/provider/categoryIcons/General.svg</file>
|
||||
<file>images/provider/categoryIcons/CitizenServices.svg</file>
|
||||
<file>images/provider/categoryIcons/Financials.svg</file>
|
||||
<file>images/provider/categoryIcons/Insurances.svg</file>
|
||||
<file>images/provider/categoryIcons/OtherServices.svg</file>
|
||||
<file alias="images/provider/categoryIcons/General_bg.svg">images/provider/categoryIcons/+android/General_bg.svg</file>
|
||||
<file alias="images/provider/categoryIcons/General_button.svg">images/provider/categoryIcons/+android/General_button.svg</file>
|
||||
<file alias="images/provider/categoryIcons/CitizenServices_bg.svg">images/provider/categoryIcons/+android/CitizenServices_bg.svg</file>
|
||||
<file alias="images/provider/categoryIcons/CitizenServices_button.svg">images/provider/categoryIcons/+android/CitizenServices_button.svg</file>
|
||||
<file alias="images/provider/categoryIcons/Financials_bg.svg">images/provider/categoryIcons/+android/Financials_bg.svg</file>
|
||||
<file alias="images/provider/categoryIcons/Financials_button.svg">images/provider/categoryIcons/+android/Financials_button.svg</file>
|
||||
<file alias="images/provider/categoryIcons/Insurances_bg.svg">images/provider/categoryIcons/+android/Insurances_bg.svg</file>
|
||||
<file alias="images/provider/categoryIcons/Insurances_button.svg">images/provider/categoryIcons/+android/Insurances_button.svg</file>
|
||||
<file alias="images/provider/categoryIcons/OtherServices_bg.svg">images/provider/categoryIcons/+android/OtherServices_bg.svg</file>
|
||||
<file alias="images/provider/categoryIcons/OtherServices_button.svg">images/provider/categoryIcons/+android/OtherServices_button.svg</file>
|
||||
<file>images/iOS/more/icon_mehr_license.svg</file>
|
||||
<file>images/iOS/more/icon_mehr_remotereader.svg</file>
|
||||
<file>images/iOS/more/icon_mehr_upload.svg</file>
|
||||
<file>images/provider/categoryIcons/general.svg</file>
|
||||
<file>images/provider/categoryIcons/citizen.svg</file>
|
||||
<file>images/provider/categoryIcons/finance.svg</file>
|
||||
<file>images/provider/categoryIcons/insurance.svg</file>
|
||||
<file>images/provider/categoryIcons/other.svg</file>
|
||||
<file alias="images/provider/categoryIcons/general_bg.svg">images/provider/categoryIcons/+android/general_bg.svg</file>
|
||||
<file alias="images/provider/categoryIcons/general_button.svg">images/provider/categoryIcons/+android/general_button.svg</file>
|
||||
<file alias="images/provider/categoryIcons/citizen_bg.svg">images/provider/categoryIcons/+android/citizen_bg.svg</file>
|
||||
<file alias="images/provider/categoryIcons/citizen_button.svg">images/provider/categoryIcons/+android/citizen_button.svg</file>
|
||||
<file alias="images/provider/categoryIcons/finance_bg.svg">images/provider/categoryIcons/+android/finance_bg.svg</file>
|
||||
<file alias="images/provider/categoryIcons/finance_button.svg">images/provider/categoryIcons/+android/finance_button.svg</file>
|
||||
<file alias="images/provider/categoryIcons/insurance_bg.svg">images/provider/categoryIcons/+android/insurance_bg.svg</file>
|
||||
<file alias="images/provider/categoryIcons/insurance_button.svg">images/provider/categoryIcons/+android/insurance_button.svg</file>
|
||||
<file alias="images/provider/categoryIcons/other_bg.svg">images/provider/categoryIcons/+android/other_bg.svg</file>
|
||||
<file alias="images/provider/categoryIcons/other_button.svg">images/provider/categoryIcons/+android/other_button.svg</file>
|
||||
<file>images/phone_to_pc.svg</file>
|
||||
<file>images/android/navigation/remotesettings.svg</file>
|
||||
<file>images/trash_icon.svg</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
|
|
@ -3,9 +3,9 @@
|
|||
|
||||
"_comment_1": "array of CVCs; hex encoded",
|
||||
"_comment_2": [
|
||||
"certificate 1: DECVCAeID00103_DECVCAeID00104",
|
||||
"certificate 2: DECVCAeID00102_DECVCAeID00103",
|
||||
"certificate 3: DECVCAeID00102"
|
||||
"DECVCAeID00103_DECVCAeID00104",
|
||||
"DECVCAeID00102_DECVCAeID00103",
|
||||
"DECVCAeID00102"
|
||||
],
|
||||
"cvRootCertificates": [
|
||||
"7F218201B67F4E82016E5F290100420E44454356434165494430303130337F4982011D060A04007F000702020202038120A9FB57DBA1EEA9BC3E660A909D838D726E3BF623D52620282013481D1F6E537782207D5A0975FC2C3057EEF67530417AFFE7FB8055C126DC5C6CE94A4B44F330B5D9832026DC5C6CE94A4B44F330B5D9BBD77CBF958416295CF7E1CE6BCCDC18FF8C07B68441048BD2AEB9CB7E57CB2C4B482FFC81B7AFB9DE27E1E3BD23C23A4453BD9ACE3262547EF835C3DAC4FD97F8461A14611DC9C27745132DED8E545C1D54C72F0469978520A9FB57DBA1EEA9BC3E660A909D838D718C397AA3B561A6F7901E0E82974856A7864104241D8627338B64F20077FFD558909A096C635DDB222852038EAAE642E869A40173D588F817D95DB2A6A0F077EA5EE63596A20F85BC3CB176D2F98D88D90219AA8701015F200E44454356434165494430303130347F4C12060904007F0007030102025305FC0F13FFFF5F25060105000901045F24060108000901045F3740313A81ED8734E7A8C45F16B55FB603E63027B7F44C2DE3A8E782552D35949DB221CA33BD41A01DA6A1288C7885714FC3A03FA45683B75D3884930EC6738AF8A0",
|
||||
|
@ -15,13 +15,13 @@
|
|||
|
||||
"_comment_3": "array of Test-CVCs; hex encoded",
|
||||
"_comment_4": [
|
||||
"certificate 4: DETESTeID00001",
|
||||
"certificate 5: DETESTeID00002_DETESTeID00001",
|
||||
"certificate 6: DETESTeID00004_DETESTeID00002",
|
||||
"certificate 7: DETESTeID00005_DETESTeID00004",
|
||||
"certificate 8: DECVCAeIDCTL0401_DECVCAeIDCTL0402",
|
||||
"certificate 9: DECVCAeIDCT00001_DECVCAeIDCTL0401",
|
||||
"certificate 10: DECVCAeIDCT00001_DECVCAeIDCT00001"
|
||||
"DETESTeID00001",
|
||||
"DETESTeID00001_DETESTeID00002",
|
||||
"DETESTeID00002_DETESTeID00004",
|
||||
"DETESTeID00004_DETESTeID00005",
|
||||
"DECVCAeIDCTL0401_DECVCAeIDCTL0402",
|
||||
"DECVCAeIDCT00001_DECVCAeIDCTL0401",
|
||||
"DECVCAeIDCT00001_DECVCAeIDCT00001"
|
||||
],
|
||||
"cvRootCertificatesTest": [
|
||||
"7F218201B67F4E82016E5F290100420E44455445535465494430303030317F4982011D060A04007F000702020202038120A9FB57DBA1EEA9BC3E660A909D838D726E3BF623D52620282013481D1F6E537782207D5A0975FC2C3057EEF67530417AFFE7FB8055C126DC5C6CE94A4B44F330B5D9832026DC5C6CE94A4B44F330B5D9BBD77CBF958416295CF7E1CE6BCCDC18FF8C07B68441048BD2AEB9CB7E57CB2C4B482FFC81B7AFB9DE27E1E3BD23C23A4453BD9ACE3262547EF835C3DAC4FD97F8461A14611DC9C27745132DED8E545C1D54C72F0469978520A9FB57DBA1EEA9BC3E660A909D838D718C397AA3B561A6F7901E0E82974856A7864104184BB519FC2A8F52DC0DC73112FACFE914F2A49B678DD5799A2B1DFE95E1A66359014E22FA8D66438413CEBA6CF0E215576B673376BF617AF4DFE9761D2290148701015F200E44455445535465494430303030317F4C12060904007F0007030102025305FE0F01FFFF5F25060100000801035F24060103000801035F37409F25EBFAF4B91E4C60A1683754C5DC076A3179753EF97D9F8CB01FE1DCD3B8C83E7A26602AB1F344BE5706006D79A9FF6A9716404DC83B9F30E1213B393128A2",
|
||||
|
@ -35,16 +35,16 @@
|
|||
|
||||
"_comment_5": "array of certificates for checking the authenticity of updates; DER format, hex encoded",
|
||||
"updateCertificates": [
|
||||
"308206f8308205e0a003020102020840b202f4450f40bf300d06092a864886f70d01010505003076310b300906035504061302444531253023060355040a131c542d53797374656d7320496e7465726e6174696f6e616c20476d6248311e301c060355040b131554727573742043656e7465722053657276696365733120301e0603550403131754656c6553656320536572766572506173732043412031301e170d3132303832313037353132345a170d3135303832363233353935395a3081ab310b3009060355040613024445312d302b060355040a0c246272656d656e206f6e6c696e6520736572766963657320476d6248202620436f2e204b47310b3009060355040b13025345310f300d060355040813064272656d656e310f300d060355040713064272656d656e3124302206092a864886f70d01090116156265747269656240626f732d6272656d656e2e6465311830160603550403130f6170706c2e626f732d6173702e646530820122300d06092a864886f70d01010105000382010f003082010a0282010100baa234d61141856dcc308a4fe30d1eaeb3e3356971e79a7c8257ce0ff15cd786a24670b58f2e0e2ba609805b9db94e7a68c5216375e9549c45c7d2d40ad9ecd1332adb6a94c8b312cc71097a671ff3ebec674f2decde539b619c867b1873deafa8eaeda61b335d483a260196903e4f3922cb3d66e30b6e22cfed5e249f7847b37d53b00409edd52e7148a72e2baf22194ec408496b6726ef5c8e2495e88e1c0193ab46f75b9e6fb0cfd100ab314a59337eb80d7c0449ff523606ea72e357e153182353d9cbe92567507f39c6d6545d3d561657703c6d6858a0cfa322c086bab2366f7df64cf8697f85e0d054a7c1283c7858cc2192082b9e14f88ce6388928d30203010001a38203523082034e301f0603551d2304183016801433dc9e96ecd8e8351f6d901b0b38a4af741bc658300e0603551d0f0101ff0404030205a0301d0603551d250416301406082b0601050507030206082b06010505070301301d0603551d0e041604146a2f35506e2da75862fe292c02f2222d28d4051c304f0603551d2004483046304406092b06010401bd470d023037303506082b060105050702011629687474703a2f2f7777772e74656c657365632e64652f736572766572706173732f6370732e68746d6c308201220603551d1f04820119308201153045a043a041863f687474703a2f2f63726c2e736572766572706173732e74656c657365632e64652f726c2f54656c655365635f536572766572506173735f43415f312e63726c3081cba081c8a081c58681c26c6461703a2f2f6c6461702e736572766572706173732e74656c657365632e64652f636e3d54656c65536563253230536572766572506173732532304341253230312c6f753d547275737425323043656e74657225323053657276696365732c6f3d542d53797374656d73253230496e7465726e6174696f6e616c253230476d62482c633d64653f63657274696669636174655265766f636174696f6e6c6973743f626173653f63657274696669636174655265766f636174696f6e6c6973743d2a3082013a06082b060105050701010482012c30820128303306082b060105050730018627687474703a2f2f6f6373702e736572766572706173732e74656c657365632e64652f6f63737072304c06082b060105050730028640687474703a2f2f63726c2e736572766572706173732e74656c657365632e64652f6372742f54656c655365635f536572766572506173735f43415f312e6365723081a206082b060105050730028681956c6461703a2f2f6c6461702e736572766572706173732e74656c657365632e64652f636e3d54656c65536563253230536572766572506173732532304341253230312c6f753d547275737425323043656e74657225323053657276696365732c6f3d542d53797374656d73253230496e7465726e6174696f6e616c253230476d62482c633d64653f63414365727469666963617465300c0603551d130101ff04023000301a0603551d1104133011820f6170706c2e626f732d6173702e6465300d06092a864886f70d0101050500038201010026a20d746b23686fa3d7513bf46ee88fbc1d895a7626576cd3ca16fa4a483a36bbe72bdb1aafd1f653a30c7e512870037eeba1706c75082248402061c5a2b39abe2c7a13433c6344cdfb9fb83ddee505bc406d7aa00b35b32ace9faffea387d1dd5982ac7e09c2687d5d33853885fea902e30dde7870457ac3431db6f64314a768b293a1ba097cf7b25d0abb83090f8a1b9a8fe009fe63f9fe6029b06e0d4e95e3995c6a93812a783493f66b69270f64d472637a8b30cb5870676ccaf98a4655e843c5c255d57e19388b60c5ffc6fd65f3eb17353279a68b609681b2bd7c629f4e6061619df736f78eabb2761a3ef9b3dcc87abcbca781620297f576ea9ce06a",
|
||||
"308208673082074fa00302010202086b5eeeb3f0155141300d06092a864886f70d01010b05003081d8310b300906035504061302444531253023060355040a131c542d53797374656d7320496e7465726e6174696f6e616c20476d6248311e301c060355040b131554727573742043656e7465722053657276696365733120301e0603550403131754656c6553656320536572766572506173732043412032311c301a060355040813134e6f7264726865696e205765737466616c656e310e300c0603550411130535373235303110300e060355040713074e65747068656e3120301e06035504091317556e7465726520496e647573747269657374722e203230301e170d3135303532303039353335315a170d3138303532353233353935395a3081a6310b30090603550406130244453121301f060355040a0c18476f7665726e696b757320476d6248202620436f2e204b47310b3009060355040b13025345310f300d060355040813064272656d656e310f300d060355040713064272656d656e3124302206092a864886f70d01090116156265747269656240676f7665726e696b75732e6465311f301d060355040313166170706c2e676f7665726e696b75732d6173702e646530820222300d06092a864886f70d01010105000382020f003082020a0282020100c1d969514392105ce65b089b7357f75356f076b21168233d1eb57ae81f826c74258ec4814c48a3e99633fcac1fb444412cba421c1569d21b6317b6614b096203ab5b605128671764d30186dec09716d2173bfab911a9ad3d2d0b850ff2595dd9c72113bd64879c39c39b3debbfdd7f8d68e8d1bdaf2cca0508583bd59b965ec5f4950e4fbbe48b7be351237d478253bc34ac5aed9448f5ae31878067bdad75179cb776ef19f8e49e62b830de8279142233030189c20008345553847b7edc6471bf7c15c98b087159b44faa5a35fe16adc285e4d8266fab49b7b4e7fbcbd91767e05dbb45a5564cb11abcbeb0ff66869ca72dd7919eae796340fb5b26fb8ecc65b8380d3eb30e46150725e2156ad156773a79b482133b846b247868a6d3fcc18f96cfc6044fb7678fd79c04fb580b7bfb86e3252554b9a97dfd6fb9ae0e0d8d663a56b471d37752fc88a172151494553d78a39ade4669076e5ddfa13fd684b7eb800efedf9af8f90d4bab6d80378b950d43ef6de6f9ca5dccb81ecbbf820126d90923c5b87462af2acf0fc460599b2d7022e488f20069e2b3e80e057ebbd1454891929c2e0252688a1c0e801eb8bec795251087a755a6edcd22759a5c1869550d63b0596cb5ac20a7e5cb11f5412598990092cbe058b4ec67b98dd9ed2b2a5f8b7994e92b89a1ef51517beb2e2594cb8007d514f988968c52246a18945fba0adf0203010001a38203633082035f301f0603551d2304183016801415bbded6256fbdf2319f6213dc5ca6f465b46df2300e0603551d0f0101ff0404030205a0301d0603551d250416301406082b0601050507030206082b06010505070301301d0603551d0e041604148c76a1377b9cad8059a5d4126a53bc633671ca1c30590603551d2004523050304406092b06010401bd470d023037303506082b060105050702011629687474703a2f2f7777772e74656c657365632e64652f736572766572706173732f6370732e68746d6c3008060667810c010202308201220603551d1f04820119308201153045a043a041863f687474703a2f2f63726c2e736572766572706173732e74656c657365632e64652f726c2f54656c655365635f536572766572506173735f43415f322e63726c3081cba081c8a081c58681c26c6461703a2f2f6c6461702e736572766572706173732e74656c657365632e64652f636e3d54656c65536563253230536572766572506173732532304341253230322c6f753d547275737425323043656e74657225323053657276696365732c6f3d542d53797374656d73253230496e7465726e6174696f6e616c253230476d62482c633d64653f63657274696669636174655265766f636174696f6e6c6973743f626173653f63657274696669636174655265766f636174696f6e6c6973743d2a3082013a06082b060105050701010482012c30820128303306082b060105050730018627687474703a2f2f6f6373702e736572766572706173732e74656c657365632e64652f6f63737072304c06082b060105050730028640687474703a2f2f63726c2e736572766572706173732e74656c657365632e64652f6372742f54656c655365635f536572766572506173735f43415f322e6365723081a206082b060105050730028681956c6461703a2f2f6c6461702e736572766572706173732e74656c657365632e64652f636e3d54656c65536563253230536572766572506173732532304341253230322c6f753d547275737425323043656e74657225323053657276696365732c6f3d542d53797374656d73253230496e7465726e6174696f6e616c253230476d62482c633d64653f63414365727469666963617465300c0603551d130101ff0402300030210603551d11041a301882166170706c2e676f7665726e696b75732d6173702e6465300d06092a864886f70d01010b050003820101005f35f8a5ed5fe3879dbb137d1505768bff7635e3c7824735bf8c0b1bdd02335de7928f484192925c29738b034b152805935aa54d92abc3be5c7cfec5017ca506a33c2b15fdb2762037b0b4615e39d7697f64dba763ad0b6e05b7e8b6dd29c7ace3ec86ea74a82ce9a5575166375849afbd48cebdbd18bfdab0f905b094b4e686649bee5fba153ff5786cbb5926807891ae07871127a887c2e2747dcfd1bd18d34b0642eb2fa8309e8b434b2cf91ab0e918c3f3c59d70aa096a46abfc50b3e66baacd7748b7ef98110760cce271c1528ed4e84ae9144983ad26aa27f00a527053c50739d2592ad13179a33eb1d299081be8b9824bc63ac70e1ad518380df08a56%",
|
||||
"308202eb308201d3a003020102020437a18b8a300d06092a864886f70d01010b05003026310b3009060355040613024445311730150603550403130e6275696c64617574656e74617070301e170d3134303732343131323334325a170d3234303732313131323334325a3026310b3009060355040613024445311730150603550403130e6275696c64617574656e7461707030820122300d06092a864886f70d01010105000382010f003082010a0282010100ca573d1c79c72f15dd80020b39886bec2de9004556eabc833f61b86aac3b4658ed8ecf7f32cb3daeb34576b49ff13e9eaaafa5ce2cf7cb13df2f89be6a1659f79cca6b4276b90914594e74998f9b9fffa0c8efdf4409be91a195458e1a0dce707cb1573cab99d297c80e8026c2f299fd97b8bbf14b172094f17abe50483a2e1df0cf6629d024cf5b752a1bb0edbe172dcce7ed30cc3c193ba742bff2e0afa0f15c414f27bdb374f65ac71c0c7af3a4a5fe1707d22bed1b63019e659c42e763c601f45d60094be915a422a0c183da33e8b3909cf83c0d7dfd3d5ffd1a92cf00c07961b284ddbef1e9b9d5536e12630cefa8493c8244edd2f687b09d38e79f639d0203010001a321301f301d0603551d0e04160414b29d3e7f193789f68d2234738a2773e737c4ce1c300d06092a864886f70d01010b0500038201010030800530f9d3abb215e8c8da5ee62ee083bdd8fce00d673702d00fac194eabd4c0b9338166a6dd76711651e685d0b9a50cdf2dc4872edeb5f4369372fb0d70d8fe02892b962e5fafd73add31ec0fd6708aa6ad2c82beca260773dd3e62460d1e416ac8d931e221b1bcf8255abd44933d38660e5bad639c38fb7dbbcf1f9504e20b27d75810b5ab475ce061d725b54628b4cfd7bd53f29d93a8ecb16e96df9ff654da55ea8ed1700c8d3135b1bc97655595a56f75dfb101c27341309602dce89e9c4db08a7c19d7fb199394f0ec478c4f246dbab0a37c2cea22b5b2b4c9e589a640611348b77dddd0fc412c9980cb5d516b274b9649debdd22df123cd06495924%"
|
||||
"308205633082044ba00302010202135100000749e339b5a8a2ecb8e8000000000749300d06092a864886f70d01010b0500304431153013060a0992268993f22c64011916056c6f63616c31153013060a0992268993f22c6401191605626f736b67311430120603550403130b676f766b67726f6f746361301e170d3136313232393039343930325a170d3138313232393039353930325a307c310b3009060355040613024445310b3009060355040813024445310f300d060355040713064272656d656e31163014060355040a130d476f7665726e696b7573204b47311c301a060355040b131353797374656d7320456e67696e656572696e6731193017060355040314102a2e74662e626f732d746573742e646530820122300d06092a864886f70d01010105000382010f003082010a0282010100c2ce4b611d136b4a99f43bd6487c323f812f00c433ed7ec3d343b93c1b064ba12ff3f950634bbba55283ea48bf91d3a6736ee17c3467918b22d9ba1d55f9b8593461b42ed54454d15577abe0ec286203c4c33a82aae8216c802f8f81f1d06473f85acbf6ba69357828030a97086aa1bc6836cae3916d2d83f24c153a05402e13828a30822e7a861395be7d7c511b84baf4bc4a5daeb3db755b37e8ffb5dd18f8ac22c018801e212ab59b96e64b85c3d418c577c33ef73cc0ba5fef68041ba39fa0b795e7b5eabfa408c36ca582572ca2adde4cd104ccad376eaa06b41e737121f349eedb063438b406bd32dc032659e9cbad809afb5679d8a7d776a916ead35b0203010001a382021430820210300e0603551d0f0101ff0404030205a030130603551d25040c300a06082b0601050507030130240603551d11041d301b82102a2e74662e626f732d746573742e646582012a87040ad2f861301d0603551d0e04160414262451b4431de1ccdb523d93038d7e01c4a3d153301f0603551d230418301680144b7e48a7b2f2db121642634bcd7e1c0deee96285303b0603551d1f043430323030a02ea02c862a687474703a2f2f676f7663726c2e676f7665726e696b75732e64652f63726c2f7265766f6b652e63726c3081eb06082b060105050701010481de3081db3081aa06082b0601050507300286819d6c6461703a2f2f2f434e3d676f766b67726f6f7463612c434e3d4149412c434e3d5075626c69632532304b657925323053657276696365732c434e3d53657276696365732c434e3d436f6e66696775726174696f6e2c44433d626f736b672c44433d6c6f63616c3f634143657274696669636174653f626173653f6f626a656374436c6173733d63657274696669636174696f6e417574686f72697479302c06082b060105050730018620687474703a2f2f676f7663726c2e676f7665726e696b75732e64652f6f637370303b06092b0601040182371507042e302c06242b060104018237150887a4920efcad6b83a98117819cb41586e9ea5a1791ff2e87b7af7c020164020109301b06092b060104018237150a040e300c300a06082b06010505070301300d06092a864886f70d01010b05000382010100a41dd5971c9b983bc3369bc9f3046481ff05aab5b47fac27a8cb7f917585b15c5acfbc8d083375a459b0642974968f4e00ad501d715dfb8a9e098437459ddcbba5a7d49f0278bd841b89fb93e86683bd89334f6b5ab556834e1fb4ec86647e812438e17512ee87b01bd0679b3abf4a67fe7272eae0c4cd9ed174d70b2728e72361cded46a42d445dfe244efb55feb1eee13f614d30237ee399b4108bc596b8aab377ad98d22c87ce4ce976ec1ceac512c33d6941b715d9fa60882b4644f9a066dcd51ff6c429af37cfa38f06444e6682d09643b2866a23a42da0ae21a787e8fe40aa2b21aa55a10aa42097c9a219528ac4968eb12cec5f223791a40d21fcce05",
|
||||
"3082083a30820722a003020102020900d5b6a4dc1fd8854a300d06092a864886f70d01010b05003081df310b300906035504061302444531253023060355040a0c1c542d53797374656d7320496e7465726e6174696f6e616c20476d6248311f301d060355040b0c16542d53797374656d732054727573742043656e746572311c301a06035504080c134e6f7264726865696e205765737466616c656e310e300c06035504110c0535373235303110300e06035504070c074e65747068656e3120301e06035504090c17556e7465726520496e647573747269657374722e2032303126302406035504030c1d54656c65536563205365727665725061737320436c6173732032204341301e170d3137313230313130343733325a170d3230313230363233353935395a308180310b30090603550406130244453121301f060355040a0c18476f7665726e696b757320476d6248202620436f2e204b47310b3009060355040b13025345310f300d060355040813064272656d656e310f300d060355040713064272656d656e311f301d060355040313166170706c2e676f7665726e696b75732d6173702e646530820222300d06092a864886f70d01010105000382020f003082020a0282020100c1d969514392105ce65b089b7357f75356f076b21168233d1eb57ae81f826c74258ec4814c48a3e99633fcac1fb444412cba421c1569d21b6317b6614b096203ab5b605128671764d30186dec09716d2173bfab911a9ad3d2d0b850ff2595dd9c72113bd64879c39c39b3debbfdd7f8d68e8d1bdaf2cca0508583bd59b965ec5f4950e4fbbe48b7be351237d478253bc34ac5aed9448f5ae31878067bdad75179cb776ef19f8e49e62b830de8279142233030189c20008345553847b7edc6471bf7c15c98b087159b44faa5a35fe16adc285e4d8266fab49b7b4e7fbcbd91767e05dbb45a5564cb11abcbeb0ff66869ca72dd7919eae796340fb5b26fb8ecc65b8380d3eb30e46150725e2156ad156773a79b482133b846b247868a6d3fcc18f96cfc6044fb7678fd79c04fb580b7bfb86e3252554b9a97dfd6fb9ae0e0d8d663a56b471d37752fc88a172151494553d78a39ade4669076e5ddfa13fd684b7eb800efedf9af8f90d4bab6d80378b950d43ef6de6f9ca5dccb81ecbbf820126d90923c5b87462af2acf0fc460599b2d7022e488f20069e2b3e80e057ebbd1454891929c2e0252688a1c0e801eb8bec795251087a755a6edcd22759a5c1869550d63b0596cb5ac20a7e5cb11f5412598990092cbe058b4ec67b98dd9ed2b2a5f8b7994e92b89a1ef51517beb2e2594cb8007d514f988968c52246a18945fba0adf0203010001a382035430820350301f0603551d2304183016801494c87446f53ab4464826f82bca341e5626041200300e0603551d0f0101ff0404030205a0301d0603551d250416301406082b0601050507030206082b06010505070301301d0603551d0e041604148c76a1377b9cad8059a5d4126a53bc633671ca1c305a0603551d20045330513045060a2b06010401bd470d17013037303506082b060105050702011629687474703a2f2f7777772e74656c657365632e64652f736572766572706173732f6370732e68746d6c3008060667810c010202308201030603551d1f0481fb3081f83040a03ea03c863a687474703a2f2f63726c2e736572766572706173732e74656c657365632e64652f726c2f536572766572506173735f436c6173735f322e63726c3081b3a081b0a081ad8681aa6c6461703a2f2f6c6461702e736572766572706173732e74656c657365632e64652f434e3d54656c6553656325323053657276657250617373253230436c6173732532303225323043412c4f553d542d53797374656d73253230547275737425323043656e7465722c4f3d542d53797374656d73253230496e7465726e6174696f6e616c253230476d62482c433d44453f43657274696669636174655265766f636174696f6e4c6973743082014906082b060105050701010482013b30820137303306082b060105050730018627687474703a2f2f6f6373702e736572766572706173732e74656c657365632e64652f6f63737072305206082b060105050730028646687474703a2f2f63726c2e736572766572706173732e74656c657365632e64652f6372742f54656c655365635f536572766572506173735f436c6173735f325f43412e6365723081ab06082b0601050507300286819e6c6461703a2f2f6c6461702e736572766572706173732e74656c657365632e64652f434e3d54656c6553656325323053657276657250617373253230436c6173732532303225323043412c4f553d542d53797374656d73253230547275737425323043656e7465722c4f3d542d53797374656d73253230496e7465726e6174696f6e616c253230476d62482c433d44453f63414365727469666963617465300c0603551d130101ff0402300030210603551d11041a301882166170706c2e676f7665726e696b75732d6173702e6465300d06092a864886f70d01010b050003820101006376f829a32345d2d590176bf2294d9ab6fe44e6c7db3b467bd597eebda4121d6e8795ec33de253ff9f271857c4a1ddf4b80b080464a51741a53de5137be13fc482e41b3649afbb571bfec2a894022d933ca60c691a99f31fe40209e7ca2e7fcd15d33baf8c1d20e107750cbd8628bc883af062a622f29c36574decaf97ef00471bbbe81380042ab82e46788491e4f77e58168f154d5210748263bfb8b2c3c82937436f758e1b2360c22458803a304eb90a4617bdcaa591176f4002e63dce3c9a3c7dcec83472dec70346544105118227fce63bae6a6686950846f65f30de621c1e5d6b7b20f3ce7d8ebbd95667c89123adb9efcbdd5ea1ba6e71b152bea43d3"
|
||||
],
|
||||
|
||||
"tlsSettings" : {
|
||||
"protocolVersion": "TlsV1_0OrLater",
|
||||
"tlsSettings": {
|
||||
"protocolVersion": "TlsV1_0OrLater",
|
||||
"_comment_1": "ciphers are ordered by preference",
|
||||
"ciphers": [
|
||||
"ECDHE-ECDSA-AES256-GCM-SHA384",
|
||||
"ECDHE-ECDSA-AES256-GCM-SHA384",
|
||||
"ECDHE-RSA-AES256-GCM-SHA384",
|
||||
"DHE-DSS-AES256-GCM-SHA384",
|
||||
"DHE-RSA-AES256-GCM-SHA384",
|
||||
|
@ -71,15 +71,15 @@
|
|||
],
|
||||
"_comment_2": "prime256v1 := secp256r1",
|
||||
"ellipticCurves": [
|
||||
"brainpoolP512r1",
|
||||
"brainpoolP512r1",
|
||||
"brainpoolP384r1",
|
||||
"brainpoolP256r1",
|
||||
"secp384r1",
|
||||
"prime256v1",
|
||||
"secp224r1"
|
||||
],
|
||||
"signatureAlgorithms" : [
|
||||
"Rsa+Sha512",
|
||||
"signatureAlgorithms": [
|
||||
"Rsa+Sha512",
|
||||
"Dsa+Sha512",
|
||||
"Ec+Sha512",
|
||||
"Rsa+Sha384",
|
||||
|
@ -94,34 +94,78 @@
|
|||
]
|
||||
},
|
||||
|
||||
"tlsSettingsPsk" : {
|
||||
"protocolVersion": "TlsV1_1OrLater",
|
||||
"tlsSettingsPsk": {
|
||||
"protocolVersion": "TlsV1_1OrLater",
|
||||
"_comment_1": "ciphers are ordered by preference",
|
||||
"ciphers": [
|
||||
"RSA-PSK-AES256-GCM-SHA384",
|
||||
"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"
|
||||
],
|
||||
"_comment_2": "ellipticCurves not needed",
|
||||
"signatureAlgorithms" : [
|
||||
"Rsa+Sha512",
|
||||
"signatureAlgorithms": [
|
||||
"Rsa+Sha512",
|
||||
"Rsa+Sha384",
|
||||
"Rsa+Sha256",
|
||||
"Rsa+Sha224"
|
||||
]
|
||||
},
|
||||
|
||||
"minStaticKeySizes": {
|
||||
"Rsa": 2000,
|
||||
"tlsSettingsRemoteReader": {
|
||||
"protocolVersion": "TlsV1_2OrLater",
|
||||
"_comment_1": "ciphers are ordered by preference",
|
||||
"ciphers": [
|
||||
"ECDHE-RSA-AES256-GCM-SHA384",
|
||||
"DHE-RSA-AES256-GCM-SHA384",
|
||||
"ECDHE-RSA-AES256-SHA384",
|
||||
"DHE-RSA-AES256-SHA256",
|
||||
"ECDHE-RSA-AES128-GCM-SHA256",
|
||||
"ECDHE-RSA-AES128-SHA256",
|
||||
"DHE-RSA-AES128-SHA256"
|
||||
],
|
||||
"ellipticCurves": [
|
||||
"brainpoolP512r1",
|
||||
"brainpoolP384r1",
|
||||
"brainpoolP256r1",
|
||||
"secp384r1",
|
||||
"prime256v1",
|
||||
"secp224r1"
|
||||
],
|
||||
"signatureAlgorithms": [
|
||||
"Rsa+Sha512",
|
||||
"Rsa+Sha384",
|
||||
"Rsa+Sha256"
|
||||
]
|
||||
},
|
||||
|
||||
"tlsSettingsRemoteReaderPairing": {
|
||||
"protocolVersion": "TlsV1_2OrLater",
|
||||
"_comment_1": "ciphers are ordered by preference",
|
||||
"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"
|
||||
],
|
||||
"signatureAlgorithms": [
|
||||
"Rsa+Sha512",
|
||||
"Rsa+Sha384",
|
||||
"Rsa+Sha256"
|
||||
]
|
||||
},
|
||||
|
||||
"minStaticKeySizes": {
|
||||
"Rsa": 2000,
|
||||
"Dsa": 2000,
|
||||
"Ec": 224
|
||||
},
|
||||
|
||||
"minEphemeralKeySizes": {
|
||||
"Rsa": 2000,
|
||||
"Dsa": 1024,
|
||||
"minEphemeralKeySizes": {
|
||||
"Rsa": 2000,
|
||||
"Dsa": 2000,
|
||||
"Ec": 224
|
||||
},
|
||||
|
||||
|
@ -134,13 +178,8 @@
|
|||
"testCertDescr": "30820266060A04007F00070301030101A1160C14476F7665726E696B757320546573742044564341A21A1318687474703A2F2F7777772E676F7665726E696B75732E6465A31A0C18476F7665726E696B757320476D6248202620436F2E204B47A420131E68747470733A2F2F746573742E676F7665726E696B75732D6569642E6465A582014F0C82014B416E736368726966743A090D0A476F7665726E696B757320476D6248202620436F2E204B470D0A416D2046616C6C7475726D20390D0A3238333539204272656D656E090D0A0D0A452D4D61696C2D416472657373653A09686240626F732D6272656D656E2E6465090D0A0D0A5A7765636B20646573204175736C657365766F7267616E67733A0944656D6F6E7374726174696F6E20646573206549442D53657276696365090D0A0D0A5A757374C3A46E6469676520446174656E73636875747A61756673696368743A090D0A446965204C616E64657362656175667472616774652066C3BC7220446174656E73636875747A20756E6420496E666F726D6174696F6E736672656968656974206465722046726569656E2048616E73657374616474204272656D656E0D0A41726E647473747261C39F6520310D0A3237353730204272656D6572686176656EA64B134968747470733A2F2F746573742E676F7665726E696B75732D6569642E64653A3434332F417574656E742D44656D6F4170706C69636174696F6E2F5265636569766572536572766C6574A74631440420D2E54E1D26FC5DFC3408609831BBE4CFE3204365604849E7B094623566B54A760420E224D25B448DC054C023392CA11017751041D762F83D880895B3018D8EC2B290"
|
||||
},
|
||||
|
||||
"drivers": {
|
||||
"updateUrl": "@REMOTE_CONFIG_URL@@REMOTE_CONFIG_PATH_DRIVERS@/default-supported-devices.json"
|
||||
},
|
||||
|
||||
"providers": {
|
||||
"updateUrl": "@REMOTE_CONFIG_URL@@REMOTE_CONFIG_PATH_PROVIDERS@/@DEFAULT_PROVIDER_FILE@",
|
||||
"iconsUpdateUrlBase": "@REMOTE_CONFIG_URL@@REMOTE_CONFIG_PATH_PROVIDERS@/provider/"
|
||||
"updateServer": {
|
||||
"baseUrl": "@REMOTE_CONFIG_URL@/updatable-files"
|
||||
},
|
||||
|
||||
"updates": {
|
||||
|
|
|
@ -1,53 +0,0 @@
|
|||
{
|
||||
"issueDate": "2015-10-29T06:25:00+1:00",
|
||||
"provider": [
|
||||
{
|
||||
"name": "Beantragung Schwerbehindertenausweis Saarland",
|
||||
"address": "https://gatewaylas.saarland.de/FV/Onlineantrag",
|
||||
"phone": "",
|
||||
"email": "",
|
||||
"postaladdress": "",
|
||||
"category": "citizen"
|
||||
},
|
||||
{
|
||||
"name": "Bürgerportal Rheinland Pfalz",
|
||||
"address": "http://www.rlpdirekt.de/rheinland-pfalz",
|
||||
"phone": "",
|
||||
"email": "",
|
||||
"postaladdress": "",
|
||||
"category": "citizen"
|
||||
},
|
||||
{
|
||||
"name": ":::(bit)kasten",
|
||||
"address": "https://www.bitkasten.de/",
|
||||
"phone": "",
|
||||
"email": "",
|
||||
"postaladdress": "",
|
||||
"category": "other"
|
||||
},
|
||||
{
|
||||
"name": "Bürgerkonto Test (Testausweis erforderlich)",
|
||||
"address": "https://bk.test.bos-asp.de/BuergerKontoTestSPTest/",
|
||||
"phone": "",
|
||||
"email": "",
|
||||
"postaladdress": "",
|
||||
"category": "other"
|
||||
},
|
||||
{
|
||||
"name": "OpenPGP-eID",
|
||||
"address": "https://pgp.governikus-eid.de/pgp",
|
||||
"phone": "",
|
||||
"email": "",
|
||||
"postaladdress": "",
|
||||
"category": "other"
|
||||
},
|
||||
{
|
||||
"name": "SkIDentity Service",
|
||||
"address": "https://skidentity.de/service",
|
||||
"phone": "",
|
||||
"email": "",
|
||||
"postaladdress": "",
|
||||
"category": "other"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -1,964 +0,0 @@
|
|||
{
|
||||
"issueDate": "2017-09-15T11:00:00+1:00",
|
||||
"callcosts" : [
|
||||
{
|
||||
"prefixes" : ["1371", "1375"],
|
||||
"landline" : {
|
||||
"per-call" : 14
|
||||
}
|
||||
},
|
||||
{
|
||||
"prefixes" : ["1372", "1373", "1374", "138"],
|
||||
"landline" : {
|
||||
"per-minute" : 14
|
||||
}
|
||||
},
|
||||
{
|
||||
"prefixes" : ["1376"],
|
||||
"landline" : {
|
||||
"per-call" : 25
|
||||
}
|
||||
},
|
||||
{
|
||||
"prefixes" : ["1377"],
|
||||
"landline" : {
|
||||
"per-call" : 100
|
||||
}
|
||||
},
|
||||
{
|
||||
"prefixes" : ["1378", "1379"],
|
||||
"landline" : {
|
||||
"per-call" : 50
|
||||
}
|
||||
},
|
||||
{
|
||||
"prefixes" : ["1801"],
|
||||
"landline" : {
|
||||
"per-minute" : 3.9
|
||||
},
|
||||
"mobile" : {
|
||||
"per-minute" : 42
|
||||
}
|
||||
},
|
||||
{
|
||||
"prefixes": ["1802"],
|
||||
"landline" : {
|
||||
"per-call" : 6
|
||||
},
|
||||
"mobile" : {
|
||||
"per-minute" : 42
|
||||
}
|
||||
},
|
||||
{
|
||||
"prefixes" : ["1803"],
|
||||
"landline" : {
|
||||
"per-minute" : 9
|
||||
},
|
||||
"mobile" : {
|
||||
"per-minute" : 42
|
||||
}
|
||||
},
|
||||
{
|
||||
"prefixes" : ["1804"],
|
||||
"landline" : {
|
||||
"per-call" : 20
|
||||
},
|
||||
"mobile" : {
|
||||
"per-minute" : 42
|
||||
}
|
||||
},
|
||||
{
|
||||
"prefixes" : ["1805"],
|
||||
"landline" : {
|
||||
"per-minute" : 14
|
||||
},
|
||||
"mobile" : {
|
||||
"per-minute" : 42
|
||||
}
|
||||
},
|
||||
{
|
||||
"prefixes" : ["1806"],
|
||||
"landline" : {
|
||||
"per-call" : 20
|
||||
},
|
||||
"mobile" : {
|
||||
"per-call" : 60
|
||||
}
|
||||
},
|
||||
{
|
||||
"prefixes" : ["1807"],
|
||||
"free-seconds": 30,
|
||||
"landline" : {
|
||||
"per-minute" : 14
|
||||
},
|
||||
"mobile" : {
|
||||
"per-minute" : 42
|
||||
}
|
||||
}
|
||||
],
|
||||
"provider": [
|
||||
{
|
||||
"shortName": {"" : ":::(bit)kasten"},
|
||||
"longDescription": {"": "Der :::(bit)kasten ist ein elektronischer Briefkasten, in dem Sie Ihre Post elektronisch von teilnehmenden Unternehmen und Behörden zum Beispiel Rechnungen, Vertragsunterlagen oder Bescheide sicher und rechtsverbindlich empfangen. Ihre Post erhalten Sie wie bisher anhand Ihrer Postanschrift, nur eben digital. Sie müssen keine persönliche Daten an Dritte herausgeben, Ihre Postadresse reicht für den elektronischen Versand an den :::(bit)kasten aus.<br/>Eine Registrierung für den :::(bit)kasten ist nicht zwingend erforderlich. Ob Sie sich ein Konto anlegen möchten, entscheiden Sie selbst. Nach Login mit Ihrer Online-Ausweisfunktion können Sie Ihre Post abrufen und verwalten.<br/>Da Ihre Post nicht mehr als Papierpost verschickt werden muss, sparen Sie Zeit und senken den Papierverbrauch."},
|
||||
"address": "https://www.bitkasten.de/",
|
||||
"homepage": "https://www.bitkasten.de/",
|
||||
"phone": "+49 911 6000 2874",
|
||||
"email": "nachricht@bitkasten.de",
|
||||
"postalAddress": "Wallensteinstr. 63<br/>90431 Nürnberg",
|
||||
"category": "other",
|
||||
"tcTokenUrl": "https://www.bitkasten.de/portal/api/login/npa/createRequest?returnUrl=https%3A%2F%2Fwww.bitkasten.de%2Fportal%2Fapi%2Flogin%2Fnpa%2Flogin.html",
|
||||
"subjectUrls": ["https://www.bitkasten.de"]
|
||||
},
|
||||
{
|
||||
"exclude": ["ios"],
|
||||
"shortName": {"" : "Allianz Maklerportal"},
|
||||
"address": "https://makler.allianz.de",
|
||||
"homepage": "https://makler.allianz.de",
|
||||
"phone": "+49 800/22 23 557 ",
|
||||
"email": "zviss.makler@allianz.de",
|
||||
"postalAddress": "Königinstraße 28<br/>80802 München",
|
||||
"category": "insurance",
|
||||
"tcTokenUrl": "https://npa.allianz.de/azsecurity-npa-service/NpaEIDService/nparef/-wnfwSFGamtJotxe6_BKiLj",
|
||||
"tcTokenUrlInfo" : "TcToken URL contains dynamic request id but is accepted anyway.",
|
||||
"subjectUrls": ["https://npa.allianz.de"]
|
||||
},
|
||||
{
|
||||
"exclude": ["ios"],
|
||||
"shortName": {"" : "Akteneinsicht in Stasi-Unterlagen"},
|
||||
"longName": {"" : "Akteneinsicht in Stasi-Unterlagen"},
|
||||
"shortDescription": {"": "Antragstellung auf Einsicht in Stasi-Unterlagen für Privatpersonen."},
|
||||
"longDescription": {"": "Privatpersonen können online mittels neuem Personalausweis ohne weitere Wege die Einsichtnahme in die von der Stasi angelegten Akten zur eigenen Person oder zu verstorbenen/vermissten nahen Angehörigen beantragen."},
|
||||
"address": "https://www.bstu.bund.de/DE/Akteneinsicht/Privatpersonen/Online-Antrag/online-antrag_node.html",
|
||||
"homepage": "https://www.bstu.bund.de",
|
||||
"phone": "+49 30 23 24-7000",
|
||||
"email": "post@bstu.bund.de",
|
||||
"postalAddress": "Der Bundesbeauftragte für die Unterlagen des Staatssicherheitsdienstes der ehemaligen Deutschen Demokratischen Republik (BStU)<br/>Karl-Liebknecht-Straße 31/33<br/>10178 Berlin",
|
||||
"image": "stasi_image.jpg",
|
||||
"icon": "stasi_icon.png",
|
||||
"category": "citizen",
|
||||
"subjectUrls": ["https://www.bstu-formulare.de/lip"]
|
||||
},
|
||||
{
|
||||
"exclude": ["ios"],
|
||||
"shortName": {"" : "Ausweis Auskunft des Bundes"},
|
||||
"address": "https://www.buergerserviceportal.de/bund/ausweisapp/bspx_selbstauskunft",
|
||||
"homepage": "https://www.buergerserviceportal.de/",
|
||||
"phone": "+49 180-1-33 33 33",
|
||||
"email": "eID_buergerservice@bmi.bund.de",
|
||||
"postalAddress": "Bundesministerium des Innern<br/>Alt-Moabit 101 D<br/>10559 Berlin",
|
||||
"category": "citizen",
|
||||
"tcTokenUrl" : "https://www.buergerserviceportal.de:443/bund/ausweisapp/bspx_selbstauskunft/SamlAuthnRequestProvider",
|
||||
"subjectUrls": ["https://www.buergerserviceportal.de"]
|
||||
},
|
||||
{
|
||||
"exclude": ["ios"],
|
||||
"shortName": {"" : "BAföG Online"},
|
||||
"address": "https://www.bafoegonline.bva.bund.de/",
|
||||
"homepage": "http://www.bafoeg.bund.de/",
|
||||
"longDescription": {"": "Mit Ihrer Online-Ausweisfunktion können Sie sich beim Bundesverwaltungsamt für das BAföG-Rückzahlungsverfahren anmelden und sowohl Ihre persönlichen Daten als auch die erforderlichen Nachweise sicher und schnell elektronisch übermitteln. Sie müssen die Nachweise nicht mehr per Post senden.<br/>Die Online-Ausweisfunktion vereinfacht und beschleunigt das BAföG-Rückzahlungsverfahren."},
|
||||
"phone": "+49 22899358 - 4500",
|
||||
"email": "",
|
||||
"postalAddress": "Bundesverwaltungsamt<br/>BT-BAföG<br/>50728 Köln",
|
||||
"category": "citizen",
|
||||
"tcTokenUrl" : "",
|
||||
"clientUrl" : "https://www.bafoegonline.bva.bund.de/bafoeg-online/Bafoeg/flow/anmeldenMitNpaPreFlow",
|
||||
"subjectUrls": ["https://e-id.bva.bund.de"]
|
||||
},
|
||||
{
|
||||
"exclude": ["ios"],
|
||||
"shortName": {"" : "BAföG Online Bayern (AKDB)"},
|
||||
"longDescription": {"": "In Bayern können Sie Ihr BAföG für ein Studium bzw. eine Ausbildung in Bayern, Österreich, Liechtenstein oder der Schweiz nicht nur auf dem Postweg oder durch persönliche Abgabe beim Amt beantragen, sondern auch mit der Online-Ausweisfunktion bequem und schnell im Internet.<br/>Ihr Antrag muss dann nicht mehr ausgedruckt, unterschrieben und versandt werden, sondern gilt mit der Übermittlung Ihrer Daten als wirksam gestellt. Beizufügende und nachzureichende Unterlagen sowie Bescheinigungen können Sie über die Upload-Funktion ebenfalls elektronisch übermitteln.<br/>Nach Übermittlung der Daten wird Ihnen der Antrag als PDF-Dokument zum Download angeboten. Der Bescheid wird Ihnen per Post zugestellt."},
|
||||
"address": "https://afoegfofa.osrz-akdb.de",
|
||||
"homepage": "https://afoegfofa.osrz-akdb.de",
|
||||
"phone": "+49 89 / 5903 - 0",
|
||||
"email": "",
|
||||
"postalAddress": "Anstalt für Kommunale Datenverarbeitung in Bayern (AKDB)<br/>Hansastraße 12-16<br/>80686 München",
|
||||
"category": "citizen",
|
||||
"subjectUrls": ["https://www.buergerserviceportal.de"]
|
||||
},
|
||||
{
|
||||
"exclude": ["ios"],
|
||||
"shortName": {"" : "BAföG Online Bayern (Studentenwerk)"},
|
||||
"address": "https://www.bafoeg-bayern.de",
|
||||
"homepage": "https://www.bafoeg-bayern.de",
|
||||
"phone": "+49 800-223 63 41",
|
||||
"email": "webmaster@bafoeg-bayern.de",
|
||||
"postalAddress": "Studentenwerk Niederbayern/Oberpfalz, Anstalt des öffentlichen Rechts<br/>Administration BAföG-Bayern<br/>Albertus-Magnus-Straße 4<br/>93053 Regensburg",
|
||||
"category": "citizen",
|
||||
"subjectUrls": []
|
||||
},
|
||||
{
|
||||
"exclude": ["ios"],
|
||||
"shortName": {"" : "BAföG Berlin"},
|
||||
"longName": {"" : "BAföG Online Berlin"},
|
||||
"shortDescription": {"": "BAföG-Anträge und Formblätter online ausfüllen und unterschreiben."},
|
||||
"longDescription": {"": "Sie wollen einen Antrag auf Ausbildungsförderung nach dem BAföG stellen? Mit dem neuen Personalausweis / elektronischen Aufenthaltstitel können Sie Ihren Antrag elektronisch signieren und an das Amt übermitteln. Ebenso können Ihre Eltern und ggf. Ihr Ehepartner die nötigen Formulare signieren."},
|
||||
"address": "https://www.berlin-bafoeg.de",
|
||||
"homepage": "https://www.berlin-bafoeg.de",
|
||||
"phone": "+49 30 939 39 - 70",
|
||||
"email": "info@stw.berlin",
|
||||
"postalAddress": "studierendenWERK BERLIN<br/>BAföG-Amt<br/>Behrenstraße 40/41<br/>10117 Berlin",
|
||||
"image": "BafoegBerlin_image.jpg",
|
||||
"icon": "BafoegBerlin_icon.png",
|
||||
"category": "citizen",
|
||||
"subjectUrls": []
|
||||
},
|
||||
{
|
||||
"exclude": ["ios"],
|
||||
"shortName": {"" : "BAföG Online Brandenburg"},
|
||||
"longDescription": {"": "In Brandenburg können Sie Ihr BAföG nicht nur auf dem Postweg oder durch persönliche Abgabe beim Amt beantragen, sondern auch bequem und schnell im Internet.<br/>Ihr Antrag muss dann nicht mehr ausgedruckt, unterschrieben und versandt werden, sondern gilt mit der Übermittlung Ihrer Daten als wirksam gestellt. Beizufügende und nachzureichende Unterlagen sowie Bescheinigungen können Sie über die Upload-Funktion ebenfalls elektronisch übermitteln.<br/>Nach Übermittlung der Daten wird Ihnen der Antrag als PDF-Dokument zum Download angeboten. Der Bescheid wird Ihnen per Post zugestellt."},
|
||||
"address": "https://www.bafoeg-brandenburg.de",
|
||||
"homepage": "https://www.bafoeg-brandenburg.de",
|
||||
"phone": "+49 331 / 866 45 60",
|
||||
"email": "mwfk@mwfk.brandenburg.de",
|
||||
"postalAddress": "Ministerium für Wissenschaft, Forschung und Kultur<br/>Presse- und Öffentlichkeitsarbeit ",
|
||||
"category": "citizen",
|
||||
"subjectUrls": ["https://www.bafoeg-brandenburg.de"]
|
||||
},
|
||||
{
|
||||
"exclude": ["ios"],
|
||||
"shortName": {"" : "BAföG Online Hamburg"},
|
||||
"longDescription": {"": "In Hamburg können Sie Ihr BAföG nicht nur auf dem Postweg oder durch persönliche Abgabe beim Amt beantragen, sondern auch bequem und schnell im Internet.<br/>Ihr Antrag muss dann nicht mehr ausgedruckt, unterschrieben und versandt werden, sondern gilt mit der Übermittlung Ihrer Daten als wirksam gestellt. Beizufügende und nachzureichende Unterlagen sowie Bescheinigungen können Sie über die neue Upload-Funktion ebenfalls elektronisch übermitteln.<br/>Nach Übermittlung der Daten wird Ihnen der Antrag als PDF-Dokument zum Download angeboten. Der Bescheid wird Ihnen per Post zugestellt."},
|
||||
"address": "https://bafoeg-online.hamburg.de",
|
||||
"homepage": "https://bafoeg-online.hamburg.de",
|
||||
"phone": "+49 800-223 63 41",
|
||||
"email": "Marita.Porr@bwfg.hamburg.de",
|
||||
"postalAddress": "Ressortleiter Online-Redaktion der Behörde für Wissenschaft, Forschung und Gleichstellung:<br/>Kommunikation<br/>Daniel Drexelius<br/>Hamburger Straße 37<br/>22083 Hamburg",
|
||||
"category": "citizen",
|
||||
"subjectUrls": ["https://bafoeg-online.hamburg.de"]
|
||||
},
|
||||
{
|
||||
"exclude": ["ios"],
|
||||
"shortName": {"" : "BAföG Hessen"},
|
||||
"longName": {"" : "BAföG/AFBG hessenweit"},
|
||||
"shortDescription": {"": "BAföG und AFBG Online-Antragstellung Hessen"},
|
||||
"longDescription": {"": "Mit Hilfe dieses Angebotes können Antragstellende, Ehegatten / eingetragene Lebenspartner und Eltern die erforderlichen Antragsformblätter online ausfüllen, mit Hilfe der eID rechtswirksam unterschreiben und papierlos dem zuständigen Amt übermitteln."},
|
||||
"address": "https://www.bafoeg-hessen.de",
|
||||
"homepage": "http://www.hmwk.hessen.de",
|
||||
"phone": "+49 611 32 - 3551",
|
||||
"email": "hebav@hmwk.hessen.de",
|
||||
"postalAddress": "Hessisches Ministerium für Wissenschaft und Kunst<br/>Rheinstraße 23-25<br/>65185 Wiesbaden ",
|
||||
"image": "BafoegHessen_image.jpg",
|
||||
"icon": "BafoegHessen_icon.png",
|
||||
"category": "citizen",
|
||||
"subjectUrls": ["https://www.bafoeg-hessen.de"]
|
||||
},
|
||||
{
|
||||
"exclude": ["ios"],
|
||||
"shortName": {"" : "BAföG Online Mecklenburg-Vorpommern"},
|
||||
"address": "http://www.bm.regierung-mv.de/bafoeg",
|
||||
"homepage": "http://www.regierung-mv.de/",
|
||||
"phone": "",
|
||||
"email": "",
|
||||
"postalAddress": "Ministerium für Bildung, Wissenschaft und Kultur Mecklenburg-Vorpommern<br/>Werderstraße 124<br/>19055 Schwerin",
|
||||
"category": "citizen",
|
||||
"subjectUrls": ["https://fms.mv-regierung.de"]
|
||||
},
|
||||
{
|
||||
"exclude": ["ios"],
|
||||
"shortName": {"" : "BAföG Online Nordrhein-Westfalen"},
|
||||
"longDescription": {"": "In Nordrhein-Westfalen können Sie mit der Online-Ausweisfunktion Ihren Antrag auf BAföG für eine Ausbildung (Schulausbildung, Studium in Nordrhein-Westfalen sowie Studium in Belgien, den Niederlanden oder Luxemburg) oder Ihren Antrag auf Aufstiegsfortbildungsförderung (z. B. für die Meisterausbildung) in Nordrhein-Westfalen bequem und schnell im Internet stellen.<br/>Ihr Antrag muss dann nicht mehr ausgedruckt, unterschrieben und versandt werden, sondern gilt mit der Übermittlung Ihrer Daten als wirksam gestellt. Beizufügende und nachzureichende Unterlagen sowie Bescheinigungen können Sie über die Upload-Funktion ebenfalls elektronisch übermitteln.<br/>Nach Übermittlung der Daten wird Ihnen der Antrag als PDF-Dokument zum Download angeboten. Der Bescheid wird Ihnen per Post zugestellt."},
|
||||
"address": "https://www.bafoeg-online.nrw.de",
|
||||
"homepage": "https://www.bafoeg-online.nrw.de",
|
||||
"phone": "+49 385-588 7145",
|
||||
"email": "m.boehm@bm.mv-regierung.de",
|
||||
"postalAddress": "Ministerium für Bildung, Wissenschaft und Kultur Mecklenburg-Vorpommern<br/>Abteilung 1<br/>Referat 140<br/>Werderstraße 124<br/>19055 Schwerin",
|
||||
"category": "citizen",
|
||||
"subjectUrls": []
|
||||
},
|
||||
{
|
||||
"exclude": ["ios"],
|
||||
"shortName": {"" : "BAföG Online Schleswig-Holstein"},
|
||||
"longDescription": {"": "In Schleswig-Holstein können Sie Ihr BAföG nicht nur auf dem Postweg oder durch persönliche Abgabe beim Amt beantragen, sondern auch bequem und schnell im Internet.<br/>Ihr Antrag muss dann nicht mehr ausgedruckt, unterschrieben und versandt werden, sondern gilt mit der Übermittlung Ihrer Daten als wirksam gestellt. Beizufügende und nachzureichende Unterlagen sowie Bescheinigungen können Sie über die Upload-Funktion ebenfalls elektronisch übermitteln.<br/>Nach Übermittlung der Daten wird Ihnen der Antrag als PDF-Dokument zum Download angeboten. Der Bescheid wird Ihnen per Post zugestellt."},
|
||||
"address": "https://bafoeg.schleswig-holstein.de/BAfoeGOnline/ABAfoeG/",
|
||||
"homepage": "https://bafoeg.schleswig-holstein.de/",
|
||||
"phone": "+49 431 988-0",
|
||||
"email": "bafoeg@sozmi.landsh.de",
|
||||
"postalAddress": "Ministerium für Soziales, Gesundheit, Wissenschaft und Gleichstellung des Landes Schleswig-Holstein<br/>Abteilung VIII 5<br/>Düsternbrooker Weg 104<br/>24105 Kiel",
|
||||
"category": "citizen"
|
||||
},
|
||||
{
|
||||
"exclude": ["ios"],
|
||||
"shortName": {"" : "BAföG Online Sachsen"},
|
||||
"address": "https://fs.egov.sachsen.de/formserv/findform?shortname=bafoeg&formtecid=11&areashortname=SMWK_bafoeg",
|
||||
"homepage": "http://www.studieren.sachsen.de/",
|
||||
"phone": "+49 351 564-1080",
|
||||
"email": "info@sk.sachsen.de",
|
||||
"postalAddress": "Sächsische Staatskanzlei<br/>Redaktion Amt24 / Bürgerbüro<br/>01095 Dresden",
|
||||
"category": "citizen",
|
||||
"subjectUrls": ["https://fs.egov.sachsen.de"]
|
||||
},
|
||||
{
|
||||
"exclude": ["ios"],
|
||||
"shortName": {"" : "bahn.de"},
|
||||
"address": "https://www.bahn.de/p/view/meinebahn/login.shtml",
|
||||
"homepage": "https://www.bahn.de",
|
||||
"phone": "+49 1806 - 996633",
|
||||
"email": "reiseportal@bahn.de",
|
||||
"postalAddress": "DB Vertrieb GmbH<br/>Stephensonstraße 1<br/>60326 Frankfurt am Main",
|
||||
"category": "other",
|
||||
"subjectUrls": ["https://www.bahn.de/"]
|
||||
},
|
||||
{
|
||||
"shortName": {"" : "Beantragung Schwerbehindertenausweis Bayern"},
|
||||
"longDescription": {"": "Einen Schwerbehindertenantrag können Sie bei der Landesbehörde Zentrum Bayern Familie und Soziales (ZBFS) mit der Online-Ausweisfunktion komplett papierlos stellen.<br/>Der papierlose Antrag ist ein bedeutender Schritt auf dem Weg zur digitalen Verwaltung – online, schnell und unkompliziert.<br/>Das Online-Verfahren hat weitere Vorteile. Gerade für sehbehinderte Menschen ist die papiergebundene Schriftform ein Hindernis. Digitale Angebote bieten ihnen die Chance, Behördenangelegenheiten ein Stück weit selbständiger erledigen zu können.<br/>Zu 100 Prozent digital – ein bisschen weniger lästiger Papierkram. Digitalisierung ist somit ein Beitrag zur Inklusion."},
|
||||
"address": "https://www.schwerbehindertenantrag.bayern.de",
|
||||
"homepage": "http://www.zbfs.bayern.de/",
|
||||
"phone": "+49 921 605-03",
|
||||
"email": "poststelle@zbfs.bayern.de",
|
||||
"postalAddress": "Zentrum Bayern Familie und Soziales<br/>95440 Bayreuth",
|
||||
"category": "citizen",
|
||||
"subjectUrls": ["https://www.buergerserviceportal.de"]
|
||||
},
|
||||
{
|
||||
"shortName": {"" : "Beantragung Schwerbehindertenausweis Saarland"},
|
||||
"longDescription": {"": "Als erstes Bundesland bietet Ihnen das Saarland mit Schweb.NET Online die Möglichkeit, Ihren Erst- und Verschlimmerungsantrag auf Feststellung einer Behinderung nach dem Schwerbehindertenrecht online beim Landesamt für Soziales zu stellen.<br/>Weite Wege werden dadurch vermieden. Bearbeitungszeiten und Arbeitsabläufe werden verkürzt.<br/>Der Antrag ist selbsterklärend und nutzerfreundlich. "},
|
||||
"address": "https://gatewaylas.saarland.de/FV/Onlineantrag",
|
||||
"homepage": "http://www.saarland.de/index.htm",
|
||||
"phone": "+49 681/9978-2181",
|
||||
"email": "",
|
||||
"postalAddress": "Ministerium für Soziales, Gesundheit, Frauen und Familie<br/>Franz-Josef-Röder-Straße 23<br/>66119 Saarbrücken",
|
||||
"category": "citizen",
|
||||
"tcTokenUrlInfo" : "TcToken URL requires valid dynamic request id.",
|
||||
"subjectUrls": ["https://tbklas.saarland.de"]
|
||||
},
|
||||
{
|
||||
"exclude": ["ios"],
|
||||
"shortName": {"" : "Bundesagentur für Arbeit"},
|
||||
"longDescription": {"": "Mit der Online-Ausweisfunktion des Personalausweises können Sie sich bei der Bundesagentur für Arbeit einfach und zuverlässig über Ihr Kindergeld informieren. Die Anwendung bietet u.a. die Möglichkeit:<br/>- sich über den Antragstatus und die Berechnungsgrundlage für den eigenen Kindergeldbezug zu informieren<br/>- Ihre persönlichen Daten online zu ändern, z. B. Ihre Adresse<br/>- für Kunden der Familienkasse Änderungen vollständig papierlos zu übermitteln."},
|
||||
"address": "https://www.arbeitsagentur.de/npa",
|
||||
"homepage": "https://www.arbeitsagentur.de/",
|
||||
"phone": "+49 911/179-0",
|
||||
"email": "Zentrale@arbeitsagentur.de ",
|
||||
"postalAddress": "Bundesagentur für Arbeit<br/>Regensburger Straße 104<br/>90478 Nürnberg",
|
||||
"category": "other",
|
||||
"tcTokenUrl" : "",
|
||||
"clientUrl" : "https://formular.arbeitsagentur.de/eantrag/fallinfo-npa.page",
|
||||
"subjectUrls": ["https://formular.arbeitsagentur.de"]
|
||||
},
|
||||
{
|
||||
"exclude": ["ios"],
|
||||
"shortName": {"" : "Bundestag ePetition"},
|
||||
"longDescription": {"": "Mit der Online-Ausweisfunktion des Personalausweises können Sie sich einfach und sicher am Petitionsportal des Deutschen Bundestages<br/>- registrieren,<br/>- eine Petition einreichen sowie<br/>- eine Petition mitzeichnen."},
|
||||
"address": "https://epetitionen.bundestag.de/epet/anmelden.html",
|
||||
"homepage": "http://www.bundestag.de/",
|
||||
"phone": "+49 30 227-35257",
|
||||
"email": "post.pet@bundestag.de",
|
||||
"postalAddress": "Sekretariat des Petitionsausschusses<br/>Platz der Republik 1<br/>11011 Berlin",
|
||||
"category": "citizen",
|
||||
"tcTokenUrlInfo" : "TcToken URL requires valid dynamic request id.",
|
||||
"subjectUrls": ["https://epetitionen.bundestag.de"]
|
||||
},
|
||||
{
|
||||
"exclude": ["ios"],
|
||||
"shortName": {"" : "Bürgerantrag Bremen"},
|
||||
"longDescription": {"": "Mit der Online-Ausweisfunktion können Sie im Bundesland Bremen Bürgeranträge elektronisch mitzeichnen oder Unterschriften für Ihren eigenen Bürgerantrag sammeln. Mit nur 5.000 Mitzeichnerinnen und Mitzeichnern – egal ob online oder auf Papier – können Sie Anträge direkt in den Bremische Bürgerschaft (Landtag) einbringen. Für die Stadtbürgerschaft Bremen genügen sogar 4.000 Unterschriften."},
|
||||
"address": "https://www.buergerantrag.bremen.de",
|
||||
"homepage": "http://www.bremische-buergerschaft.de/",
|
||||
"phone": "",
|
||||
"email": "webmaster@buergerschaft.bremen.de",
|
||||
"postalAddress": "",
|
||||
"category": "citizen",
|
||||
"tcTokenUrlInfo" : "TcToken URL requires valid dynamic request id.",
|
||||
"subjectUrls": ["https://servicekonto.bremen.de"]
|
||||
},
|
||||
{
|
||||
"shortName": {"" : "Bürgerdienste der Stadt Münster"},
|
||||
"longDescription": {"": "Die Stadt Münster bietet auf ihrer Webseite eine Reihe von Online-Diensten an. Dort können Sie mit der Online-Ausweisfunktion unter anderem:<br/>- eine Personenstandsurkunde bestellen,<br/>- Ihr Wunschkennzeichen beantragen,<br/>- geografische Karten bestellen,<br/>- Elektroschrott zur Abholung anmelden,<br/>- eine Erklärung zum Elterneinkommen für die Festsetzung des Elternbeitrags für die Kindertagesbetreuung abgeben,<br/>- eine Sondernutzungserlaubnis für private Baumaßnahmen an öffentlichen Straßen beantragen,<br/>- eine Großanlage mit zentraler Trinkwassererwärmung anzeigen,<br/>- einen Fahrradfund melden,<br/>- ein Reitkennzeichen beantragen,<br/>- Mietspiegel-Broschüren bestellen."},
|
||||
"address": "https://www.stadt-muenster.de/rathaus/online-dienste.html",
|
||||
"homepage": "http://www.muenster.de/",
|
||||
"phone": "+49 251/4 92-0",
|
||||
"email": "stadtverwaltung@stadt-muenster.de",
|
||||
"postalAddress": "Stadt Münster<br/>48127 Münster",
|
||||
"category": "citizen",
|
||||
"tcTokenUrlInfo" : "TcToken URL requires valid dynamic request id.",
|
||||
"subjectUrls": []
|
||||
},
|
||||
{
|
||||
"exclude": ["ios"],
|
||||
"shortName": {"" : "Bürgerportal Baden-Württemberg"},
|
||||
"longDescription": {"": "Das Bürgerportal ,mein service-bw' bietet Bürgerinnen und Bürgern mit dem Personalausweis praktische Anwendungen für die Online-Ausweisfunktion. Das Portal bietet seinen Nutzern unter anderem:<br/>- sicheres Registrieren und Anmelden, um Behördengänge im Internet zu erledigen<br/>- verschlüsselte Ablage persönlicher Daten und Dateien in einem Datenspeicher im Internet, dem sogenannten Dokumentensafe<br/>- orts- und zeitunabhängiger Zugang zu den Daten im Dokumentensafe sowie die Möglichkeit, diese elektronisch an Behörden weiterzuleiten (z. B. für eine Gewerbeanmeldung)."},
|
||||
"address": "http://service-bw.de/zfinder-bw-web/welcome.do?showMsbwDetails=1",
|
||||
"homepage": "https://www.service-bw.de/",
|
||||
"phone": "",
|
||||
"email": "service-bw@im.bwl.de",
|
||||
"postalAddress": "Ministerium für Inneres, Digitalisierung und Migration Baden-Württemberg<br/>Willy-Brandt-Straße 41<br/>70173 Stuttgart",
|
||||
"category": "citizen",
|
||||
"tcTokenUrlInfo" : "Unable to locate URL",
|
||||
"subjectUrls": ["https://eid.service-bw.de"]
|
||||
},
|
||||
{
|
||||
"shortName": {"" : "Bürgerportal Rheinland Pfalz"},
|
||||
"longDescription": {"": "Über 80% der Meldebehörden und über 90% der Standesämter in Rheinland-Pfalz bieten Ihnen über das Portal www.rlpdirekt.de Verwaltungsleistungen mit der Online-Ausweisfunktion an, für die Sie nicht mehr zur Behörde gehen müssen, z. B.:<br/>- Kfz abmelden<br/>- Führungszeugnis beantragen,<br/>- Meldebescheinigung beantragen,<br/>- Aufenthaltsbescheinigung beantragen,<br/>- Übermittlungssperre einrichten,<br/>- Auskunft aus dem Gewerbezentralregister beantragen,<br/>- Beurkundung im Personenstandswesen beantragen.<br/>Welche Dienste in Ihrer Kommune mit der Online-Ausweisfunktion genutzt werden können, erfahren Sie, wenn Sie auf dem Portal unter \"Stadt/Ort\" Ihren Wohnort eingeben."},
|
||||
"address": "http://www.rlpdirekt.de/rheinland-pfalz",
|
||||
"homepage": "http://www.rlpdirekt.de/rheinland-pfalz/",
|
||||
"phone": "+49 6131 / 6277-0",
|
||||
"email": "support@kommwis.de",
|
||||
"postalAddress": "KommWis GmbH<br/>Gesellschaft für Kommunikation und Wissenstransfer mbH<br/>Hindenburgplatz 3<br/>55118 Mainz",
|
||||
"category": "citizen",
|
||||
"tcTokenUrlInfo" : "PLZ required",
|
||||
"subjectUrls": []
|
||||
},
|
||||
{
|
||||
"exclude": ["ios"],
|
||||
"shortName": {"" : "Bürgerservice-Portal Kreis Herford"},
|
||||
"longName": {"" : "Bürgerservice-Portal Kreis Herford"},
|
||||
"shortDescription": {"": "Anträge an die Kreisverwaltung Herford online erfassen."},
|
||||
"longDescription": {"": "In unserem Bürgerservice-Portal können Sie Anträge an die Kreisverwaltung Herford online erfassen und direkt zur weiteren Bearbeitung an die zuständigen Stellen übermitteln."},
|
||||
"address": "https://www.buergerserviceportal.nrw/krz/lkrherford",
|
||||
"homepage": "https://www.kreis-herford.de/",
|
||||
"phone": "+49 5223/988 - 500",
|
||||
"email": "portal@kreis-herford.de",
|
||||
"postalAddress": "Kreis Herford<br/>Amtshausstraße 3<br/>32051 Herford",
|
||||
"image": "KreisHerford_image.jpg",
|
||||
"icon": "KreisHerford_icon.png",
|
||||
"category": "citizen",
|
||||
"tcTokenUrlInfo" : "TcToken URL requires valid dynamic request id.",
|
||||
"subjectUrls": ["https://www.buergerserviceportal.nrw"]
|
||||
},
|
||||
{
|
||||
"exclude": ["ios"],
|
||||
"shortName": {"" : "Bürgerservice-Portal Kreis Minden-Lübbecke"},
|
||||
"longName": {"" : "Bürgerservice-Portal Kreis Minden-Lübbecke"},
|
||||
"shortDescription": {"": "Anträge an den Kreis Minden-Lübbecke online erfassen."},
|
||||
"longDescription": {"": "In unserem Portal können Sie Ihren Antrag an den Kreis Minden-Lübbecke direkt online erfassen und elektronisch übermitteln."},
|
||||
"address": "https://www.buergerserviceportal.nrw/krz/mindenluebbecke",
|
||||
"homepage": "http://www.minden-luebbecke.de/",
|
||||
"phone": "+49 571 807-0",
|
||||
"email": "info@minden-luebbecke.de",
|
||||
"postalAddress": "Kreis Minden-Lübbecke<br/>Portastraße 13<br/>32423 Minden",
|
||||
"image": "KreisMindenLuebbeke_image.jpg",
|
||||
"icon": "KreisMindenLuebbeke_icon.png",
|
||||
"category": "citizen",
|
||||
"tcTokenUrlInfo" : "TcToken URL requires valid dynamic request id.",
|
||||
"subjectUrls": ["https://www.buergerserviceportal.nrw"]
|
||||
},
|
||||
{
|
||||
"exclude": ["ios"],
|
||||
"shortName": {"" : "Bürgerservice-Portal Stadt Lage"},
|
||||
"longName": {"" : "Bürgerservice-Portal Stadt Lage"},
|
||||
"shortDescription": {"": "Anträge online erfassen und an die Verwaltung weiterleiten."},
|
||||
"longDescription": {"": "Das Bürgerservice-Portal bietet die Möglichkeit, Anträge an die Verwaltung der Stadt Lage online zu erfassen und elektronisch zur weiteren Bearbeitung weiterzuleiten."},
|
||||
"address": "https://www.buergerserviceportal.nrw/krz/lage",
|
||||
"homepage": "http://www.lage.de/",
|
||||
"phone": "+49 5232/601300",
|
||||
"email": "Buergerbuero@lage.de",
|
||||
"postalAddress": "Bürgerbüro Lage<br/>Bergstraße 21<br/>32791 Lage",
|
||||
"image": "StadtLage_image.jpg",
|
||||
"icon": "StadtLage_icon.png",
|
||||
"category": "citizen",
|
||||
"tcTokenUrlInfo" : "TcToken URL requires valid dynamic request id.",
|
||||
"subjectUrls": ["https://www.buergerserviceportal.nrw"]
|
||||
},
|
||||
{
|
||||
"exclude": ["ios"],
|
||||
"shortName": {"" : "Bürgerservice-Portal Stadt Norderstedt"},
|
||||
"longDescription": {"": "In Norderstedt können Sie mit der Online-Ausweisfunktion über das Bürgerservice-Portal folgende Bürgerdienste nutzen:<br/>- Meldebestätigung<br/>- Aufenthaltsbescheinigung<br/>- Übermittlungssperren<br/>- Umzug innerhalb der Stadt<br/>- Voranzeige einer Anmeldung<br/>- Briefwahlunterlagen<br/>- Führungszeugnis<br/>Darüber hinaus können Sie Ihr persönliches Bürgerkonto einrichten. Nach Einrichtung des Bürgerkontos werden die bei einer Nutzung des Bürgerservice-Portals notwendigen persönlichen Daten komfortabel aus Ihrem Bürgerkonto übernommen. Damit sparen Sie Zeit und erleichtern den Behörden die Bearbeitung Ihres Antrags."},
|
||||
"address": "https://norderstedt.de/digital",
|
||||
"homepage": "https://www.norderstedt.de/",
|
||||
"phone": "+49 40 - 535 95-0 ",
|
||||
"email": "info@norderstedt.de",
|
||||
"postalAddress": "Stadt Norderstedt<br/>Rathausallee 50<br/>22846 Norderstedt",
|
||||
"category": "citizen",
|
||||
"tcTokenUrlInfo" : "TcToken URL requires valid dynamic request id.",
|
||||
"subjectUrls": ["https://sh.buergerserviceportal.de"]
|
||||
},
|
||||
{
|
||||
"exclude": ["ios"],
|
||||
"shortName": {"" : "Bürgerservice-Portal Wiesbaden"},
|
||||
"longDescription": {"": "In Wiesbaden können Sie mit der Online-Ausweisfunktion über das Bürgerservice-Portal<br/>- Briefwahlunterlagen,<br/>- Meldebestätigungen,<br/>- Aufenthaltsbescheinigungen,<br/>- Übermittlungssperren,<br/>- Führungszeugnisse und<br/>- Auskünfte aus dem Gewerbezentralregister beantragen."},
|
||||
"address": "https://www.buergerserviceportal.de/hessen/wiesbaden",
|
||||
"homepage": "http://www.wiesbaden.de/",
|
||||
"phone": "+49 611 / 31 - 8300",
|
||||
"email": "buergeramt@wiesbaden.de",
|
||||
"postalAddress": "Postfach 3920<br/>65029 Wiesbaden",
|
||||
"category": "citizen",
|
||||
"tcTokenUrlInfo" : "TcToken URL requires valid dynamic request id.",
|
||||
"subjectUrls": ["https://www.buergerserviceportal.de"]
|
||||
},
|
||||
{
|
||||
"exclude": ["ios"],
|
||||
"shortName": {"" : "Bürgerservice-Portale der bayerischen Kommunen"},
|
||||
"longDescription": {"": "Das BayernPortal ist das zentrale Verwaltungsportal für den Freistaat Bayern und die bayerischen Kommunen.<br/>Es bietet Ihnen eine einheitliche Anlaufstelle sowie einen einheitlichen Zugang zu den staatlichen und kommunalen Verwaltungsdienstleistungen in Bayern. Sie erreichen darüber mehr als 150 Online-Dienstleistungen, mehr als 2.000 Fachdatenbanken, über 2.500 Formulare und Merkblätter sowie mehr als 20.000 Ansprechpartnerinnen und Ansprechpartner bei Behörden.<br/>Über das BayernPortal können Sie sich zudem ein Servicekonto einrichten, das BayernID genannt wird und mit dem Sie die Verwaltungsdienstleistungen aller angeschlossenen Kommunen und des Freistaats Bayern einfach und sicher nutzen können. Die Einrichtung Ihrer BayernID und die Anmeldung an diesem persönlichen Servicekonto können Sie auch mit der Online-Ausweisfunktion vornehmen.<br/>Ihre in Ihrem Servicekonto gespeicherten Daten werden automatisch in Ihre Anträge übernommen. Dadurch sparen Sie Zeit und erleichtern der Behörde die Bearbeitung Ihres Anliegens.<br/>In Verbindung mit dem Bayerischen E-Government Gesetz bietet Ihnen die BayernID die Möglichkeit, die in vielen Fällen erforderliche Schriftform zu ersetzen und damit Ihre Anträge ohne handschriftliche Unterschrift, d. h. vollständig online abzuwickeln. Sie müssen nicht mehr zur Behörde gehen oder Unterlagen per Post senden."},
|
||||
"address": "https://www.buergerserviceportal.de/bayern/classic/",
|
||||
"homepage": "http://www.freistaat.bayern/",
|
||||
"phone": "+49 (0)89 12 22 20",
|
||||
"email": "direkt@bayern.de",
|
||||
"postalAddress": "Postfach 22 00 03<br/>80535 München",
|
||||
"category": "citizen",
|
||||
"tcTokenUrlInfo" : "TcToken URL requires valid dynamic request id.",
|
||||
"subjectUrls": ["https://www.buergerserviceportal.de"]
|
||||
},
|
||||
{
|
||||
"exclude": ["ios"],
|
||||
"shortName": {"" : "CosmosDirekt Kundenportal meinCosmosDirekt"},
|
||||
"longDescription": {"": "Mit der Online-Ausweisfunktion des Personalausweises können Sie sich einfach und sicher am Kundenportal ,mein Cosmos-Direkt' registrieren und anmelden. Im Portal haben Sie die Möglichkeit Ihre Versicherungen zu verwalten. Sie können online einen Antrag für ein Tagesgeldkonto stellen oder auch schnell und einfach Ihre persönlichen Daten, z.B. Ihre Adresse, ändern."},
|
||||
"address": "https://www.cosmosdirekt.de/services/mcd-info",
|
||||
"homepage": "https://www.cosmosdirekt.de/",
|
||||
"phone": "+49 681-9 66 68 00",
|
||||
"email": "info@cosmosdirekt.de",
|
||||
"postalAddress": "CosmosDirekt<br/>66101 Saarbrücken",
|
||||
"image": "CosmosDirekt_image.jpg",
|
||||
"icon": "CosmosDirekt_icon.png",
|
||||
"category": "insurance",
|
||||
"tcTokenUrl" : "https://www.cosmosdirekt.de/nPa/IdentifizierenNPA?back_url=https://www.cosmosdirekt.de/meincosmosdirekt-registrierung/*ident=1",
|
||||
"subjectUrls": ["https://www.cosmosdirekt.de"]
|
||||
},
|
||||
{
|
||||
"exclude": ["ios"],
|
||||
"shortName": {"" : "d.velop – foxdox.de: Dokumente sicher ablegen"},
|
||||
"longDescription": {"": "Dokumente, Verträge, Reiseunterlagen, Bilder und vieles mehr können Sie einfach in Ihren persönlichen foxdox-Account hochladen. <br/>Sie melden sich mit der Online-Ausweisfunktion an und können von überall und jederzeit auf Ihre Dokumentenablage zugreifen, z. B. um sie innerhalb der Familie, Ihren Kollegen oder auch Ihrem Steuerberater zur Verfügung zu stellen. <br/>Quittungen und Belege können Sie einfach fotografieren oder scannen, hochladen und sicher in Ihrem foxdox-Account mit übersichtlichem Ordner-System speichern. Eine separate Ablage oder Kopien sind nicht mehr notwendig. Alle Daten liegen sicher und verschlüsselt in einem Rechenzentrum in Deutschland.<br/>Ein Standard-Account ist kostenfrei erhältlich."},
|
||||
"address": "https://mein.foxdox.de/",
|
||||
"homepage": "https://www.d-velop.de/foxdox/foxdox-home",
|
||||
"phone": "+49 (0) 2542 9307-0",
|
||||
"email": "support@foxdox.de",
|
||||
"postalAddress": "d.velop business services GmbH<br/>Schildarpstraße 6-8<br/>48712 Gescher",
|
||||
"category": "other",
|
||||
"tcTokenUrl" : "https://mein.foxdox.de/npa_login?action=gettctoken&next=/documents",
|
||||
"subjectUrls": ["https://mein.foxdox.de"]
|
||||
},
|
||||
{
|
||||
"exclude": ["ios"],
|
||||
"shortName": {"" : "Datev - Arbeitnehmer online / Lohn- und Gehaltsabrechnung"},
|
||||
"longDescription": {"": "Nach einmaliger Freischaltung durch den Arbeitgeber erhalten Sie Ihren persönlichen Aktivierungscode per Post. Mit dem Aktivierungscode registrieren Sie sich an dem Portal „DATEV Arbeitnehmer online“, dazu können Sie u.a. die Online-Ausweisfunktion nutzen. Danach können Sie jederzeit Ihre Brutto/Netto-Abrechnungen, Sozialversicherungsnachweise und Lohnsteuerbescheinigungen online abrufen. Sie haben dadurch jederzeit und überall einen schnellen Überblick über Ihre gesamten Lohn- und Gehaltsdokumente. "},
|
||||
"address": "https://www.datev.de/ano/",
|
||||
"homepage": "https://www.datev.de",
|
||||
"phone": "+49 800 3283825",
|
||||
"email": "info@datev.de",
|
||||
"postalAddress": "DATEV eG<br/>90329 Nürnberg",
|
||||
"category": "other",
|
||||
"tcTokenUrlInfo" : "Address is faulty",
|
||||
"subjectUrls": ["https://secure6.datev.de"]
|
||||
},
|
||||
{
|
||||
"exclude": ["ios"],
|
||||
"shortName": {"" : "Deutsche Post AG - POSTIDENT Verfahren"},
|
||||
"longName": {"" : "Deutsche Post AG - POSTIDENT Verfahren"},
|
||||
"shortDescription": {"": "Durch das Onlineverfahren POSTIDENT mit dem neuem Personalausweis, können Sie sich schnell und einfach online mit Ihrem neuen Personalausweis identifizieren."},
|
||||
"longDescription": {"": "Durch das Onlineverfahren POSTIDENT mit dem neuem Personalausweis, können Sie sich schnell und einfach online mit Ihrem neuen Personalausweis z.B. zur Eröffnung eines Tagesgeldkontos identifizieren: Sie werden hierzu von Ihrer Bank automatisch auf das POSTIDENT Portal geleitet und können sich mithilfe Ihres neuen Personalausweises mit freigeschalteter Online-Ausweisfunktion, einem Kartenlesegerät sowie der AusweisApp2 in wenigen Minuten sicher identifizieren."},
|
||||
"address": "https://www.deutschepost.de/de/p/postident/identifizierungsverfahren/postident-npa.html",
|
||||
"homepage": "https://www.deutschepost.de/de/p/postident.html",
|
||||
"email": "info@deutschepost.de",
|
||||
"postalAddress": "Deutsche Post AG<br/>Charles-de-Gaulle-Str. 20<br/>53113 Bonn",
|
||||
"image": "DeutschePost_image.jpg",
|
||||
"icon": "DeutschePost_icon.png",
|
||||
"category": "finance"
|
||||
},
|
||||
{
|
||||
"shortName": {"" : "Deutsche Rentenversicherung"},
|
||||
"longDescription": {"": "Mit der Online-Ausweisfunktion im neuen Personalausweis können Sie ...<br/>- auf Informationen Ihres Rentenkontos im Kundenbereich ,eService' sicher zugreifen (z. B. Versicherungsverlauf und Beitragsrechnung),<br/>- Ihre Rentenauskunft online abrufen,<br/>- schnell und einfach Ihre persönlichen Daten ändern (z. B. Ihre Adresse und Bankverbindung)."},
|
||||
"address": "https://www.eservice-drv.de/OnlineDiensteWeb/init.do?npa=true",
|
||||
"homepage": "http://www.deutsche-rentenversicherung.de/",
|
||||
"phone": "+49 800 100 048070",
|
||||
"email": "Online-Dienste@deutsche-rentenversicherung.de",
|
||||
"postalAddress": "Ruhrstraße 2<br/>10709 Berlin",
|
||||
"category": "citizen",
|
||||
"tcTokenUrlInfo" : "TcToken URL requires valid dynamic request id.",
|
||||
"subjectUrls": ["https://www.eservice-drv.de"]
|
||||
},
|
||||
{
|
||||
"exclude": ["ios"],
|
||||
"shortName": {"" : "eAntrag der Investitionsbank Berlin (IBB)"},
|
||||
"longDescription": {"": "Im Kundenportal der Investitionsbank Berlin können Sie verschiedene Förder-Produkte durchgängig elektronisch beantragen:<br/>- Berlin Kapital<br/>- IBB Familienbaudarlehen<br/>- IBB Wohnraum modernisieren<br/>- KMU-Fonds über 25.000 Euro<br/>- Liquiditätshilfen BERLIN<br/>- Mikrokredit aus dem KMU-Fonds<br/>- Pro FIT (Projektvorschlagsphase)<br/>- Pro FIT (Frühphasenfinanzierung)<br/>Für die rechtsverbindliche, fristwahrende Antragstellung der Produkte<br/>- GRW<br/>- Innovationsassistent<br/>- PFI - Gemeinschaft<br/>- PFI - KMU<br/>- PFI - Netzwerk<br/>- ProFIT (Projektantragsphase)<br/>gilt aus verwaltungsrechtlichen Anforderungen das Schriftformerfordernis: Die elektronische Antragstellung ist zwingend nachträglich schriftlich zu bestätigen.<br/>Mit der Online-Ausweisfunktion können Sie sich bequem und sicher elektronisch legitimieren und müssen dadurch Ihre Identität weder per Postident-Verfahren noch persönlich vor Ort nachweisen.<br/>Nach Ihrer Legitimierung können Sie über eine persönliche Dokumentenablage die rechtsverbindliche Kommunikation mit Ihrem IBB-Ansprechpartner online – und unabhängig von Öffnungszeiten oder Postwegen – über das Kundenportal erledigen."},
|
||||
"address": "https://www.ibb.de/de/service/eantrag/eantrag.html",
|
||||
"homepage": "http://www.ibb.de/",
|
||||
"phone": "+49 30 / 2125 - 0",
|
||||
"email": "info@ibb.de",
|
||||
"postalAddress": "Investitionsbank Berlin (IBB)<br/>Bundesallee 210<br/>10719 Berlin",
|
||||
"category": "finance",
|
||||
"tcTokenUrlInfo" : "Registration required.",
|
||||
"subjectUrls": []
|
||||
},
|
||||
{
|
||||
"exclude": ["ios"],
|
||||
"shortName": {"" : "easy Login - Der Zugang für Finanz- & Versicherungsvermittler"},
|
||||
"address": "http://www.easy-login.de",
|
||||
"homepage": "http://www.easy-login.de",
|
||||
"phone": "+49 921 75758-555",
|
||||
"email": "info@easy-login.de",
|
||||
"postalAddress": "easy Login GmbH<br/>Bindlacher Str. 4<br/>95448 Bayreuth",
|
||||
"category": "insurance",
|
||||
"tcTokenUrlInfo" : "TcToken URL requires valid dynamic request id.",
|
||||
"subjectUrls": ["https://easy-login.vdg-portal.de"]
|
||||
},
|
||||
{
|
||||
"exclude": ["ios"],
|
||||
"shortName": {"" : "ELSTER"},
|
||||
"longName": {"" : "ELSTER - Die elektronische Steuererklärung"},
|
||||
"shortDescription": {"": "Abwicklung der Steuererklärungen und -anmeldungen über das Internet."},
|
||||
"longDescription": {"": "ELSTER bietet im Rahmen der Registrierung, welche Voraussetzung für die Abwicklung der Steuererklärungen und Steueranmeldungen über das Internet ist, die Möglichkeit der Nutzung der Online-Ausweisfunktion."},
|
||||
"address": "https://www.elster.de",
|
||||
"homepage": "https://www.elster.de",
|
||||
"phone": "+49 89 9991 - 0",
|
||||
"email": "info@elster.de",
|
||||
"postalAddress": "Bayerisches Landesamt für Steuern - Dienststelle München<br/>80284 München",
|
||||
"image": "elster_image.png",
|
||||
"icon": "elster_icon.png",
|
||||
"category": "citizen",
|
||||
"tcTokenUrlInfo" : "Registration required.",
|
||||
"subjectUrls": []
|
||||
},
|
||||
{
|
||||
"exclude": ["ios"],
|
||||
"shortName": {"" : "ERGO Direkt Lebensversicherung AG"},
|
||||
"address": "https://ergodirekt.de/de/persoenlicherbereich.html#login",
|
||||
"homepage": "https://ergodirekt.de",
|
||||
"phone": "+49 800 / 444 1000",
|
||||
"email": "beratung@ergodirekt.de",
|
||||
"postalAddress": "Karl-Martell-Straße 60<br/>90344 Nürnberg",
|
||||
"category": "insurance",
|
||||
"subjectUrls": ["https://ergodirekt.de"]
|
||||
},
|
||||
{
|
||||
"shortName": {"" : "Feinstaubplakette beantragen"},
|
||||
"longDescription": {"": "In Berlin können Sie eine Feinstaubplakette für alle Kraftfahrzeuge mit der Online-Ausweisfunktion beantragen. Der Antrag ist unabhängig davon, ob Ihr Fahrzeug in Berlin, bei einer anderen deutschen Zulassungsbehörde, oder im Ausland zugelassen ist.<br/>Ihre persönlichen Daten werden verschlüsselt übertragen. Sie müssen Ihre Angaben nicht per Hand eingeben und die Behörde erhält zuverlässig korrekte Informationen, die rasch weiterverarbeitet werden können.<br/>Auf der Internet-Seite Umweltzonen und Feinstaubplaketten der Senatsverwaltung für Stadtentwicklung und Umwelt können Sie sich vorab informieren, welche Plakette Ihrem Fahrzeug zugeteilt werden kann."},
|
||||
"address": "http://www.berlin.de/labo/fahrzeuge/kfz-zulassung/feinstaubplakette/shop.85047.php",
|
||||
"homepage": "https://www.berlin.de",
|
||||
"phone": "+49 30 90269 – 0",
|
||||
"email": "",
|
||||
"postalAddress": "Direktorin Landesamt für Bürger- und Ordnungsangelegenheiten<br/>Friedrichstr. 219<br/>10958 Berlin",
|
||||
"category": "other",
|
||||
"tcTokenUrlInfo" : "Car lizence number required",
|
||||
"subjectUrls": []
|
||||
},
|
||||
{
|
||||
"exclude": ["ios", "android"],
|
||||
"shortName": {"" : "Führungszeugnis und Auskunft aus dem Gewerbezentralregister"},
|
||||
"longDescription": {"": "Sie benötigen ein Führungszeugnis oder eine Auskunft aus dem Gewerbezentralregister? Mit dem Personalausweis im Scheckkartenformat können Sie einen Behördengang sparen. Weitere Voraussetzungen sind die freigeschaltete Online-Ausweisfunktion und ein passendes Kartenlesegerät für Ihren Computer. Auf diese Weise kann eindeutig identifiziert werden, wer den Antrag stellt. Ausländische Mitbürger, die keinen deutschen Personalausweis besitzen, können in gleicher Weise die entsprechende Funktion ihres elektronischen Aufenthaltstitels nutzen.<br/>Neben Führungszeugnissen können auch Auskünfte aus dem Gewerbezentralregister über das neue Online-Portal des BfJ beantragt werden. Solche Auskünfte benötigen Unternehmen, die sich in Ausschreibungsverfahren um öffentliche Aufträge bewerben, recht häufig. Auch hier kann das Online-Verfahren den Aufwand erheblich senken."},
|
||||
"address": "https://www.fuehrungszeugnis.bund.de/",
|
||||
"homepage": "https://www.bundesjustizamt.de",
|
||||
"phone": "+49 228 99 410-40",
|
||||
"email": "poststelle@bfj.bund.de",
|
||||
"postalAddress": "Bundesamt für Justiz<br/>53094 Bonn",
|
||||
"category": "citizen",
|
||||
"tcTokenUrlInfo" : "TcToken URL requires valid dynamic request id.",
|
||||
"subjectUrls": ["https://www.fuehrungszeugnis.bund.de/ffw"]
|
||||
},
|
||||
{
|
||||
"shortName": {"" : "Halterauskunft zu einem KFZ beantragen"},
|
||||
"longDescription": {"": "In Berlin können Sie für Fahrzeuge, die bei der Zulassungsbehörde Berlin registriert sind, mit der Online-Ausweisfunktion eine Halterauskunft beantragen.<br/>Ihre persönlichen Daten werden verschlüsselt übertragen. Sie müssen Ihre Angaben nicht per Hand eingeben und die Behörde erhält zuverlässig korrekte Informationen, die rasch weiterverarbeitet werden können.<br/>Bitte beachten Sie, dass eine Halterauskunft nur erteilt werden kann, wenn diese der Geltendmachung oder Abwehr von Rechtsansprüchen dient, die sich aus der Teilnahme am Straßenverkehr ergeben, oder wenn sie zur Erhebung einer Privatklage aufgrund im Straßenverkehr begangener Verstöße benötigt wird."},
|
||||
"address": "https://www.berlin.de/labo/mobilitaet/kfz-zulassung/halterauskunft/shop.86598.php",
|
||||
"homepage": "https://www.berlin.de",
|
||||
"phone": "+49 30 90269 – 0",
|
||||
"email": "",
|
||||
"postalAddress": "Direktorin Landesamt für Bürger- und Ordnungsangelegenheiten<br/>Friedrichstr. 219<br/>10958 Berlin",
|
||||
"category": "other",
|
||||
"tcTokenUrlInfo" : "Car lizence number required.",
|
||||
"subjectUrls": []
|
||||
},
|
||||
{
|
||||
"exclude": ["ios"],
|
||||
"shortName": {"" : "Hamburg Service Online-Bürgerdienste"},
|
||||
"longDescription": {"": "Über das Portal ,HamburgService' finden Sie auf einen Blick alle Online-Dienste der Freien und Hansestadt Hamburg. Für die Dienste, die mit sensiblen Daten arbeiten (Dienste der Sicherheitsstufe 2), müssen Sie sich nach der Registrierung einmalig identifizieren. Sie können dazu die Online-Ausweisfunktion Ihres Personalausweises nutzen. Eine persönliche Identifizierung in einem Kundenzentrum der Stadt Hamburg ist dann nicht mehr nötig."},
|
||||
"address": "https://gateway.hamburg.de/HamburgGateway/FVP/Application/Index.aspx",
|
||||
"homepage": "http://www.hamburg.de/",
|
||||
"phone": "",
|
||||
"email": "dataporthamburggateway-service@dataport.de",
|
||||
"postalAddress": "Bürgermeister Olaf Scholz<br/>Rathausmarkt 1<br/>20095 Hamburg",
|
||||
"category": "citizen",
|
||||
"tcTokenUrlInfo" : "TcToken URL requires valid dynamic request id.",
|
||||
"subjectUrls": ["https://gateway.hamburg.de"]
|
||||
},
|
||||
{
|
||||
"exclude": ["ios"],
|
||||
"shortName": {"" : "HUK 24 AG - Registrierung für Servicebereich \"Meine HUK24\""},
|
||||
"longDescription": {"": "Die Registrierung am Kundenportal ,Meine HUK24' können Sie mit der Online-Ausweisfunktion im Personalausweis schnell und einfach selbst erledigen. Ihre Versicherung lässt sich damit komplett online verwalten: egal, ob Sie einen Vertrag abändern eine neue Versicherung abschließen, oder Ihre persönlichen Daten aktualisieren möchten – mit dem Personalausweis können Sie alles problemlos von Zuhause aus erledigen."},
|
||||
"address": "https://www.huk24.de/",
|
||||
"homepage": "https://www.huk24.de/",
|
||||
"phone": "+49 95 61/96-13 38",
|
||||
"email": "info@huk24.de",
|
||||
"postalAddress": "HUK24 AG<br/>Willi-Hussong-Str. 2<br/>96440 Coburg",
|
||||
"category": "insurance",
|
||||
"tcTokenUrlInfo" : "Registration required",
|
||||
"subjectUrls": ["https://www.huk24.de"]
|
||||
},
|
||||
{
|
||||
"shortName": {"" : "Kreis Borken"},
|
||||
"longName": {"" : "Kreis Borken - Kfz-Abmeldung Internet"},
|
||||
"shortDescription": {"": "Authentisierung für internetbasierte Kfz-Abmeldung."},
|
||||
"longDescription": {"": "Für die internetbasierte Kfz-Abmeldung wird die eID-Funktionalität des neuen Personalausweises benötigt."},
|
||||
"address": "https://formulare-extern.de/administrationCenter/Form-Solutions/05554004-0001/eID/eIDMandatory?directlink=https%3A%2F%2Fformulare-extern.de%2Fmetaform%2FForm-Solutions%2Fsid%2Fassistant%2F55dc839be4b054042fb93dba%3FeIDComplete%3Dtrue",
|
||||
"homepage": "https://www.kreis-borken.de",
|
||||
"phone": "+49 2861 / 82 - 2059",
|
||||
"email": "zulassungsstelle@kreis-borken.de",
|
||||
"postalAddress": "Kfz-Zulassungsstelle Borken<br/>Burloer Str. 93<br/>46325 Borken",
|
||||
"image": "KreisBorken_image.png",
|
||||
"icon": "KreisBorken_icon.svg",
|
||||
"category": "citizen",
|
||||
"tcTokenUrlInfo" : "",
|
||||
"subjectUrls": []
|
||||
},
|
||||
{
|
||||
"exclude": ["ios"],
|
||||
"shortName": {"" : "ID-Safe des Landkreis Kitzingen"},
|
||||
"longDescription": {"": "Die Stadt Kitzingen bietet bei verschiedenen Bürgerdiensten die Nutzung der Online-Ausweisfunktion in Verbindung mit elektronischen Antragsformularen an:<br/>- Gewerbeanmeldung<br/>- Gewerbeummeldung<br/>- Gewerbeabmeldung<br/>- Fischereischein<br/>- Verkehrsrechtliche Anordnung<br/>- Sondernutzung<br/>- Parkerleichterung<br/>- Mängelmeldung"},
|
||||
"address": "https://www.buergerservice.org/ID-Safe-Kitzingen",
|
||||
"homepage": "http://www.kitzingen.de/",
|
||||
"phone": "+49 9321 / 928-0,",
|
||||
"email": "info@kitzingen.de",
|
||||
"postalAddress": "Landratsamt Kitzingen<br/>Herr Thomas Langhojer<br/>Kaiserstraße 4<br/>97318 Kitzingen",
|
||||
"category": "citizen",
|
||||
"tcTokenUrlInfo" : "Registration required",
|
||||
"subjectUrls": ["https://www.buergerservice.org"]
|
||||
},
|
||||
{
|
||||
"exclude": ["ios"],
|
||||
"shortName": {"" : "ID-Safe des Landkreis Ostallgäu"},
|
||||
"longDescription": {"": "Der Landkreis Ostallgäu bietet Ihnen bei verschiedenen Bürgerdiensten die Nutzung der Online-Ausweisfunktion in Verbindung mit elektronischen Antragsformularen an:<br/>- Bauantrag digital<br/>- Sperrmüll-Abholung<br/>- An-, Um- oder Abmeldung einer Abfalltonne<br/>- Antrag auf Dauergenehmigung und Feriengenehmigung für ein Segelboot oder Motorboot auf dem Forggensee<br/>Der Landkreis Ostallgäu bietet Ihnen außerdem einen ID-Safe an. Hier können Sie die Daten aus Ihrer Online-Ausweisfunktion hinterlegen und um weitere Kontaktdaten ergänzen. Anschließend können Sie die elektronischen Antragsformulare des Landkreises automatisch mit Ihren hinterlegten Daten befüllen. Dadurch vermeiden Sie Tippfehler und können die Bearbeitung Ihres Vorgangs beschleunigen.<br/>Darüber hinaus können Sie im Landkreis Ostallgäu über das bayerische Bürgerservice-Portal folgende Bürgerdienste online beantragen:<br/>- Fahrzeug-Anmeldung<br/>- Fahrzeug-Abmeldung<br/>- Feinstaubplakette<br/>- Wunschkennzeichen"},
|
||||
"address": "https://www.sixform.com/ID-safe",
|
||||
"homepage": "https://www.landkreis-ostallgaeu.de/",
|
||||
"phone": "+49 83 42 · 9 11 - 0",
|
||||
"email": "poststelle@lra-oal.bayern.de",
|
||||
"postalAddress": "Landkreis Ostallgäu<br/>Schwabenstraße 11<br/>87616 Marktoberdorf",
|
||||
"category": "citizen",
|
||||
"tcTokenUrlInfo" : "Registration required",
|
||||
"subjectUrls": ["https://www.sixform.com"]
|
||||
},
|
||||
{
|
||||
"exclude": ["ios"],
|
||||
"shortName": {"" : "ID-Safe des Landkreis Würzburg"},
|
||||
"address": "https://www.buergerservice.org/ID-Safe-Wuerzburg",
|
||||
"homepage": "http://www.landkreis-wuerzburg.de/startseite.phtml",
|
||||
"phone": "+49 931 8003-0 ",
|
||||
"email": "poststelle@lra-wue.bayern.de",
|
||||
"postalAddress": "Landratsamt Würzburg<br/>Zeppelinstraße 15<br/>97074 Würzburg",
|
||||
"category": "citizen",
|
||||
"tcTokenUrlInfo" : "Registration required",
|
||||
"subjectUrls": ["https://www.buergerservice.org"]
|
||||
},
|
||||
{
|
||||
"exclude": ["ios"],
|
||||
"shortName": {"" : "Identitätsprüfungen nach dem Signaturgesetz und dem Geldwäschegesetz"},
|
||||
"longDescription": {"": "Die identity Trust Management AG bietet Unternehmen die Möglichkeit, ihre Kunden schnell und sicher mit der Online-Ausweisfunktion zu identifizieren. <br/>Kunden der Kooperationspartner der identity Trust Management AG können die Identitätsprüfung nach dem Signaturgesetz und dem Geldwäschegesetz auch direkt über die Internetseite der identity Trust Management AG vornehmen."},
|
||||
"address": "https://www.identity.tm",
|
||||
"homepage": "https://www.identity.tm",
|
||||
"phone": "+49 211 68 77 3-0",
|
||||
"email": "kontakt@identity.tm",
|
||||
"postalAddress": "identity Trust Management AG<br/>Lierenfelder Straße 51<br/>40231 Düsseldorf",
|
||||
"category": "other",
|
||||
"tcTokenUrlInfo" : "Registration required",
|
||||
"subjectUrls": []
|
||||
},
|
||||
{
|
||||
"exclude": ["ios"],
|
||||
"shortName": {"" : "Kraftfahrt-Bundesamt - Registerauskunft"},
|
||||
"longDescription": {"": "Mit der Online-Ausweisfunktion können Sie beim Kraftfahrt-Bundesamt einfach und schnell eine Auskunft über Ihren Punktestand und die zu Ihrer Person gespeicherten Eintragungen im Fahreignungsregister (FAER) beantragen. Die erforderlichen Daten werden dann von Ihrem Personalausweis ausgelesen. Die Auskunft erhalten Sie innerhalb weniger Tage per Post."},
|
||||
"address": "https://www.kba-online.de/registerauskunft/app/registeranfrage.html",
|
||||
"homepage": "http://www.kba.de/",
|
||||
"phone": "+49 461 316-0",
|
||||
"email": "poststelle@kba.de",
|
||||
"postalAddress": "Kraftfahrt-Bundesamt <br/>Fördestraße 16<br/>24944 Flensburg",
|
||||
"category": "citizen",
|
||||
"tcTokenUrl" : "https://www.kba-online.de:443/registerauskunft/app/eidstart.html;jsessionid=HZFFDC4E848A794D83A1D3032252F3F905?ref=HZFFDC4E848A794D83A1D3032252F3F905",
|
||||
"tcTokenUrlInfo" : "TcToken URL contains dynamic request id but is accepted anyway.",
|
||||
"subjectUrls": ["https://www.kba-online.de/registerauskunft"]
|
||||
},
|
||||
{
|
||||
"exclude": ["ios"],
|
||||
"shortName": {"" : "Login Meine VBL"},
|
||||
"longDescription": {"": "Bei der VBL können Sie sich mit dem Personalausweis am Kundenportal ,Meine VBL' registrieren und anmelden. Dadurch entfällt der Postversand eines Freischaltcodes - Sie sparen Zeit. Im Kundenkonto können Sie Ihre Vertragsdaten und Ihre persönlichen Daten einsehen und weitere Online-Dienste nutzen, z. B.<br/>- Rentenantrag stellen,<br/>- Beitragserstattung beantragen,<br/>- Kontaktdaten ändern,<br/>- persönliche Mitteilungen von der VBL erhalten."},
|
||||
"address": "https://vbl.de/de/meine_vbl",
|
||||
"homepage": "https://vbl.de/",
|
||||
"phone": "+49 721 93 98 93 1",
|
||||
"email": "info@vbl.de",
|
||||
"postalAddress": "VBL. Kundenservice<br/>76240 Karlsruhe",
|
||||
"category": "other",
|
||||
"tcTokenUrlInfo" : "Registration required",
|
||||
"subjectUrls": ["https://www.vbl.de"]
|
||||
},
|
||||
{
|
||||
"exclude": ["ios"],
|
||||
"shortName": {"" : "LVM Versicherung - Kundenportal Meine LVM"},
|
||||
"longDescription": {"": "Mit der Online-Ausweisfunktion im Personalausweis können Sie sich nach der Registrierung durch Ihre LVM-Agentur sicher am Kundenportal ,Meine LVM' anmelden. Ihre Versicherung können Sie nun selbst verwalten und beispielsweise sämtliche Vertragsdaten online einsehen. Darüber hinaus ist es möglich über das Portal Versicherungsbescheinigungen anzufordern sowie schnell und einfach Ihre persönlichen Daten wie Adresse oder Bankverbindung zu ändern."},
|
||||
"address": "http://www.lvm.de/personalausweis",
|
||||
"homepage": "http://www.lvm.de/",
|
||||
"phone": "+49 251 702-0",
|
||||
"email": "info@lvm.de",
|
||||
"postalAddress": "LVM Versicherung<br/>48126 Münster",
|
||||
"category": "insurance",
|
||||
"tcTokenUrlInfo" : "Registration required",
|
||||
"subjectUrls": ["https://www.lvm.de"]
|
||||
},
|
||||
{
|
||||
"exclude": ["ios"],
|
||||
"shortName": {"" : "Mentana-Claimsoft AG - Registrierung beim De-Mail Dienst"},
|
||||
"address": "https://www.fp-demail.de/",
|
||||
"homepage": "https://www.fp-demail.de/",
|
||||
"phone": "+49 800-6368262",
|
||||
"email": "de-mail.info@mentana.de",
|
||||
"postalAddress": "Mentana-Claimsoft GmbH<br/>Trebuser-Str. 47 Haus 1<br/>D-15517 Fürstenwalde",
|
||||
"category": "other",
|
||||
"tcTokenUrlInfo" : "TcToken URL requires valid dynamic request id.",
|
||||
"subjectUrls": ["https://www.fp-demail.de"]
|
||||
},
|
||||
{
|
||||
"shortName": {"" : "OpenPGP-eID"},
|
||||
"longDescription": {"": "Durch die Verschlüsselung Ihrer Nachrichten mittels OpenPGP ist die Vertraulichkeit Ihrer Information gewährleistet. Aber kann ein Empfänger der Nachricht sicher sein, dass der Absender der ist, der er vorgibt zu sein? Die Antwortet lautet: Nein. Abhilfe schafft die Beglaubigung Ihres OpenPGP-Schlüssels durch eine Signatur. Sie benötigen hierfür einen Personalausweis bzw. elektronischen Aufenthaltstitel mit aktivierter Online-Ausweisfunktion. Diesen Dienst stellen wir im Auftrag des Bundesamtes für Sicherheit in der Informationstechnik (BSI) zur Verfügung."},
|
||||
"address": "https://pgp.governikus-eid.de/pgp/",
|
||||
"homepage": "https://www.governikus.de/",
|
||||
"phone": "+49 421 204 95-0",
|
||||
"email": "kontakt@governikus.com",
|
||||
"postalAddress": "Governikus GmbH & Co. KG<br/>Am Fallturm 9<br/>28359 Bremen",
|
||||
"category": "other",
|
||||
"tcTokenUrl" : "https://pgp.governikus-eid.de/pgp/EIDRequest",
|
||||
"subjectUrls": ["https://pgp.governikus-eid.de"]
|
||||
},
|
||||
{
|
||||
"shortName": {"" : "Techniker Krankenkasse"},
|
||||
"longDescription": {"": "Die Online-Ausweisfunktion des Personalausweises ermöglicht Ihnen die schnelle und sichere Registrierung am Kundenportal \"Meine TK\". Damit können Sie online verbindlich Anträge stellen und Ihre Unterlagen anfordern (z. B. eine neue Versichertenkarte). Außerdem lassen sich persönliche Daten wie Kontoverbindung oder Adresse selbstständig ändern und verwalten. Wenn Sie \"Meine TK\" mit der Online-Ausweisfunktion nutzen, sparen Sie Zeit und Aufwand."},
|
||||
"address": "https://www.tk.de/tk/118032",
|
||||
"homepage": "https://www.tk.de/",
|
||||
"phone": "+49 800 - 285 85 85",
|
||||
"email": "service@tk.de",
|
||||
"postalAddress": "Techniker Krankenkasse<br/>Bramfelder Straße 140<br/>22305 Hamburg",
|
||||
"category": "insurance",
|
||||
"tcTokenUrlInfo" : "Registration required",
|
||||
"subjectUrls": ["https://www.tk.de"]
|
||||
},
|
||||
{
|
||||
"exclude": ["ios"],
|
||||
"shortName": {"" : "Schufa – Auskunftsportal „Meine SCHUFA“"},
|
||||
"longDescription": {"": "Wenn Sie Ihre Bonität gegenüber Dritten z. B. für einen Mietvertrag, belegen müssen, benötigen Sie dazu in der Regel eine SCHUFA-Auskunft. Mit der Online-Ausweisfunktion können Sie sich einfach und sicher am Kundenportal „MeineSCHUFA“ registrieren. Ohne weitere Verzögerungen haben Sie nach Anmeldung am Portal die Möglichkeit Ihre Schufa-Auskunft direkt online abzurufen oder auf dem Postweg Ihren Geschäftspartnern zukommen zu lassen. Der Personalausweis erspart Ihnen hierbei unnötige Wartezeit und gewährleistet dennoch eine verlässliche Identifizierung."},
|
||||
"address": "https://www.meineschufa.de/index.php?site=30_2_1_pa#tabNPA",
|
||||
"homepage": "https://www.meineschufa.de",
|
||||
"phone": "+49 611 – 92780",
|
||||
"email": "meineSCHUFA@SCHUFA.de",
|
||||
"postalAddress": "SCHUFA Holding AG<br/>Postfach 10 25 66<br/>44725 Bochum",
|
||||
"category": "citizen",
|
||||
"tcTokenUrl" : "https://www.meineschufa.de/eID-Service-Connector-V2/createSamlRequest/Reg",
|
||||
"subjectUrls": ["https://www.meineschufa.de"]
|
||||
},
|
||||
{
|
||||
"shortName": {"" : "Selbstauskunft - „Meine Daten einsehen“"},
|
||||
"longDescription": {"": "Die AusweisApp2 verfügt über die Funktion \"Meine Daten einsehen\". Mit dieser Funktion können die auf dem Personalausweis bzw. dem elektronischen Aufenthaltstitel gespeicherten Daten ausgelesen und angezeigt werden.<br/>Sobald Sie die AusweisApp2 gestartet und ein geeignetes Kartenlesegerät angeschlossen haben, können Sie diese Funktion unter dem Menüpunkt \"Ausweisen\" aufrufen. Über voreingestellte Checkboxen können Sie steuern, ob Sie alle gespeicherten Daten oder nur spezielle Daten auslesen möchten.<br/>Nach Ihrer PIN-Eingabe und erfolgreicher Datenübertragung werden die von Ihnen festgelegten Daten in der AusweisApp2 dargestellt.<br/>Bitte beachten Sie, dass Sie für diesen Vorgang eine Internetverbindung benötigen. Dies hat folgenden Hintergrund: Für jedes Auslesen der Daten aus dem Personalausweis oder dem elektronischen Aufenthaltstitel muss gesetzlich der Zweck des Auslesevorgangs angegeben werden. Dieser Zweck wird Ihnen auf einem speziellen Zertifikat angezeigt (Berechtigungszertifikat). Diese Zertifikate werden individuell durch die Vergabestelle für Berechtigungszertifikate beim Bundesverwaltungsamt genehmigt. Damit Sie also jederzeit genau wissen, wer zu welchem Zweck einen Auslesevorgang startet, wird eine Internetverbindung zu einem vertrauenswürdigen Authentisierungsserver aufgebaut. Die Berechtigungszertifikate dienen Ihrem Schutz!"},
|
||||
"address": "https://www.ausweisapp.bund.de/ausweisapp2/ausprobieren-meine-daten-einsehen/",
|
||||
"homepage": "https://www.ausweisapp.bund.de/",
|
||||
"phone": "+49 1805 - 348743",
|
||||
"email": "support@ausweisapp.de",
|
||||
"postalAddress": "Governikus GmbH & Co. KG<br/>- im Auftrag des Bundesministeriums des Innern -<br/>Am Fallturm 9<br/>D-28359 Bremen",
|
||||
"image": "Selbstauskunft.jpg",
|
||||
"icon": "npa.svg",
|
||||
"category": "citizen",
|
||||
"tcTokenUrlInfo" : "https://www.autentapp.de/AusweisAuskunft/WebServiceRequesterServlet?mode=xml",
|
||||
"subjectUrls": ["https://www.autentapp.de"]
|
||||
},
|
||||
{
|
||||
"exclude": ["ios"],
|
||||
"shortName": {"" : "Service-Portal \"Auto\" Kreis Lippe"},
|
||||
"longName": {"" : "Service-Portal \"Auto\" Kreis Lippe"},
|
||||
"shortDescription": {"": "Das Service-Portal bietet Online-Dienste rund um die KFZ-Zulassung."},
|
||||
"longDescription": {"": "Im Service-Portal \"Auto\" können Sie Ihr Auto online abmelden. Weitere Angebote wie die komplette online KFZ-Wiederzulassung und -Zulassung sind im Aufbau."},
|
||||
"address": "https://www.buergerserviceportal.nrw/krz/lkrlippe",
|
||||
"homepage": "http://www.kreis-lippe.de/",
|
||||
"phone": "+49 5231/62-0",
|
||||
"email": "stva@kreis-lippe.de",
|
||||
"postalAddress": "Kreis Lippe<br/>Felix-Fechenbach-Straße 5<br/>32756 Detmold",
|
||||
"image": "KreisLippe_image.jpg",
|
||||
"icon": "KreisLippe_icon.png",
|
||||
"category": "citizen",
|
||||
"tcTokenUrlInfo" : "TcToken URL requires valid dynamic request id.",
|
||||
"subjectUrls": ["https://www.buergerserviceportal.nrw"]
|
||||
},
|
||||
{
|
||||
"shortName": {"" : "SkIDentity Service"},
|
||||
"longName": {"" : "SkIDentity Service"},
|
||||
"longDescription": {"": "SkIDentity unterstützt die Umsetzung der Cyber-Sicherheitsstrategie der Bundesregierung und macht den elektronischen Personalausweis im Internet sehr leicht und mobil nutzbar. Der SkIDentity-Dienst bietet „Mobile eID as a Service“ und leitet bei Bedarf aus elektronischen Ausweisdokumenten kryptographisch geschützte „Cloud Identitäten“ ab, die auf beliebige Smartphones übertragen und dort sicher mobil genutzt werden können. Darüber hinaus kann auch die bislang aufwändige eID-Integration in einem komfortablen Portal erfolgen und die vertrauenswürdigen Identitäten kommen nun selbst aus einer vom Bundesamt für Sicherheit in der Informationstechnik (BSI) zertifizierten „Secure Cloud Infrastructure“."},
|
||||
"address": "https://skidentity.de/service",
|
||||
"homepage": "https://www.skidentity.de",
|
||||
"phone": "+49 9571 604 8014",
|
||||
"email": "detlef.huehnlein@ecsec.de",
|
||||
"postalAddress": "ecsec GmbH<br/>Sudetenstraße 16<br/>96247 Michelau",
|
||||
"category": "other",
|
||||
"tcTokenUrlInfo" : "TcToken URL requires valid dynamic request id.",
|
||||
"subjectUrls": []
|
||||
},
|
||||
{
|
||||
"shortName": {"" : "Stadt Nürnberg: Online-Bürgerdienste Service"},
|
||||
"longDescription": {"": "Die Stadt Nürnberg bietet Ihnen mit ihrem Bürgerserviceportal ,Mein.Nürnberg' erstmals die Möglichkeit, Ihre Verwaltungsangelegenheiten komplett elektronisch abzuwickeln – von der Antragstellung bis zur Rückmeldung der Bescheide oder Schriftstücke in Ihren persönlichen Bereich auf dem Portal. Alle Online-Dienste der Stadt Nürnberg wurden zudem für die Nutzung mit mobilen Endgeräten optimiert.<br/>Bei immer mehr Verfahren akzeptiert die Stadtverwaltung einen Unterschriftersatz durch die Online-Ausweisfunktion.<br/>Jeder Online-Dienst der Stadt Nürnberg, der die Online-Ausweisfunktion nutzt, ist an dem Hinweis \"mit eID\" erkennbar. Derzeit sind dies z. B.:<br/>- Aufenthaltstitel beantragen<br/>- Gaststättenrechtliche Erlaubnis für den Ausschank von Alkohol beantragen<br/>- Hunde – Negativzeugnis für Kampfhunde beantragen<br/>- Kfz-Halterauskunft beantragen<br/>- Melderegister – Widerspruch gegen Datenübermittlung<br/>- Veranstaltung, Messe, Markt beantragen"},
|
||||
"address": "http://www.nuernberg.de/internet/onlinedienste",
|
||||
"homepage": "http://www.nuernberg.de/",
|
||||
"phone": "+49 9 11 / 2 31-8613",
|
||||
"email": "poststelle@stadt.nuernberg.de",
|
||||
"postalAddress": "Amt für Organisation, Informationsverarbeitung und Zentrale Dienste<br/>E-Government-Büro<br/>Rathausplatz 2<br/>III. OG<br/>90403 Nürnberg",
|
||||
"category": "citizen",
|
||||
"tcTokenUrlInfo" : "Registration required",
|
||||
"subjectUrls": ["https://meinkonto.nuernberg.de"]
|
||||
},
|
||||
{
|
||||
"exclude": ["ios"],
|
||||
"shortName": {"" : "Standesamt Online Mecklenburg-Vorpommern"},
|
||||
"longDescription": {"": "In Mecklenburg-Vorpommern können Sie in immer mehr Kommunen Urkunden mit der Online-Ausweisfunktion beantragen:<br/>- Geburtsurkunden<br/>- Eheurkunden<br/>- Lebenspartnerschaftsurkunden<br/>- Sterbeurkunden"},
|
||||
"address": "https://portal.ego-mv.de/",
|
||||
"homepage": "http://www.ego-mv.de/",
|
||||
"phone": "+49 3 85 77 33 47-0",
|
||||
"email": "info@ego-mv.de",
|
||||
"postalAddress": "Zweckverband Elektronische Verwaltung in Mecklenburg-Vorpommern (eGo-MV)<br/>Eckdrift 103<br/>19061 Schwerin",
|
||||
"category": "citizen",
|
||||
"tcTokenUrlInfo" : "TcToken URL requires valid dynamic request id.",
|
||||
"subjectUrls": ["https://tbk.ego-mv.de/BuergerKontoWeb"]
|
||||
},
|
||||
{
|
||||
"exclude": ["ios"],
|
||||
"shortName": {"" : "Telekom DeMail für Privat- und Geschäftskunden"},
|
||||
"address": "https://www.telekom.de/de-mail",
|
||||
"homepage": "https://www.telekom.de/",
|
||||
"phone": "+49 800 33 01000",
|
||||
"email": "",
|
||||
"postalAddress": "Telekom Deutschland GmbH<br/>Landgrabenweg 151<br/>53227 Bonn",
|
||||
"category": "other",
|
||||
"tcTokenUrlInfo" : "Registration required",
|
||||
"subjectUrls": ["https://www.de-mail.t-online.de"]
|
||||
},
|
||||
{
|
||||
"exclude": ["ios"],
|
||||
"shortName": {"" : "T-Systems DeMail für Großkunden"},
|
||||
"address": "https://www.t-systems.de/de-mail",
|
||||
"homepage": "https://www.t-systems.de/",
|
||||
"phone": "+49 69 20060 - 0",
|
||||
"email": "de-mail@t-systems.com",
|
||||
"postalAddress": "T-Systems International GmbH<br/>Hahnstraße 43d<br/>60528 Frankfurt am Main",
|
||||
"category": "other",
|
||||
"tcTokenUrlInfo" : "Registration required",
|
||||
"subjectUrls": ["https://www.de-mail.t-systems.de"]
|
||||
},
|
||||
{
|
||||
"exclude": ["ios"],
|
||||
"shortName": {"" : "Urkundenservice Köln"},
|
||||
"longDescription": {"": "Bei der Stadt Köln können Sie mit der Online-Ausweisfunktion folgende Urkunden beantragen:<br/>- Geburtsurkunden<br/>- Eheurkunden<br/>- Lebenspartnerschaftsurkunden<br/>- Sterbeurkunden<br/>Dabei werden die Adressatenangaben in den Online-Formularen automatisch befüllt."},
|
||||
"address": "http://www.stadt-koeln.de/service/produkt/urkundenservice-des-standesamtes",
|
||||
"homepage": "http://www.stadt-koeln.de/",
|
||||
"phone": "+49 221 / 221-26530",
|
||||
"email": "standesamt@stadt-koeln.de",
|
||||
"postalAddress": "Gülichplatz 1-3<br/>50667 Köln",
|
||||
"category": "citizen",
|
||||
"tcTokenUrl" : "https://ea.stadt-koeln.de/Gastzugang/EIDServiceProvider/Request.ashx?appID=7",
|
||||
"subjectUrls": ["https://ea.stadt-koeln.de"]
|
||||
},
|
||||
{
|
||||
"exclude": ["ios"],
|
||||
"shortName": {"" : "Virtuelles Rathaus Stadt Dortmund"},
|
||||
"longDescription": {"": "Sie wollen städtische Dienstleistungen in Anspruch nehmen, sich zunächst nur informieren oder Sie suchen bereits ein bestimmtes Formular?<br/>Wir haben für Sie ein umfassendes Informationsangebot über Produkte und Leistungen (Services) der Stadt Dortmund gegliedert nach Themen und der Behördenstruktur bereitgestellt."},
|
||||
"address": "https://www.domap.de/wps/portal/dortmund/login",
|
||||
"homepage": "https://www.domap.de/",
|
||||
"phone": "+49 231 / 50-25650",
|
||||
"email": "domap-feedback@stadtdo.de",
|
||||
"postalAddress": "Stadt Dortmund<br/>Dortmunder Systemhaus<br/>Deggingstraße 42<br/>44122 Dortmund",
|
||||
"category": "citizen",
|
||||
"tcTokenUrlInfo" : "TcToken URL requires valid dynamic request id.",
|
||||
"subjectUrls": ["https://rathaus.dortmund.de"]
|
||||
},
|
||||
{
|
||||
"exclude": ["ios"],
|
||||
"shortName": {"" : "Vollstreckungsportal"},
|
||||
"longDescription": {"": "Herzlich willkommen auf dem Gemeinsamen Vollstreckungsportal der Länder."},
|
||||
"address": "https://www.vollstreckungsportal.de/auskunft/priv/anmelden.jsf?type=npa",
|
||||
"homepage": "https://www.vollstreckungsportal.de/",
|
||||
"phone": "",
|
||||
"email": "bundesportal@ag-hagen.nrw.de",
|
||||
"postalAddress": "Land Nordrhein-Westfalen<br/>vertreten durch das Justizministerium<br/>Martin-Luther-Platz 40<br/>40212 Düsseldorf",
|
||||
"category": "citizen",
|
||||
"tcTokenUrlInfo" : "Registration required.",
|
||||
"subjectUrls": ["https://www.vollstreckungsportal.de"]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -1,123 +0,0 @@
|
|||
{
|
||||
"IssueDate": "2015-11-24T12:00:00+1:00",
|
||||
"SupportedDevices":
|
||||
[
|
||||
{
|
||||
"ReaderType": "REINER_cyberJack_RFID_komfort",
|
||||
"VendorId": "0x0C4B",
|
||||
"ProductId": "0x0501",
|
||||
"Name": "REINER SCT cyberJack RFID komfort",
|
||||
"Drivers":
|
||||
[
|
||||
{
|
||||
"Platforms": ["WV_WINDOWS7", "WV_WINDOWS8", "WV_WINDOWS8_1", "WV_WINDOWS10"],
|
||||
"URL": "https://appl.governikus-asp.de/ausweisapp2/driver/bc_7_2_3.exe"
|
||||
},
|
||||
{
|
||||
"Platforms": ["MV_10_9", "MV_10_10"],
|
||||
"URL": "https://appl.governikus-asp.de/ausweisapp2/driver/pcsc-cyberjack_3.99.5final.SP07-universal-signed.pkg"
|
||||
},
|
||||
{
|
||||
"Platforms": ["MV_10_11", "MV_10_12"],
|
||||
"URL": "https://appl.governikus-asp.de/ausweisapp2/driver/01_pcsc-cyberjack_3.99.5final.SP08-universal-osx10.11-signed.pkg"
|
||||
},
|
||||
{
|
||||
"Platforms": ["LINUX"],
|
||||
"URL": "https://www.reiner-sct.com/support/download/treiber-und-software/cyberjack/rfid-komfort-linux.html"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"ReaderType": "REINER_cyberJack_RFID_standard",
|
||||
"VendorId": "0x0C4B",
|
||||
"ProductId": "0x0500",
|
||||
"Name": "REINER SCT cyberJack RFID standard",
|
||||
"Drivers":
|
||||
[
|
||||
{
|
||||
"Platforms": ["WV_WINDOWS7", "WV_WINDOWS8", "WV_WINDOWS8_1", "WV_WINDOWS10"],
|
||||
"URL": "https://appl.governikus-asp.de/ausweisapp2/driver/bc_7_2_3.exe"
|
||||
},
|
||||
{
|
||||
"Platforms": ["MV_10_9", "MV_10_10"],
|
||||
"URL": "https://appl.governikus-asp.de/ausweisapp2/driver/pcsc-cyberjack_3.99.5final.SP07-universal-signed.pkg"
|
||||
},
|
||||
{
|
||||
"Platforms": ["MV_10_11", "MV_10_12"],
|
||||
"URL": "https://appl.governikus-asp.de/ausweisapp2/driver/01_pcsc-cyberjack_3.99.5final.SP08-universal-osx10.11-signed.pkg"
|
||||
},
|
||||
{
|
||||
"Platforms": ["LINUX"],
|
||||
"URL": "https://www.reiner-sct.com/support/download/treiber-und-software/cyberjack/rfid-standard-linux.html"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"ReaderType": "REINER_cyberJack_RFID_basis",
|
||||
"VendorId": "0x0C4B",
|
||||
"ProductId": "0x9102",
|
||||
"Name": "REINER SCT cyberJack RFID basis",
|
||||
"Drivers":
|
||||
[
|
||||
{
|
||||
"Platforms": ["WV_WINDOWS7", "WV_WINDOWS8", "WV_WINDOWS8_1", "WV_WINDOWS10"],
|
||||
"URL": "https://appl.governikus-asp.de/ausweisapp2/driver/01_cJRFIDbasisIFD.exe"
|
||||
},
|
||||
{
|
||||
"Platforms": ["MV_10_9", "MV_10_10", "MV_10_11", "MV_10_12"],
|
||||
"URL": "https://appl.governikus-asp.de/ausweisapp2/driver/ifd-ccid-1.4.8-universal-signed.pkg"
|
||||
},
|
||||
{
|
||||
"Platforms": ["LINUX"],
|
||||
"URL": "https://www.reiner-sct.com/support/download/treiber-und-software/cyberjack/rfid-basis-linux.html"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"ReaderType": "SCM_SDI011",
|
||||
"VendorId": "0x04E6",
|
||||
"ProductId": "0x512B",
|
||||
"Name": "SDI011 Contactless Reader",
|
||||
"Drivers":
|
||||
[
|
||||
{
|
||||
"Platforms": ["WV_WINDOWS7", "WV_WINDOWS8", "WV_WINDOWS8_1", "WV_WINDOWS10"],
|
||||
"URL": "https://appl.governikus-asp.de/ausweisapp2/driver/SDI011_win_installer_V1.01.zip"
|
||||
},
|
||||
{
|
||||
"Platforms": ["MV_10_9", "MV_10_10", "MV_10_11", "MV_10_12"],
|
||||
"URL": "https://appl.governikus-asp.de/ausweisapp2/driver/SDI011_mac_V5.0.18.zip"
|
||||
},
|
||||
{
|
||||
"Platforms": ["LINUX"],
|
||||
"URL": "http://support.identive-group.com/npa_downloads.php"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"ReaderType": "SCM_SCL011_Contactless_Reader",
|
||||
"VendorId": "0x04E6",
|
||||
"ProductId": "0x5292",
|
||||
"Name": "SCL01x Contactless Reader",
|
||||
"Drivers":
|
||||
[
|
||||
{
|
||||
"Platforms": ["WV_WINDOWS7", "WV_WINDOWS8", "WV_WINDOWS8_1", "WV_WINDOWS10"],
|
||||
"URL": "https://appl.governikus-asp.de/ausweisapp2/driver/SCL011_win_installer_V1.01.zip"
|
||||
},
|
||||
{
|
||||
"Platforms": ["MV_10_9", "MV_10_10", "MV_10_11", "MV_10_12"],
|
||||
"URL": "https://appl.governikus-asp.de/ausweisapp2/driver/SCL011_V2.09_mac.zip"
|
||||
},
|
||||
{
|
||||
"Platforms": ["LINUX"],
|
||||
"URL": "http://support.identive-group.com/npa_downloads.php"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -1,28 +0,0 @@
|
|||
#!/bin/bash
|
||||
root=$(hg root)
|
||||
revs=$(hg log -r "$HG_NODE:tip" --template '{rev} ') #Intentional space after {rev}
|
||||
builddir=$root/build
|
||||
rc=0
|
||||
|
||||
for rev in $revs
|
||||
do
|
||||
hg update -C -r $rev > /dev/null
|
||||
rm -rf $builddir
|
||||
mkdir $builddir
|
||||
cd $builddir
|
||||
cmake -DENABLE_DVCS=false -Dtools.only=true $root > /dev/null
|
||||
make format > /dev/null
|
||||
cd $root
|
||||
STATUS=$(hg status | wc -c)
|
||||
if [ "$STATUS" != "0" ]; then
|
||||
desc=$(hg log -r $rev --template '{firstline(desc)}')
|
||||
echo "Changeset $rev is not formatted correctly: $desc"
|
||||
rc=-1
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
rm -rf $builddir
|
||||
hg update -C null > /dev/null
|
||||
exit $rc
|
||||
|
|
@ -1,11 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 15.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg version="1.1" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="14px" height="32px" viewBox="0 0 14 32" enable-background="new 0 0 14 32" xml:space="preserve">
|
||||
width="14px" height="32px" viewBox="0 0 14 32" xml:space="preserve">
|
||||
<path display="none" fill="#3D3D3D" d="M23,15v8H9V9h13V8H8v16h16v-9H23z"/>
|
||||
<path display="none" fill="#3D3D3D" d="M26.496,9.577l-2.178-2.172l-8.646,8.727l-3.014-3.051l-2.167,2.182l5.164,5.176
|
||||
L26.496,9.577z"/>
|
||||
<path display="none" fill="#3D3D3D" d="M23,9v14H9V9H23 M24,8H8v16h16V8.039V8z"/>
|
||||
<path opacity="0.3" fill="#FFFFFF" enable-background="new " d="M10.895,8.933l-4.108,7.025l4.095,6.983l-2.979-0.008L4,15.958
|
||||
<path opacity="0.3" fill="#FFFFFF" d="M10.895,8.933l-4.108,7.025l4.095,6.983l-2.979-0.008L4,15.958
|
||||
L7.934,8.92L10.895,8.933z"/>
|
||||
</svg>
|
||||
|
|
Before Width: | Height: | Size: 821 B After Width: | Height: | Size: 680 B |
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 15.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="14px" height="32px" viewBox="0 0 14 32" enable-background="new 0 0 14 32" xml:space="preserve">
|
||||
width="70px" height="160px" viewBox="0 0 14 32" enable-background="new 0 0 14 32" xml:space="preserve">
|
||||
<path display="none" fill="#3D3D3D" d="M23,15v8H9V9h13V8H8v16h16v-9H23z"/>
|
||||
<path display="none" fill="#3D3D3D" d="M26.496,9.577l-2.178-2.172l-8.645,8.727l-3.014-3.051l-2.167,2.182l5.164,5.176
|
||||
L26.496,9.577z"/>
|
||||
|
|
Before Width: | Height: | Size: 775 B After Width: | Height: | Size: 776 B |
|
@ -1,11 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 15.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg version="1.1" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="14px" height="32px" viewBox="0 0 14 32" enable-background="new 0 0 14 32" xml:space="preserve">
|
||||
width="14px" height="32px" viewBox="0 0 14 32" xml:space="preserve">
|
||||
<path display="none" fill="#3D3D3D" d="M23,15v8H9V9h13V8H8v16h16v-9H23z"/>
|
||||
<path display="none" fill="#3D3D3D" d="M26.496,9.577l-2.178-2.172l-8.646,8.727l-3.014-3.051l-2.167,2.182l5.164,5.176
|
||||
L26.496,9.577z"/>
|
||||
<path display="none" fill="#3D3D3D" d="M23,9v14H9V9H23 M24,8H8v16h16V8.039V8z"/>
|
||||
<path opacity="0.3" fill="#FFFFFF" enable-background="new " d="M3.106,22.928l4.108-7.025L3.12,8.92l2.979,0.008L10,15.903
|
||||
<path opacity="0.3" fill="#FFFFFF" d="M3.106,22.928l4.108-7.025L3.12,8.92l2.979,0.008L10,15.903
|
||||
l-3.933,7.039L3.106,22.928z"/>
|
||||
</svg>
|
||||
|
|
Before Width: | Height: | Size: 820 B After Width: | Height: | Size: 679 B |
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="96px" height="96px" viewBox="0 0 840 840" >
|
||||
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="96" height="96" viewBox="0 0 840 840" >
|
||||
<path d="M95,250 c0,0 0,-100 100,-100 h450 c0,0 100,0 100,100 v300 c0,0 0,100 -100,100 h-450 c0,0 -100,0 -100,-100 Z
|
||||
M210,295 c0,0 0,20 20,20 h390 c0,0 20,0 20,-20 v-5 c0,0 0,-20 -20,-20 h-390 c0,0 -20,0 -20,20 Z
|
||||
M210,405 c0,0 0,20 20,20 h210 c0,0 20,0 20,-20 v-5 c0,0 0,-20 -20,-20 h-210 c0,0 -20,0 -20,20 Z
|
||||
|
|
Before Width: | Height: | Size: 693 B After Width: | Height: | Size: 689 B |
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="96" height="96" viewBox="-1 -1 34 34">
|
||||
<path d="M 22.507,0 9.175,0 C 7.9,0 6.87,1.034 6.87,2.309 l 0,27.07 c 0,1.271 1.03,2.306 2.305,2.306 l 13.332,0 c 1.273,0 2.307,-1.034 2.307,-2.306 l 0,-27.07 C 24.813,1.034 23.78,0 22.507,0 Z
|
||||
m 0.578,25.672 -14.486,0 0,-21.777 14.486,0 0,21.777 z
|
||||
m -4.153,-23.329 -6.181,0 0,-0.674 6.182,0 -0.001,0.674 0,0 z
|
||||
m 2.645,-0.308 c 0,0.326 -0.266,0.59 -0.591,0.59 -0.326,0 -0.591,-0.265 -0.591,-0.59 0,-0.325 0.265,-0.59 0.591,-0.59 0.326,-0.001 0.591,0.264 0.591,0.59 z
|
||||
m -2.922,27.19 -5.629,0 0,-1.732 5.629,0 0,1.732 z"
|
||||
style="fill: #8e8e93;" />
|
||||
</svg>
|
After Width: | Height: | Size: 760 B |
|
@ -0,0 +1,54 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="138" height="138" viewBox="-1 -1 34 34">
|
||||
<defs>
|
||||
<g id="gear" fill="#8e8e93">
|
||||
<path d="M183.5126953,183.3852539l-8.5625,8.5615234c-2.1396484,2.1386719-5.6181641,2.1396484-7.7597656,0.0009766
|
||||
l-3.1816406-3.1826172c-2.5058594,1.3637695-5.1445313,2.4555664-7.8857422,3.2636719v4.5029297
|
||||
c0,1.465332-0.5703125,2.84375-1.6064453,3.8798828s-2.4150391,1.6064453-3.8798828,1.6074219l-12.109375-0.0009766
|
||||
c-1.4648438,0-2.8427734-0.5703125-3.8789063-1.6064453c-1.0351563-1.0371094-1.6064453-2.4150391-1.6064453-3.8798828v-4.5048828
|
||||
c-2.7412109-0.8066406-5.3798828-1.8979492-7.8857422-3.2626953l-3.1816406,3.1826172
|
||||
c-2.140625,2.1396484-5.6210938,2.1401367-7.7597656,0.0009766l-8.5625-8.5625
|
||||
c-1.0351563-1.0351563-1.6064453-2.4140625-1.6064453-3.8789063c-0.0009766-1.4658203,0.5703125-2.84375,1.6064453-3.8798828
|
||||
l3.1835938-3.1831055c-1.3642578-2.5053711-2.4550781-5.1435547-3.2636719-7.8862305l-4.5039063,0.0009766
|
||||
c-3.0253906,0-5.4863281-2.4609375-5.4863281-5.4863281v-12.1083984c0-1.4648438,0.5703125-2.8432617,1.6064453-3.8798828
|
||||
c1.0361328-1.0361328,2.4140625-1.6064453,3.8798828-1.6074219l4.5029297,0.0009766
|
||||
c0.8085938-2.7421875,1.9003906-5.3808594,3.2646484-7.8867188l-3.1835938-3.1816406
|
||||
c-2.1386719-2.1391602-2.1386719-5.6201172,0-7.7587891l8.5625-8.5625c2.1396484-2.1391602,5.6201172-2.1386719,7.7597656,0
|
||||
l3.1816406,3.1821289c2.5058594-1.3637695,5.1445313-2.4545898,7.8857422-3.2636719v-4.503418
|
||||
c0-1.4648438,0.5703125-2.8427734,1.6064453-3.8779297c1.0361328-1.0366211,2.4140625-1.6079102,3.8798828-1.6083984
|
||||
l12.1083984,0.0009766c1.4658203-0.0009766,2.8427734,0.5693359,3.8798828,1.6064453
|
||||
c1.0361328,1.0361328,1.6064453,2.4140625,1.6064453,3.8789063v4.5039063
|
||||
c2.7402344,0.8076172,5.3789063,1.9003906,7.8857422,3.2641602l3.1816406-3.1831055
|
||||
c2.1396484-2.1386719,5.6201172-2.1386719,7.7597656-0.0009766l8.5615234,8.5634766
|
||||
c1.0361328,1.0351563,1.6074219,2.4130859,1.6074219,3.8793945s-0.5693359,2.8427734-1.6064453,3.878418l-3.1826172,3.1835938
|
||||
c1.3642578,2.5058594,2.4560547,5.1435547,3.2636719,7.8847656l4.5029297,0.0009766
|
||||
c3.0253906-0.0004883,5.4863281,2.4619141,5.4863281,5.4858398l0.0009766,12.1088867
|
||||
c0,1.465332-0.5703125,2.8427734-1.6074219,3.8793945c-1.0361328,1.0366211-2.4130859,1.6069336-3.8789063,1.6064453
|
||||
l-4.5039063,0.0004883c-0.8085938,2.7412109-1.9003906,5.3779297-3.2636719,7.8857422l3.1826172,3.1826172
|
||||
C185.6513672,177.7651367,185.6503906,181.2460938,183.5126953,183.3852539z M168.4873047,183.4428711l6.5200195-6.5200195
|
||||
l-5.4921875-5.4916992l1.2353516-1.9614258c1.859375-2.9506836,3.1923828-6.1743164,3.965332-9.5825195l0.5126953-2.2592773
|
||||
L183,157.6274414l0.0004883-9.2202148l-7.7700195,0.0004883l-0.5141602-2.2612305
|
||||
c-0.7734375-3.4086914-2.1074219-6.6333008-3.9648438-9.5820313l-1.2353516-1.9604492l5.4912109-5.4921875l-6.5200195-6.5200195
|
||||
l-5.4916992,5.4921875l-1.9609375-1.2348633c-2.949707-1.8579102-6.1748047-3.1933594-9.5820313-3.9658203l-2.2597656-0.5136719
|
||||
v-7.7700195l-9.2207031-0.0004883v7.7705078l-2.2607422,0.5131836c-3.409668,0.7734375-6.6337891,2.1083984-9.5820313,3.965332
|
||||
l-1.9609375,1.2353516l-5.4916992-5.4921875l-6.5200195,6.5205078l5.4926758,5.4921875l-1.2358398,1.9609375
|
||||
c-1.8574219,2.9477539-3.1914063,6.1713867-3.9648438,9.5810547l-0.5131836,2.2617188l-7.7714844-0.0009766v9.2211914
|
||||
l7.7714844-0.0004883l0.5131836,2.2602539c0.7744141,3.4101563,2.1074219,6.6337891,3.9648438,9.581543l1.2348633,1.9619141
|
||||
l-5.4926758,5.4912109l6.5209961,6.5205078l5.4916992-5.4921875l1.9619141,1.2353516
|
||||
c2.9492188,1.8569336,6.1723633,3.1914063,9.5800781,3.965332l2.2617188,0.5126953v7.7714844l9.2207031-0.0004883v-7.7705078
|
||||
l2.2607422-0.512207c3.4086914-0.7744141,6.6318359-2.1083984,9.5810547-3.9663086l1.9609375-1.2353516L168.4873047,183.4428711z" />
|
||||
<path d="M160.6000977,136.9990234c-8.8334961-8.8320313-23.2026367-8.8320313-32.0351563,0.0009766
|
||||
c-8.8325195,8.831543-8.8325195,23.2026367,0,32.0341797c8.8325195,8.8325195,23.2026367,8.8330078,32.034668,0.0004883
|
||||
C169.4316406,160.2026367,169.4326172,145.831543,160.6000977,136.9990234z M144.4072266,166.7856445
|
||||
c-7.5419922,0-13.6557617-6.112793-13.6557617-13.6542969c0-7.5424805,6.1137695-13.6552734,13.6557617-13.6552734
|
||||
c7.5424805,0,13.6552734,6.112793,13.6552734,13.6552734C158.0625,160.6728516,151.949707,166.7856445,144.4072266,166.7856445z" />
|
||||
</g>
|
||||
</defs>
|
||||
<path d="M 22.507,0 9.175,0 C 7.9,0 6.87,1.034 6.87,2.309 l 0,27.07 c 0,1.271 1.03,2.306 2.305,2.306 l 13.332,0 c 1.273,0 2.307,-1.034 2.307,-2.306 l 0,-27.07 C 24.813,1.034 23.78,0 22.507,0 Z
|
||||
m 0.578,25.672 -14.486,0 0,-21.777 14.486,0 0,21.777 z
|
||||
m -4.153,-23.329 -6.181,0 0,-0.674 6.182,0 -0.001,0.674 0,0 z
|
||||
m 2.645,-0.308 c 0,0.326 -0.266,0.59 -0.591,0.59 -0.326,0 -0.591,-0.265 -0.591,-0.59 0,-0.325 0.265,-0.59 0.591,-0.59 0.326,-0.001 0.591,0.264 0.591,0.59 z
|
||||
m -2.922,27.19 -5.629,0 0,-1.732 5.629,0 0,1.732 z"
|
||||
style="fill: #8e8e93;" />
|
||||
<use xlink:href="#gear" x="-18" y="-50" transform="scale(0.125,0.125)"/>
|
||||
</svg>
|
After Width: | Height: | Size: 5.5 KiB |
|
@ -1,7 +1,9 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="96" height="96" viewBox="0 0 120 120" >
|
||||
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="96" height="96" viewBox="0 0 140 140" >
|
||||
<g fill="#8e8e93">
|
||||
<path d="M 37 25 C 78 -5 93 40 70 55 C 62 62 60 71 60 80" style="fill: none; stroke-width: 20; stroke: #8e8e93;" />
|
||||
<circle cx="60" cy="100" r="14"/>
|
||||
<path d="M 70 10 a 60 60 0 0 0 0 120 a 60 60 0 0 0 0 -120 z
|
||||
M 70 20 a 50 50 0 0 1 0 100 a 50 50 0 0 1 0 -100 z" />
|
||||
<path d="M 51 55 C 60 15 100 40 80 60 C 65 70 70 80 70 85" style="fill: none; stroke-width: 10; stroke: #8e8e93;" />
|
||||
<circle cx="70" cy="100" r="6"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
|
Before Width: | Height: | Size: 349 B After Width: | Height: | Size: 481 B |
Before Width: | Height: | Size: 3.2 KiB |
Before Width: | Height: | Size: 5.8 KiB |
Before Width: | Height: | Size: 661 B |
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 5.8 KiB |
Before Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 26 KiB |
|
@ -0,0 +1,4 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="512px" height="512px" viewBox="90 90 332 332">
|
||||
<path fill="#68B633" stroke="#68B633" stroke-linejoin="round" stroke-width="10" d="M160 260 l20 -20 l40 60 l100 -120 l20 20 l-120 130 z" />
|
||||
</svg>
|
After Width: | Height: | Size: 355 B |
|
@ -1,9 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="512px" height="512px" viewBox="90 90 332 332">
|
||||
<path fill="#68B633" d="M196.128,280.614c7.912,21.703,20.335,37.694,38.703,51.545c9.032,6.81,20.226-0.987,23.568-9.589
|
||||
c17.133-44.117,38.522-86.035,63.694-126.099c11.04-17.578-16.732-33.666-27.71-16.194c-26.665,42.45-48.79,87.045-66.927,133.759
|
||||
c7.857-3.196,15.714-6.393,23.568-9.588c-11.286-8.508-19.14-19.15-23.955-32.362C220.042,252.808,189.026,261.13,196.128,280.614
|
||||
L196.128,280.614z"/>
|
||||
<path fill="#FFFFFF" d="M 256 94 a 162 162 0 0 1 0 324 a 162 162 0 0 1 0 -324 z
|
||||
M 256 124 a 132 132 0 0 0 0 264 a 132 132 0 0 0 0 -264 z" />
|
||||
<path fill="#68B633" stroke="#68B633" stroke-linejoin="round" stroke-width="10" d="M160 260 l20 -20 l40 60 l100 -120 l20 20 l-120 130 z" />
|
||||
</svg>
|
||||
|
||||
|
|
Before Width: | Height: | Size: 854 B After Width: | Height: | Size: 525 B |
After Width: | Height: | Size: 4.3 KiB |
After Width: | Height: | Size: 6.3 KiB |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 5.5 KiB |
After Width: | Height: | Size: 5.9 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 3.0 KiB |
After Width: | Height: | Size: 4.3 KiB |
After Width: | Height: | Size: 2.3 KiB |
After Width: | Height: | Size: 3.2 KiB |
Before Width: | Height: | Size: 3.9 KiB |
Before Width: | Height: | Size: 3.9 KiB |
Before Width: | Height: | Size: 7.4 KiB |
Before Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 6.6 KiB |
Before Width: | Height: | Size: 6.6 KiB |
Before Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 2.5 KiB |
After Width: | Height: | Size: 3.0 KiB |