Add revision: v1.12.3

remotes/origin/1.12 1.12.3
Governikus 2017-09-15 10:23:30 +02:00
parent c916899e0e
commit 3e6bc68adb
294 changed files with 3964 additions and 926 deletions

View File

@ -1,4 +1,4 @@
CMAKE_MINIMUM_REQUIRED(VERSION 3.1.0)
CMAKE_MINIMUM_REQUIRED(VERSION 3.3.0)
IF(POLICY CMP0020)
CMAKE_POLICY(SET CMP0020 NEW)
@ -20,6 +20,10 @@ IF(POLICY CMP0063)
CMAKE_POLICY(SET CMP0063 NEW)
ENDIF()
IF(POLICY CMP0071)
CMAKE_POLICY(SET CMP0071 NEW)
ENDIF()
# "tools.only" can be defined to disable the normal build and enable
# cmdline "tools" only. For example: "make format" or "make package_source"
IF(tools.only)
@ -29,7 +33,7 @@ ELSE()
ENDIF()
PROJECT(AusweisApp2 VERSION 1.12.2 LANGUAGES ${LANGUAGES})
PROJECT(AusweisApp2 VERSION 1.12.3 LANGUAGES ${LANGUAGES})
# Set TWEAK if not defined in PROJECT_VERSION above to
# have a valid tweak version without propagating it
@ -63,6 +67,11 @@ MESSAGE(STATUS "VENDOR: ${VENDOR}")
MESSAGE(STATUS "VERSION: ${PROJECT_VERSION}")
IF(ANDROID)
IF(NOT BUILD_PREVIEW)
SET(BUILD_PREVIEW false)
ENDIF()
MESSAGE(STATUS "BUILD_PREVIEW: ${BUILD_PREVIEW}")
IF(NOT ANDROID_VERSION_CODE)
SET(ANDROID_VERSION_CODE 0)
ENDIF()

View File

@ -47,7 +47,6 @@ Lizenz
Wir benötigen eine persönliche CLA (contributor license agreement) für
die eingereichten Änderungen.
Siehe `LICENSE.AusweisApp2.German.txt`_ oder `LICENSE.AusweisApp2.English.txt`_ für Details.
Siehe `Governikus_CLA.pdf`_ für Details.
.. _`LICENSE.AusweisApp2.German.txt`: LICENSE.AusweisApp2.German.txt
.. _`LICENSE.AusweisApp2.English.txt`: LICENSE.AusweisApp2.English.txt
.. _`Governikus_CLA.pdf`: Governikus_CLA.pdf

BIN
Governikus_CLA.pdf 100644

Binary file not shown.

View File

@ -0,0 +1,686 @@
Nutzungsbedingungen
Allgemeines zur Installation
Bitte lesen Sie zunächst die Allgemeinen Geschäftsbedingungen so wie die Lizenzbedingungen für die Überlassung und Nutzung der AusweisApp2 durch. Nachdem Sie zugestimmt haben, können Sie die Installation fortsetzen.
Allgemeine Geschäftsbedingungen
§ 1 Nutzungsbedingungen und Datenschutzhinweis
(1) Diese Allgemeine Geschäftsbedingungen (AGB) des Bundes, vertreten durch das Bundesministerium des Innern (nachfolgend "Bund") und dem Nutzer gelten für die Überlassung und Nutzung der Software AusweisApp2 (nachfolgend AusweisApp2) und deren neue Versionen, die auf der Grundlage dieser Bedingungen überlassen werden.
(2) "Nutzer" im Sinne dieses Vertrages sind natürliche Personen.
§ 2 Vertragsgegenstand und Unentgeltlichkeit
(1) Die AusweisApp2 wird regelmäßig hinsichtlich ihrer Konformität zu den Technischen Richtlinien des Bundesamtes für Sicherheit in der Informationstechnik [TR-03124-2] zertifiziert sowie hinsichtlich ihrer Nutzerfreundlichkeit [EN ISO 9241 Teil 110 Ergonomie Mensch-System-Integration zur Prüfung der Benutzbarkeit und Funktionalität und Trusted Design Guidelines zur Prüfung der Vertrauenswürdigkeit] und auf Barrierefreiheit [BITV 2.0] überprüft.
(2) Die AusweisApp2 wird in maschinenlesbarer Form unentgeltlich überlassen. Der Quellcode der AusweisApp2 wird ebenfalls unentgeltlich veröffentlicht. Eine Auflistung der verwendeten Open Source-Bestandteile der AusweisApp2 findet sich im Anhang.
(3) Die AusweisApp2 wird von der Governikus GmbH & Co. KG (Governikus) als Erfüllungsgehilfe des Bundes überlassen.
§ 3 Verwendungszweck
Die AusweisApp2 und alle ihre Bestandteile dienen ausschließlich dazu, im Zusammenhang mit der Nutzung der Online-Ausweisfunktion des Personalausweises bzw. des elektronischen Aufenthaltstitels und der Übermittlung der damit verbundenen Daten gemäß den gesetzlichen Vorgaben verwendet zu werden.
§ 4 Pflichten und Obliegenheiten des Nutzers
(1) Der Nutzer verpflichtet sich, die AusweisApp2 entsprechend des in § 3 genannten Verwendungszweckes zu nutzen. Es liegt in seinem Interesse, dass in Verbindung mit der AusweisApp2 genutzte Hard- und Software des Nutzers immer auf dem neuesten Stand der Sicherheitstechnik (System- und Firmware Update, Virenscanner, Firewall usw.) sind.
(2) Es liegt im eigenen Interesse des Nutzers aber auch des Bundes, dass stets nur die neueste Version der AusweisApp2 (siehe § 5) verwendet wird.
§ 5 Pflege und Support
(1) Der Bund bietet nach eigenem Ermessen und ohne hierzu verpflichtet zu sein für Teile der AusweisApp2 zusätzliche kostenfreie Supportleistungen in Form von Dokumentationen und online Hilfen auf dem AusweisApp2-Portal im Internet unter der Adresse www.ausweisapp.bund.de an, sowie über die Hotline des Herstellers Governikus unter der E-Mail-Adresse: support@ausweisapp.de und der Tel.-Nr.: +49 1805 348 743. Auch stellt er verfügbare neue Versionen der AusweisApp2 zur Verfügung. Hieraus erwächst jedoch kein zusätzlicher Anspruch auf Mängelbeseitigung, auf Zertifizierung, auf Beibehaltung der Supportleistungen oder der Hotline und auf Überlassung neuer Versionen.
(2) Verfügbare neue Versionen der AusweisApp2 können im Internet kostenfrei auf dem AusweisApp2-Portal unter der Adresse www.ausweisapp.bund.de sowie über allgemein zugängliche AppStore heruntergeladen werden.
(3) Eventuelle Mängel der AusweisApp2 werden grundsätzlich dadurch behoben, dass der Bund jeweils eine neue Version der AusweisApp2 zum Herunterladen zur Verfügung stellt (siehe § 5 Absatz 1). Eine Pflicht zur Bereitstellung von neuen Versionen ergibt sich daraus grundsätzlich nicht.
§ 6 Hinweis auf gewerbliche und urheberrechtliche Schutzrechte
Die Zeichen AusweisApp2 und die entsprechenden Grafiken sowie das Signet zur Online-Ausweisfunktion sind für den Bund als Marken geschützt.
§ 7 Datenschutzhinweis
(1) Mit dieser Software werden personenbezogene Daten im Sinne des § 3 Absatz 1 des Bundesdatenschutzgesetzes (BDSG) zum Zwecke der Verarbeitung grundsätzlich nicht erhoben.
(2) Personenbezogene Daten aus dem Ausweischip werden ausschließlich zum Zweck des elektronischen Identitätsnachweises im Umfang der erteilten Berechtigung nach Einwilligung des Nutzers mit seiner Ausweis-PIN-Eingabe und auf dem Transportweg zwischen dem Ausweischip und dem Diensteanbieter sicher verschlüsselt und auch für Governikus nicht lesbar übertragen.
(3) Neben den reinen Daten, die zur Identifizierung/ Authentisierung benötigt werden, erhebt die Software nur mit Einverständnis des Nutzers Daten über die Art und Version der Anwendungsumgebung (Betriebssystem, Lesegeräte usw.) des Nutzers. Diese Daten kann der Nutzer bei Bedarf an Governikus übermitteln, um die ordnungsgemäße Verarbeitung prüfen zu lassen und Fehlern im Verarbeitungsprozess vorzubeugen. Die Nutzung der Daten erfolgt dann im Rahmen des § 14 BDSG durch Governikus im Auftrag des Bundes und nur für den genannten Zweck.
(4) Die in der AusweisApp2 enthaltene Selbstauskunft über die im Chip gespeicherten Daten, ist ein Dienst der durch Governikus über das Internet erbracht wird. Die Ausweisdaten werden dabei nur zur Anzeige des Nutzers gebracht und nicht dauerhaft bei Governikus gespeichert oder für andere Zwecke verwendet.
§ 8 Deutsches Recht
Auf diese Nutzungsbedingungen ist ausschließlich deutsches Recht unter Ausschluss des Übereinkommens der Vereinten Nationen über Verträge über den internationalen Warenkauf (CISG) anwendbar.
Anhang
Eingearbeitete Open Source-Komponenten
Qt, OpenSSL und http_parser.
Lizenzbedingungen
Der Quellcode der AusweisApp2 wird unter der EUPL v1.2 bereitgestellt, mit Ausnahme der Bibliothek OpenSSL, die unter der OpenSSL License / SSLeay License lizensiert ist.
OPEN-SOURCE-LIZENZ FÜR DIE EUROPÄISCHE UNION v. 1.2
EUPL © Europäische Union 2007, 2016
Diese Open-Source-Lizenz für die Europäische Union („EUPL“) gilt für Werke (im Sinne der nachfolgenden Begriffsbestimmung),
die unter EUPL-Bedingungen zur Verfügung gestellt werden. Das Werk darf nur in der durch diese Lizenz
gestatteten Form genutzt werden (insoweit eine solche Nutzung dem Urheber vorbehalten ist).
Das Werk wird unter den Bedingungen dieser Lizenz zur Verfügung gestellt, wenn der Lizenzgeber (im Sinne der
nachfolgenden Begriffsbestimmung) den folgenden Hinweis unmittelbar hinter dem Urheberrechtshinweis dieses Werks
anbringt:
Lizenziert unter der EUPL
oder in einer anderen Form zum Ausdruck bringt, dass er es unter der EUPL lizenzieren möchte.
1. Begriffsbestimmungen
Für diese Lizenz gelten folgende Begriffsbestimmungen:
- „Lizenz“: diese Lizenz.
- „Originalwerk“: das Werk oder die Software, die vom Lizenzgeber unter dieser Lizenz verbreitet oder zugänglich
gemacht wird, und zwar als Quellcode und gegebenenfalls auch als ausführbarer Code.
- „Bearbeitungen“: die Werke oder Software, die der Lizenznehmer auf der Grundlage des Originalwerks oder seiner
Bearbeitungen schaffen kann. In dieser Lizenz wird nicht festgelegt, wie umfangreich die Änderung oder wie stark die
Abhängigkeit vom Originalwerk für eine Einstufung als Bearbeitung sein muss; dies bestimmt sich nach dem
Urheberrecht, das in dem unter Artikel 15 aufgeführten Land anwendbar ist.
- „Werk“: das Originalwerk oder seine Bearbeitungen.
- „Quellcode“: diejenige Form des Werkes, die zur Auffassung durch den Menschen bestimmt ist und die am besten
geeignet ist, um vom Menschen verstanden und verändert zu werden.
- „Ausführbarer Code“: die — üblicherweise — kompilierte Form des Werks, die von einem Computer als Programm
ausgeführt werden soll.
- „Lizenzgeber“: die natürliche oder juristische Person, die das Werk unter der Lizenz verbreitet oder zugänglich
macht.
- „Bearbeiter“: jede natürliche oder juristische Person, die das Werk unter der Lizenz verändert oder auf andere Weise
zur Schaffung einer Bearbeitung beiträgt.
- „Lizenznehmer“ („Sie“): jede natürliche oder juristische Person, die das Werk unter den Lizenzbedingungen nutzt.
- „Verbreitung“ oder „Zugänglichmachung“: alle Formen von Verkauf, Überlassung, Verleih, Vermietung, Verbreitung,
Weitergabe, Übermittlung oder anderweitiger Online- oder Offline-Bereitstellung von Vervielfältigungen des Werks
oder Zugänglichmachung seiner wesentlichen Funktionen für dritte natürliche oder juristische Personen.
2. Umfang der Lizenzrechte
Der Lizenzgeber erteilt Ihnen hiermit für die Gültigkeitsdauer der am Originalwerk bestehenden Urheberrechte eine
weltweite, unentgeltliche, nicht ausschließliche, unterlizenzierbare Lizenz, die Sie berechtigt:
- das Werk uneingeschränkt zu nutzen,
- das Werk zu vervielfältigen,
- das Werk zu verändern und Bearbeitungen auf der Grundlage des Werks zu schaffen,
- das Werk öffentlich zugänglich zu machen, was das Recht einschließt, das Werk oder Vervielfältigungsstücke davon
öffentlich bereitzustellen oder wahrnehmbar zu machen oder das Werk, soweit möglich, öffentlich aufzuführen,
- das Werk oder Vervielfältigungen davon zu verbreiten,
- das Werk oder Vervielfältigungen davon zu vermieten oder zu verleihen,
- das Werk oder Vervielfältigungen davon weiter zu lizenzieren.
Für die Wahrnehmung dieser Rechte können beliebige, derzeit bekannte oder künftige Medien, Träger und Formate
verwendet werden, soweit das geltende Recht dem nicht entgegensteht.
Für die Länder, in denen Urheberpersönlichkeitsrechte an dem Werk bestehen, verzichtet der Lizenzgeber im gesetzlich
zulässigen Umfang auf seine Urheberpersönlichkeitsrechte, um die Lizenzierung der oben aufgeführten
Verwertungsrechte wirksam durchführen zu können.
Der Lizenzgeber erteilt dem Lizenznehmer ein nicht ausschließliches, unentgeltliches Nutzungsrecht an seinen Patenten,
sofern dies zur Ausübung der durch die Lizenz erteilten Nutzungsrechte am Werk notwendig ist.
3. Zugänglichmachung des Quellcodes
Der Lizenzgeber kann das Werk entweder als Quellcode oder als ausführbaren Code zur Verfügung stellen. Stellt er es als
ausführbaren Code zur Verfügung, so stellt er darüber hinaus eine maschinenlesbare Kopie des Quellcodes für jedes von
ihm verbreitete Vervielfältigungsstück des Werks zur Verfügung, oder er verweist in einem Vermerk im Anschluss an den
dem Werk beigefügten Urheberrechtshinweis auf einen Speicherort, an dem problemlos und unentgeltlich auf den
Quellcode zugegriffen werden kann, solange der Lizenzgeber das Werk verbreitet oder zugänglich macht.
4. Einschränkungen des Urheberrechts
Es ist nicht Zweck dieser Lizenz, Ausnahmen oder Schranken der ausschließlichen Rechte des Urhebers am Werk, die
dem Lizenznehmer zugutekommen, einzuschränken. Auch die Erschöpfung dieser Rechte bleibt von dieser Lizenz
unberührt.
5. Pflichten des Lizenznehmers
Die Einräumung der oben genannten Rechte ist an mehrere Beschränkungen und Pflichten für den Lizenznehmer
gebunden:
Urheberrechtshinweis, Lizenztext, Nennung des Bearbeiters: Der Lizenznehmer muss alle Urheberrechts-, Patent-
oder Markenrechtshinweise und alle Hinweise auf die Lizenz und den Haftungsausschluss unverändert lassen. Jedem von
ihm verbreiteten oder zugänglich gemachten Vervielfältigungsstück des Werks muss der Lizenznehmer diese Hinweise
sowie diese Lizenz beifügen. Der Lizenznehmer muss auf jedem abgeleiteten Werk deutlich darauf hinweisen, dass das
Werk geändert wurde, und das Datum der Bearbeitung angeben.
„Copyleft“-Klausel: Der Lizenznehmer darf Vervielfältigungen des Originalwerks oder Bearbeitungen nur unter den
Bedingungen dieser EUPL oder einer neueren Version dieser Lizenz verbreiten oder zugänglich machen, außer wenn das
Originalwerk ausdrücklich nur unter dieser Lizenzversion — z. B. mit der Angabe „Nur EUPL V. 1.2“ — verbreitet
werden darf. Der Lizenznehmer (der zum Lizenzgeber wird) darf für das Werk oder die Bearbeitung keine zusätzlichen
Bedingungen anbieten oder vorschreiben, die die Bedingungen dieser Lizenz verändern oder einschränken.
Kompatibilitäts-Klausel: Wenn der Lizenznehmer Bearbeitungen, die auf dem Werk und einem anderen Werk, das
unter einer kompatiblen Lizenz lizenziert wurde, basieren, oder die Kopien dieser Bearbeitungen verbreitet oder
zugänglich macht, kann dies unter den Bedingungen dieser kompatiblen Lizenz erfolgen. Unter „kompatibler Lizenz“ ist
eine im Anhang dieser Lizenz angeführte Lizenz zu verstehen. Sollten die Verpflichtungen des Lizenznehmers aus der
kompatiblen Lizenz mit denjenigen aus der vorliegenden Lizenz (EUPL) in Konflikt stehen, werden die Verpflichtungen
aus der kompatiblen Lizenz Vorrang haben.
Bereitstellung des Quellcodes: Wenn der Lizenznehmer Vervielfältigungsstücke des Werks verbreitet oder zugänglich
macht, muss er eine maschinenlesbare Fassung des Quellcodes mitliefern oder einen Speicherort angeben, über den
problemlos und unentgeltlich so lange auf diesen Quellcode zugegriffen werden kann, wie der Lizenznehmer das Werk
verbreitet oder zugänglich macht.
Rechtsschutz: Diese Lizenz erlaubt nicht die Benutzung von Kennzeichen, Marken oder geschützten Namensrechten des
Lizenzgebers, soweit dies nicht für die angemessene und übliche Beschreibung der Herkunft des Werks und der
inhaltlichen Wiedergabe des Urheberrechtshinweises erforderlich ist.
6. Urheber und Bearbeiter
Der ursprüngliche Lizenzgeber gewährleistet, dass er das Urheberrecht am Originalwerk innehat oder dieses an ihn
lizenziert wurde und dass er befugt ist, diese Lizenz zu erteilen.
Jeder Bearbeiter gewährleistet, dass er das Urheberrecht an den von ihm vorgenommenen Änderungen des Werks besitzt
und befugt ist, diese Lizenz zu erteilen.
Jedes Mal, wenn Sie die Lizenz annehmen, erteilen Ihnen der ursprüngliche Lizenzgeber und alle folgenden Bearbeiter
eine Befugnis zur Nutzung ihrer Beiträge zum Werk unter den Bedingungen dieser Lizenz.
7. Gewährleistungsausschluss
Die Arbeit an diesem Werk wird laufend fortgeführt; es wird durch unzählige Bearbeiter ständig verbessert. Das Werk ist
nicht vollendet und kann daher Fehler („bugs“) enthalten, die dieser Art der Entwicklung inhärent sind.
Aus den genannten Gründen wird das Werk unter dieser Lizenz „so, wie es ist“ ohne jegliche Gewährleistung zur
Verfügung gestellt. Dies gilt unter anderem — aber nicht ausschließlich — für Marktreife, Verwendbarkeit für einen
bestimmten Zweck, Mängelfreiheit, Richtigkeit sowie Nichtverletzung von anderen Immaterialgüterrechten als dem
Urheberrecht (vgl. dazu Artikel 6 dieser Lizenz).
Dieser Gewährleistungsausschluss ist wesentlicher Bestandteil der Lizenz und Bedingung für die Einräumung von
Rechten an dem Werk.
8. Haftungsausschluss/Haftungsbeschränkung
Außer in Fällen von Vorsatz oder der Verursachung von Personenschäden haftet der Lizenzgeber nicht für direkte oder
indirekte, materielle oder immaterielle Schäden irgendwelcher Art, die aus der Lizenz oder der Benutzung des Werks
folgen; dies gilt unter anderem, aber nicht ausschließlich, für Firmenwertverluste, Produktionsausfall, Computerausfall
oder Computerfehler, Datenverlust oder wirtschaftliche Schäden, und zwar auch dann, wenn der Lizenzgeber auf die
Möglichkeit solcher Schäden hingewiesen wurde. Unabhängig davon haftet der Lizenzgeber im Rahmen der gesetzlichen
Produkthaftung, soweit die entsprechenden Regelungen auf das Werk anwendbar sind.
9. Zusatzvereinbarungen
Wenn Sie das Werk verbreiten, können Sie Zusatzvereinbarungen schließen, in denen Verpflichtungen oder
Dienstleistungen festgelegt werden, die mit dieser Lizenz vereinbar sind. Sie dürfen Verpflichtungen indessen nur in
Ihrem eigenen Namen und auf Ihre eigene Verantwortung eingehen, nicht jedoch im Namen des ursprünglichen
Lizenzgebers oder eines anderen Bearbeiters, und nur, wenn Sie sich gegenüber allen Bearbeitern verpflichten, sie zu
entschädigen, zu verteidigen und von der Haftung freizustellen, falls aufgrund der von Ihnen eingegangenen
Gewährleistungsverpflichtung oder Haftungsübernahme Forderungen gegen sie geltend gemacht werden oder eine
Haftungsverpflichtung entsteht.
10. Annahme der Lizenz
Sie können den Bestimmungen dieser Lizenz zustimmen, indem Sie das Symbol „Lizenz annehmen“ unter dem Fenster
mit dem Lizenztext anklicken oder indem Sie Ihre Zustimmung auf vergleichbare Weise in einer nach anwendbarem
Recht zulässigen Form geben. Das Anklicken des Symbols gilt als Anzeichen Ihrer eindeutigen und unwiderruflichen
Annahme der Lizenz und der darin enthaltenen Klauseln und Bedingungen.
In gleicher Weise gilt als Zeichen der eindeutigen und unwiderruflichen Zustimmung die Ausübung eines Rechtes, das in
Artikel 2 dieser Lizenz angeführt ist, wie das Erstellen einer Bearbeitung oder die Verbreitung oder Zugänglichmachung
des Werks oder dessen Vervielfältigungen.
11. Informationspflichten
Wenn Sie das Werk verbreiten oder zugänglich machen (beispielsweise, indem Sie es zum Herunterladen von einer
Website anbieten), müssen Sie über den Vertriebskanal oder das benutzte Verbreitungsmedium der Öffentlichkeit
zumindest jene Informationen bereitstellen, die nach dem anwendbaren Recht bezüglich der Lizenzgeber, der Lizenz und
ihrer Zugänglichkeit, des Abschlusses des Lizenzvertrags sowie darüber, wie die Lizenz durch den Lizenznehmer
gespeichert und vervielfältigt werden kann, erforderlich sind.
12. Beendigung der Lizenz
Die Lizenz und die damit eingeräumten Rechte erlöschen automatisch, wenn der Lizenznehmer gegen die Lizenzbedingungen
verstößt.
Ein solches Erlöschen der Lizenz führt nicht zum Erlöschen der Lizenzen von Personen, denen das Werk vom
Lizenznehmer unter dieser Lizenz zur Verfügung gestellt worden ist, solange diese Personen die Lizenzbedingungen
erfüllen.
13. Sonstiges
Unbeschadet des Artikels 9 stellt die Lizenz die vollständige Vereinbarung der Parteien über das Werk dar.
Sind einzelne Bestimmungen der Lizenz nach geltendem Recht nichtig oder unwirksam, so berührt dies nicht die
Wirksamkeit oder Durchsetzbarkeit der Lizenz an sich. Solche Bestimmungen werden vielmehr so ausgelegt oder
modifiziert, dass sie wirksam und durchsetzbar sind.
Die Europäische Kommission kann weitere Sprachfassungen oder neue Versionen dieser Lizenz oder aktualisierte
Fassungen des Anhangs veröffentlichen, soweit dies notwendig und angemessen ist, ohne den Umfang der Lizenzrechte
zu verringern. Neue Versionen werden mit einer eindeutigen Versionsnummer veröffentlicht.
Alle von der Europäischen Kommission anerkannten Sprachfassungen dieser Lizenz sind gleichwertig. Die Parteien
können sich auf die Sprachfassung ihrer Wahl berufen.
14. Gerichtsstand
Unbeschadet besonderer Vereinbarungen zwischen den Parteien gilt Folgendes:
- Für alle Streitigkeiten über die Auslegung dieser Lizenz zwischen den Organen, Einrichtungen und sonstigen Stellen
der Europäischen Union als Lizenzgeber und einem Lizenznehmer ist der Gerichtshof der Europäischen Union
gemäß Artikel 272 des Vertrags über die Arbeitsweise der Europäischen Union zuständig;
- Gerichtsstand für Streitigkeiten zwischen anderen Parteien über die Auslegung dieser Lizenz ist allein der Ort, an
dem der Lizenzgeber seinen Wohnsitz oder den wirtschaftlichen Mittelpunkt seiner Tätigkeit hat.
15. Anwendbares Recht
Unbeschadet besonderer Vereinbarungen zwischen den Parteien gilt Folgendes:
- Diese Lizenz unterliegt dem Recht des Mitgliedstaats der Europäischen Union, in dem der Lizenzgeber seinen Sitz,
Wohnsitz oder eingetragenen Sitz hat;
- diese Lizenz unterliegt dem belgischen Recht, wenn der Lizenzgeber keinen Sitz, Wohnsitz oder eingetragenen Sitz in
einem Mitgliedstaat der Europäischen Union hat.
Anlage
„Kompatible Lizenzen“ nach Artikel 5 der EUPL sind:
- GNU General Public License (GPL) v. 2, v. 3
- GNU Affero General Public License (AGPL) v. 3
- Open Software License (OSL) v. 2.1, v. 3.0
- Eclipse Public License (EPL) v. 1.0
- CeCILL v. 2.0, v. 2.1
- Mozilla Public Licence (MPL) v. 2
- GNU Lesser General Public Licence (LGPL) v. 2.1, v. 3
- Creative Commons Attribution-ShareAlike v. 3.0 Unported (CC BY-SA 3.0) für andere Werke als Software
- European Union Public Licence (EUPL) v. 1.1, v. 1.2
- Québec Free and Open-Source Licence — Reciprocity (LiLiQ-R) oder Strong Reciprocity (LiLiQ-R+)
- Die Europäische Kommission kann diesen Anhang aktualisieren, um neuere Fassungen der obigen Lizenzen
aufzunehmen, ohne hierfür eine neue Fassung der EUPL auszuarbeiten, solange diese Lizenzen die in Artikel 2
gewährten Rechte gewährleisten und den erfassten Quellcode vor ausschließlicher Aneignung schützen.
- Alle sonstigen Änderungen oder Ergänzungen dieses Anhangs bedürfen der Ausarbeitung einer neuen Version der
EUPL.
Copyright (c) 1998-2017 The OpenSSL Project. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.
3. All advertising materials mentioning features or use of this
software must display the following acknowledgment:
"This product includes software developed by the OpenSSL Project
for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
endorse or promote products derived from this software without
prior written permission. For written permission, please contact
openssl-core@openssl.org.
5. Products derived from this software may not be called "OpenSSL"
nor may "OpenSSL" appear in their names without prior written
permission of the OpenSSL Project.
6. Redistributions of any form whatsoever must retain the following
acknowledgment:
"This product includes software developed by the OpenSSL Project
for use in the OpenSSL Toolkit (http://www.openssl.org/)"
THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
OF THE POSSIBILITY OF SUCH DAMAGE.
This product includes cryptographic software written by Eric Young
(eay@cryptsoft.com). This product includes software written by Tim
Hudson (tjh@cryptsoft.com).
Original SSLeay License
Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
All rights reserved.
This package is an SSL implementation written
by Eric Young (eay@cryptsoft.com).
The implementation was written so as to conform with Netscapes SSL.
This library is free for commercial and non-commercial use as long as
the following conditions are aheared to. The following conditions
apply to all code found in this distribution, be it the RC4, RSA,
lhash, DES, etc., code; not just the SSL code. The SSL documentation
included with this distribution is covered by the same copyright terms
except that the holder is Tim Hudson (tjh@cryptsoft.com).
Copyright remains Eric Young's, and as such any Copyright notices in
the code are not to be removed.
If this package is used in a product, Eric Young should be given attribution
as the author of the parts of the library used.
This can be in the form of a textual message at program startup or
in documentation (online or textual) provided with the package.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. All advertising materials mentioning features or use of this software
must display the following acknowledgement:
"This product includes cryptographic software written by
Eric Young (eay@cryptsoft.com)"
The word 'cryptographic' can be left out if the rouines from the library
being used are not cryptographic related :-).
4. If you include any Windows specific code (or a derivative thereof) from
the apps directory (application code) you must include an acknowledgement:
"This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
The licence and distribution terms for any publically available version or
derivative of this code cannot be changed. i.e. this code cannot simply be
copied and put under another distribution licence
[including the GNU Public Licence.]
Ergänzende Linzenzhinweise
Die verwendeten OpenSource-Bibliotheken unterliegen den folgenden Nutzungsbedingungen:
Qt
Lizenz: LGPL v3
Version: 5.8.0
Adresse: https://www.qt.io/
http_parser
Lizenz: MIT
Version: 2.7.1
Adresse: https://github.com/nodejs/http-parser/
Die Lizenztexte lauten in ihrer originalen Fassung wie folgt:
GNU LESSER GENERAL PUBLIC LICENSE
The Qt Toolkit is Copyright (C) 2016 The Qt Company Ltd.
Contact: http://www.qt.io/licensing/
You may use, distribute and copy the Qt Toolkit under the terms of
GNU Lesser General Public License version 3, which is displayed below.
This license makes reference to the version 3 of the GNU General
Public License, which you can find in the LICENSE.GPLv3 file.
-------------------------------------------------------------------------
GNU LESSER GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright © 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies of this
licensedocument, but changing it is not allowed.
This version of the GNU Lesser General Public License incorporates
the terms and conditions of version 3 of the GNU General Public
License, supplemented by the additional permissions listed below.
0. Additional Definitions.
As used herein, “this License” refers to version 3 of the GNU Lesser
General Public License, and the “GNU GPL” refers to version 3 of the
GNU General Public License.
“The Library” refers to a covered work governed by this License,
other than an Application or a Combined Work as defined below.
An “Application” is any work that makes use of an interface provided
by the Library, but which is not otherwise based on the Library.
Defining a subclass of a class defined by the Library is deemed a mode
of using an interface provided by the Library.
A “Combined Work” is a work produced by combining or linking an
Application with the Library. The particular version of the Library
with which the Combined Work was made is also called the “Linked
Version”.
The “Minimal Corresponding Source” for a Combined Work means the
Corresponding Source for the Combined Work, excluding any source code
for portions of the Combined Work that, considered in isolation, are
based on the Application, and not on the Linked Version.
The “Corresponding Application Code” for a Combined Work means the
object code and/or source code for the Application, including any data
and utility programs needed for reproducing the Combined Work from the
Application, but excluding the System Libraries of the Combined Work.
1. Exception to Section 3 of the GNU GPL.
You may convey a covered work under sections 3 and 4 of this License
without being bound by section 3 of the GNU GPL.
2. Conveying Modified Versions.
If you modify a copy of the Library, and, in your modifications, a
facility refers to a function or data to be supplied by an Application
that uses the facility (other than as an argument passed when the
facility is invoked), then you may convey a copy of the modified
version:
a) under this License, provided that you make a good faith effort
to ensure that, in the event an Application does not supply the
function or data, the facility still operates, and performs
whatever part of its purpose remains meaningful, or
b) under the GNU GPL, with none of the additional permissions of
this License applicable to that copy.
3. Object Code Incorporating Material from Library Header Files.
The object code form of an Application may incorporate material from
a header file that is part of the Library. You may convey such object
code under terms of your choice, provided that, if the incorporated
material is not limited to numerical parameters, data structure
layouts and accessors, or small macros, inline functions and templates
(ten or fewer lines in length), you do both of the following:
a) Give prominent notice with each copy of the object code that
the Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the object code with a copy of the GNU GPL and this
license document.
4. Combined Works.
You may convey a Combined Work under terms of your choice that, taken
together, effectively do not restrict modification of the portions of
the Library contained in the Combined Work and reverse engineering for
debugging such modifications, if you also do each of the following:
a) Give prominent notice with each copy of the Combined Work that
the Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the Combined Work with a copy of the GNU GPL and this
license document.
c) For a Combined Work that displays copyright notices during
execution, include the copyright notice for the Library among
these notices, as well as a reference directing the user to the
copies of the GNU GPL and this license document.
d) Do one of the following:
0) Convey the Minimal Corresponding Source under the terms of
this License, and the Corresponding Application Code in a form
suitable for, and under terms that permit, the user to
recombine or relink the Application with a modified version of
the Linked Version to produce a modified Combined Work, in the
manner specified by section 6 of the GNU GPL for conveying
Corresponding Source.
1) Use a suitable shared library mechanism for linking with
the Library. A suitable mechanism is one that (a) uses at run
time a copy of the Library already present on the user's
computer system, and (b) will operate properly with a modified
version of the Library that is interface-compatible with the
Linked Version.
e) Provide Installation Information, but only if you would
otherwise be required to provide such information under section 6
of the GNU GPL, and only to the extent that such information is
necessary to install and execute a modified version of the
Combined Work produced by recombining or relinking the Application
with a modified version of the Linked Version. (If you use option
4d0, the Installation Information must accompany the Minimal
Corresponding Source and Corresponding Application Code. If you
use option 4d1, you must provide the Installation Information in
the manner specified by section 6 of the GNU GPL for conveying
Corresponding Source.)
5. Combined Libraries.
You may place library facilities that are a work based on the Library
side by side in a single library together with other library
facilities that are not Applications and are not covered by this
License, and convey such a combined library under terms of your
choice, if you do both of the following:
a) Accompany the combined library with a copy of the same work
based on the Library, uncombined with any other library
facilities, conveyed under the terms of this License.
b) Give prominent notice with the combined library that part of
it is a work based on the Library, and explaining where to find
the accompanying uncombined form of the same work.
6. Revised Versions of the GNU Lesser General Public License.
The Free Software Foundation may publish revised and/or new versions
of the GNU Lesser General Public License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Library
as you received it specifies that a certain numbered version of the
GNU Lesser General Public License “or any later version” applies to
it, you have the option of following the terms and conditions either
of that published version or of any later version published by the
Free Software Foundation. If the Library as you received it does not
specify a version number of the GNU Lesser General Public License,
you may choose any version of the GNU Lesser General Public License
ever published by the Free Software Foundation.
If the Library as you received it specifies that a proxy can decide
whether future versions of the GNU Lesser General Public License shall
apply, that proxy's public statement of acceptance of any version is
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.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
deal in the Software without restriction, including without limitation the
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
sell copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
IN THE SOFTWARE.

View File

@ -1,56 +1,6 @@
Nutzungsbedingungen
Allgemeines zur Installation
Bitte lesen Sie zunächst die Allgemeinen Geschäftsbedingungen so wie die Lizenzbedingungen für die Überlassung und Nutzung der AusweisApp2 durch. Nachdem Sie zugestimmt haben, können Sie die Installation fortsetzen.
Allgemeine Geschäftsbedingungen
§ 1 Nutzungsbedingungen und Datenschutzhinweis
(1) Diese Allgemeine Geschäftsbedingungen (AGB) des Bundes, vertreten durch das Bundesministerium des Innern (nachfolgend "Bund") und dem Nutzer gelten für die Überlassung und Nutzung der Software AusweisApp2 (nachfolgend AusweisApp2) und deren neue Versionen, die auf der Grundlage dieser Bedingungen überlassen werden.
(2) "Nutzer" im Sinne dieses Vertrages sind natürliche Personen.
§ 2 Vertragsgegenstand und Unentgeltlichkeit
(1) Die AusweisApp2 wird regelmäßig hinsichtlich ihrer Konformität zu den Technischen Richtlinien des Bundesamtes für Sicherheit in der Informationstechnik [TR-03124-2] zertifiziert sowie hinsichtlich ihrer Nutzerfreundlichkeit [EN ISO 9241 Teil 110 Ergonomie Mensch-System-Integration zur Prüfung der Benutzbarkeit und Funktionalität und Trusted Design Guidelines zur Prüfung der Vertrauenswürdigkeit] und auf Barrierefreiheit [BITV 2.0] überprüft.
(2) Die AusweisApp2 wird in maschinenlesbarer Form unentgeltlich überlassen. Der Quellcode der AusweisApp2 wird ebenfalls unentgeltlich veröffentlicht. Eine Auflistung der verwendeten Open Source-Bestandteile der AusweisApp2 findet sich im Anhang.
(3) Die AusweisApp2 wird von der Governikus GmbH & Co. KG (Governikus) als Erfüllungsgehilfe des Bundes überlassen.
§ 3 Verwendungszweck
Die AusweisApp2 und alle ihre Bestandteile dienen ausschließlich dazu, im Zusammenhang mit der Nutzung der Online-Ausweisfunktion des Personalausweises bzw. des elektronischen Aufenthaltstitels und der Übermittlung der damit verbundenen Daten gemäß den gesetzlichen Vorgaben verwendet zu werden.
§ 4 Pflichten und Obliegenheiten des Nutzers
(1) Der Nutzer verpflichtet sich, die AusweisApp2 entsprechend des in § 3 genannten Verwendungszweckes zu nutzen. Es liegt in seinem Interesse, dass in Verbindung mit der AusweisApp2 genutzte Hard- und Software des Nutzers immer auf dem neuesten Stand der Sicherheitstechnik (System- und Firmware Update, Virenscanner, Firewall usw.) sind.
(2) Es liegt im eigenen Interesse des Nutzers aber auch des Bundes, dass stets nur die neueste Version der AusweisApp2 (siehe § 5) verwendet wird.
§ 5 Pflege und Support
(1) Der Bund bietet nach eigenem Ermessen und ohne hierzu verpflichtet zu sein für Teile der AusweisApp2 zusätzliche kostenfreie Supportleistungen in Form von Dokumentationen und online Hilfen auf dem AusweisApp2-Portal im Internet unter der Adresse www.ausweisapp.bund.de an, sowie über die Hotline des Herstellers Governikus unter der E-Mail-Adresse: support@ausweisapp.de und der Tel.-Nr.: +49 1805 348 743. Auch stellt er verfügbare neue Versionen der AusweisApp2 zur Verfügung. Hieraus erwächst jedoch kein zusätzlicher Anspruch auf Mängelbeseitigung, auf Zertifizierung, auf Beibehaltung der Supportleistungen oder der Hotline und auf Überlassung neuer Versionen.
(2) Verfügbare neue Versionen der AusweisApp2 können im Internet kostenfrei auf dem AusweisApp2-Portal unter der Adresse www.ausweisapp.bund.de sowie über allgemein zugängliche AppStore heruntergeladen werden.
(3) Eventuelle Mängel der AusweisApp2 werden grundsätzlich dadurch behoben, dass der Bund jeweils eine neue Version der AusweisApp2 zum Herunterladen zur Verfügung stellt (siehe § 5 Absatz 1). Eine Pflicht zur Bereitstellung von neuen Versionen ergibt sich daraus grundsätzlich nicht.
§ 6 Hinweis auf gewerbliche und urheberrechtliche Schutzrechte
Die Zeichen AusweisApp2 und die entsprechenden Grafiken sowie das Signet zur Online-Ausweisfunktion sind für den Bund als Marken geschützt.
§ 7 Datenschutzhinweis
(1) Mit dieser Software werden personenbezogene Daten im Sinne des § 3 Absatz 1 des Bundesdatenschutzgesetzes (BDSG) zum Zwecke der Verarbeitung grundsätzlich nicht erhoben.
(2) Personenbezogene Daten aus dem Ausweischip werden ausschließlich zum Zweck des elektronischen Identitätsnachweises im Umfang der erteilten Berechtigung nach Einwilligung des Nutzers mit seiner Ausweis-PIN-Eingabe und auf dem Transportweg zwischen dem Ausweischip und dem Diensteanbieter sicher verschlüsselt und auch für Governikus nicht lesbar übertragen.
(3) Neben den reinen Daten, die zur Identifizierung/ Authentisierung benötigt werden, erhebt die Software nur mit Einverständnis des Nutzers Daten über die Art und Version der Anwendungsumgebung (Betriebssystem, Lesegeräte usw.) des Nutzers. Diese Daten kann der Nutzer bei Bedarf an Governikus übermitteln, um die ordnungsgemäße Verarbeitung prüfen zu lassen und Fehlern im Verarbeitungsprozess vorzubeugen. Die Nutzung der Daten erfolgt dann im Rahmen des § 14 BDSG durch Governikus im Auftrag des Bundes und nur für den genannten Zweck.
(4) Die in der AusweisApp2 enthaltene Selbstauskunft über die im Chip gespeicherten Daten, ist ein Dienst der durch Governikus über das Internet erbracht wird. Die Ausweisdaten werden dabei nur zur Anzeige des Nutzers gebracht und nicht dauerhaft bei Governikus gespeichert oder für andere Zwecke verwendet.
§ 8 Deutsches Recht
Auf diese Nutzungsbedingungen ist ausschließlich deutsches Recht unter Ausschluss des Übereinkommens der Vereinten Nationen über Verträge über den internationalen Warenkauf (CISG) anwendbar.
Anhang
Eingearbeitete Open Source-Komponenten
Qt, OpenSSL und http_parser.
Lizenzbedingungen
Die AusweisApp2 und ihr Quellcode werden unter der EUPL v1.2 bereitgestellt, mit Ausnahme der Open-Source-Bibliothek OpenSSL, die unter der OpenSSL License / SSLeay License lizensiert ist.
Der Quellcode der AusweisApp2 wird unter der EUPL v1.2 bereitgestellt, mit Ausnahme der Bibliothek OpenSSL, die unter der OpenSSL License / SSLeay License lizensiert ist.

View File

@ -9,6 +9,15 @@ Kontakt
| ausweisapp2@governikus.de
Lizenz
------
Der vorliegende Quellcode wird unter der EUPL v1.2 bereitgestellt, mit
Ausnahme der Bibliothek OpenSSL, die unter der OpenSSL License / SSLeay License
lizensiert ist. Die Datei ``LICENSE.officially.txt`` gilt ausschließlich für
die offizielle Version der AusweisApp2, welche von der Governikus GmbH & Co. KG
im Auftrag des Bundes unter https://www.ausweisapp.bund.de bereitgestellt wird.
Toolchain / Bibliotheken
------------------------
Die Einrichtung der Toolchain wird im Unterordner ``./libs``
@ -22,8 +31,8 @@ Derzeit ist es leider noch nicht möglich, die AusweisApp2 ohne Patches
an OpenSSL und Qt voll funktionsfähig auszuliefern.
Dies liegt unter anderem an dem notwendigen RSA-PSK-Patch für
OpenSSL 1.0.2, welcher mit OpenSSL 1.1.0 nicht mehr notwendig ist.
Diese OpenSSL-Version wird allerdings voraussichtlich erst mit Qt 5.10
bzw. 5.9.2 unterstützt. (siehe https://bugreports.qt.io/browse/QTBUG-52905)
Diese OpenSSL-Version wird allerdings erst mit Qt 5.10 unterstützt.
(siehe https://bugreports.qt.io/browse/QTBUG-52905)
OpenSSL 1.1.0 wird mit der AusweisApp2 1.14.0 unterstützt.
LibreSSL wird auf Grund des fehlenden RSA-PSK nicht unterstützt.
@ -40,8 +49,8 @@ Dazu kann die Variable *CMAKE_PREFIX_PATH* verwendet werden um die Toolchain CMa
bekannt zu machen. Alternativ zu %PATH% bzw. $PATH können alle Ordner, die dort
für den Build eingetragen wurden, über diesen Mechanismus an CMake übergeben werden.
Als Generator für Makefiles sollte eine Variante von "MinGW Makefiles" gewählt
werden.
Als Generator für Makefiles sollte unter Windows eine Variante von "MinGW Makefiles"
gewählt werden.
Beim Generieren des Makefiles ist zu beachten, dass die AusweisApp2 nur sogenannte
"out of source tree"-Builds erlaubt. Daher ist die empfohlene Variante von CMake
@ -76,7 +85,6 @@ Beispiel über die CLI:
-- BUILD_SHARED_LIBS: OFF
-- Found OpenSSL: C:/Toolchain/lib/libssl.dll.a;C:/Toolchain/lib/libcrypto.dll.a (found suitable version "1.0.1i", minimum required is "1.0.1")
-- Found Hg: C:/Program Files/TortoiseHg/hg.exe (found version "3.1.1")
-- PLATFORM_WIDGETS: WINDOWS
-- Configuring done
-- Generating done
-- Build files have been written to: C:/build
@ -124,19 +132,19 @@ eingebettet werden kann. Zu beachten ist vor allem, dass in der Umgebungsvariabl
eingerichtet ist. Im Ordner "~/Library/MobileDevice/Provisioning Profiles"
sind diese ebenfalls einsehbar.
Unter Umständen kann es zu Berechtigungsproblemen mit XCode und den Zugriff auf
die Keys kommen. Dabei ist es oft hilfreich die Keys im MacOS-Schlüsselbund
die Keys kommen. Dabei ist es oft hilfreich die Keys im macOS-Schlüsselbund
freizuschalten bzw. den Schlüsselbund freizugeben.
security unlock-keychain -pPASSWORD ${HOME}/Library/Keychains/login.keychain
Unter iOS wird die AusweisApp2 mittels XCode gebaut!
r iOS wird die AusweisApp2 mittels XCode gebaut!
::
$ cd build
$ cmake -DCMAKE_PREFIX_PATH=/Users/governikus/Toolchain/dist -DCMAKE_TOOLCHAIN_FILE=../AusweisApp2/cmake/iOS.toolchain.cmake -DCMAKE_BUILD_TYPE=release ../AusweisApp2 -GXcode
$ cmakexbuild install -configuration Release
$ cmakexbuild -target ipa
$ xcodebuild -target install -configuration Release
$ xcodebuild -target ipa -configuration Release
Im Build-Ordner befindet sich nun eine "AusweisApp2-x.y.z.ipa" Datei, welches das
@ -152,7 +160,7 @@ Nachdem die Build-Umgebung eingerichtet ist, kann je nach System ein Package ers
notwendig.
Mittels "mingw32-make package" wird die AusweisApp2 gebaut und ein MSI Paket bereitgestellt.
- Unter MacOS wird mittels "make package" die AusweisApp2 gebaut und ein DMG bereitgestellt.
- Unter macOS wird mittels "make package" die AusweisApp2 gebaut und ein DMG bereitgestellt.
- Um ein APK für Android zu bauen, sind zwei Schritte notwendig, da CMake das Format bisher
nicht unterstützt. Daher sind nach der Konfiguration des Projektes folgende Befehle notwendig
@ -162,72 +170,3 @@ Nachdem die Build-Umgebung eingerichtet ist, kann je nach System ein Package ers
$ make install
$ make apk
Release
-------
Folgende Schritte sind notwendig um ein Tag bzw. Release zu bauen.
Tag anbringen
^^^^^^^^^^^^^
#. Mittels "hg update -r stable" auf das jeweilige Changeset wechseln, welches mit einem
Tag versehen werden soll.
#. Mittels "hg status" überprüfen, dass keine weiteren Änderungen in der Working-Copy
vorhanden sind.
#. In der Datei CMakeLists.txt die PROJECT_VERSION im PROJECT entsprechend anpassen.
#. Mittels "hg tag x.y.z" (Beispiel: hg tag 1.0.0) den Tag anbringen.
#. Mittels "hg bookmark -r x.y.z release" das Bookmark verschieben, damit der Jenkins beim
Release-Build den aktuellen Tag findet.
#. Mittels "hg push" ins Main-Repository übertragen.
Tag bauen
^^^^^^^^^
Wichtig: Der Jenkins erstellt das Release anhand des Bookmarks "release".
Die Jobs müssen nach dem Setzen manuell gestartet werden!
Nachdem die Jobs für Windows und MacOS durchgelaufen sind, muss
der Job für den AppCast gestartet werden.
Für einen sauberen Build sollte folgendes Vorgehen angewandt werden.
Beim Durchlauf von CMake wird, sofern die Versionsverwaltung vorhanden ist, der Mercurial-Tag
angezeigt.
#. Mittels "hg clone -r x.y.z http://mercurial/AusweisApp2" den Tag ausschecken.
- **Wichtig:** Wenn ein bestehender Clone mittels "hg update -r x.y.z" benutzt wird,
sollte mit "hg status -i" geprüft werden, ob die Working-Copy vollständig sauber ist!
#. Einen build-Ordner erstellen und in den Ordner wechseln. Zum Beispiel /tmp/buildTagXYZ
#. cmake -DCMAKE_BUILD_TYPE=release ../AusweisApp2
#. make package_source
#. make package
Probleme & Lösungen
^^^^^^^^^^^^^^^^^^^
- Das gebaute Package beinhaltet einen Hashwert im Namen
- CMake hat erkannt, dass sich die aktuelle Working-Copy nicht auf dem Tag befindet und hängt
somit den Hashwert des Changesets an. Mittels "hg id -t" kann man überprüfen, ob man sich auf
dem Tag befindet.
- Mittels "hg update -r x.y.z" sollte man auf den Tag wechseln.
- Hinter dem Hashwert ist ein +
- Das bedeutet, dass "uncommitted changes" während des Builds in der Working-Copy enthalten waren.
- Dies kann man mittels "hg status" überprüfen.

49
Releasing.rst 100644
View File

@ -0,0 +1,49 @@
Release
=======
Folgende Schritte sind notwendig um ein Tag bzw. Release zu bauen.
Tag anbringen
-------------
#. Mittels "hg update -r stable" auf das jeweilige Changeset wechseln, welches mit einem
Tag versehen werden soll.
#. Mittels "hg status" überprüfen, dass keine weiteren Änderungen in der Working-Copy
vorhanden sind.
#. In der Datei CMakeLists.txt die PROJECT_VERSION im PROJECT entsprechend anpassen.
#. Mittels "hg tag x.y.z" (Beispiel: hg tag 1.0.0) den Tag anbringen.
#. Mittels "hg push" ins Main-Repository übertragen.
Tag bauen
---------
Die Release-Jobs müssen nach dem Tag manuell gestartet werden!
Jenkins erstellt das Release anhand des Bookmarks "release" oder des tags/changesets,
welcher als Parameter übergeben wird.
Nachdem die notwendigen Jobs (Windows/macOS/Docs/...) durchgelaufen sind, muss der Job
für den AppCast gestartet werden.
Im Ordner ``resources/jenkins/dsl`` sind die jeweiligen Konfigurationen der Jenkins-Jobs
hinterlegt.
Probleme & Lösungen
-------------------
- Das gebaute Package beinhaltet einen Hashwert im Namen
- CMake hat erkannt, dass sich die aktuelle Working-Copy nicht auf dem Tag befindet und hängt
somit den Hashwert des Changesets an. Mittels "hg id -t" kann man überprüfen, ob man sich auf
dem Tag befindet.
- Mittels "hg update -r x.y.z" sollte man auf den Tag wechseln.
- Hinter dem Hashwert ist ein +
- Das bedeutet, dass "uncommitted changes" während des Builds in der Working-Copy enthalten waren.
- Dies kann man mittels "hg status" überprüfen.

View File

@ -50,7 +50,7 @@ MACRO(CHECK_DVCS)
IF(HG_FOUND)
DVCS_CALL("tag" "" id -t)
ELSEIF(GIT_FOUND)
DVCS_CALL("tag" "" name-rev --tags --name-only HEAD)
DVCS_CALL("tag" "" tag -l --points-at HEAD)
ENDIF()
IF(NOT "${dvcs_tag}" STREQUAL "tip" AND NOT "${dvcs_tag}" STREQUAL "" AND NOT "${dvcs_tag}" STREQUAL "undefined")
IF(NOT dvcs_tag STREQUAL PROJECT_VERSION)
@ -93,8 +93,8 @@ MACRO(GET_DVCS_INFO)
DVCS_CALL("revision" "-" id -i)
ELSEIF(GIT_FOUND)
DVCS_CALL("revision" "-" rev-parse --verify --short HEAD)
DVCS_EXECUTE(dvcs_dirty_wc diff --shortstat)
IF(DEFINED dvcs_dirty_wc)
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}+)

View File

@ -139,9 +139,12 @@ ELSEIF(ANDROID)
INSTALL(TARGETS AusweisApp DESTINATION ${ANDROID_DEST} ${PERMISSIONS} COMPONENT Application)
SET(RESOURCES_IMG_ANDROID_DIR ${RESOURCES_DIR}/images/android)
IF(IS_DEVELOPER_VERSION)
SET(ANDROID_LAUNCHER_ICON "npa_beta.png")
IF(BUILD_PREVIEW)
SET(ANDROID_LAUNCHER_ICON "npa_preview.png")
SET(ANDROID_PACKAGE_NAME "com.governikus.ausweisapp2.dev")
ELSEIF(IS_DEVELOPER_VERSION)
SET(ANDROID_LAUNCHER_ICON "npa_beta.png")
SET(ANDROID_PACKAGE_NAME "com.governikus.ausweisapp2")
ELSE()
SET(ANDROID_LAUNCHER_ICON "npa.png")
SET(ANDROID_PACKAGE_NAME "com.governikus.ausweisapp2")

View File

@ -35,7 +35,12 @@ SET(CPACK_PACKAGE_CONTACT "info@governikus.com")
SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Governikus AusweisApp2")
SET(CPACK_PACKAGE_DESCRIPTION_FILE "${PROJECT_SOURCE_DIR}/README.rst")
SET(CPACK_PACKAGE_FILE_NAME ${FILENAME})
SET(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/LICENSE.txt")
IF(VENDOR_GOVERNIKUS)
SET(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/LICENSE.officially.txt")
ELSE()
SET(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/LICENSE.txt")
ENDIF()
IF(APPLE AND NOT IOS)
FIND_PROGRAM(ICONV iconv)
@ -55,6 +60,7 @@ SET(CPACK_SOURCE_GENERATOR TGZ)
SET(CPACK_SOURCE_PACKAGE_FILE_NAME ${FILENAME} CACHE INTERNAL "tarball basename")
SET(CPACK_SOURCE_IGNORE_FILES "\\\\.hgignore" "\\\\.hgtags" "/\\\\.hg/")
LIST(APPEND CPACK_SOURCE_IGNORE_FILES "\\\\.gitignore" "/\\\\.git/")
LIST(APPEND CPACK_SOURCE_IGNORE_FILES "vendor.txt")
LIST(APPEND CPACK_SOURCE_IGNORE_FILES "${CMAKE_CURRENT_BINARY_DIR}")
LIST(APPEND CPACK_SOURCE_IGNORE_FILES "CMakeCache.txt")
@ -90,11 +96,6 @@ IF(WIN32)
ENDIF()
ELSEIF(IOS)
FIND_PROGRAM(xcrun xcrun CMAKE_FIND_ROOT_PATH_BOTH)
IF(NOT xcrun)
MESSAGE(FATAL_ERROR "Cannot find xcrun to create IPAs")
ENDIF()
FILE(WRITE ${PROJECT_BINARY_DIR}/ipa.cmake "
SET(BUNDLE_DIRS \"\${CONFIG}-iphoneos;UninstalledProducts;UninstalledProducts/iphoneos\")
@ -112,7 +113,9 @@ ELSEIF(IOS)
MESSAGE(FATAL_ERROR \"Bundle directory does not exist\")
ENDIF()
EXECUTE_PROCESS(COMMAND ${xcrun} -sdk iphoneos PackageApplication \${BundleDir} -o ${PROJECT_BINARY_DIR}/${CPACK_PACKAGE_FILE_NAME}.ipa)
EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E copy_directory \${BundleDir} Payload/AusweisApp2.app)
EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E tar cf \"${CPACK_PACKAGE_FILE_NAME}.ipa\" --format=zip Payload)
EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E remove_directory Payload)
")
ADD_CUSTOM_TARGET(ipa COMMAND ${CMAKE_COMMAND} -DCONFIG=$<CONFIGURATION> -P ${CMAKE_BINARY_DIR}/ipa.cmake)

View File

@ -140,7 +140,7 @@ IF(UNCRUSTIFY)
EXECUTE_PROCESS(COMMAND ${UNCRUSTIFY} --version OUTPUT_VARIABLE UNCRUSTIFY_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)
STRING(REPLACE "uncrustify " "" UNCRUSTIFY_VERSION ${UNCRUSTIFY_VERSION})
SET(UNCRUSTIFY_NEEDED_VERSION "0.64")
SET(UNCRUSTIFY_NEEDED_VERSION "0.65")
IF("${UNCRUSTIFY_VERSION}" STRLESS "${UNCRUSTIFY_NEEDED_VERSION}")
MESSAGE(WARNING "Uncrustify seems to be too old. Use at least ${UNCRUSTIFY_NEEDED_VERSION}... you are using: ${UNCRUSTIFY_VERSION}")
ELSE()
@ -200,6 +200,12 @@ IF(CONVERT)
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
WORKING_DIRECTORY ${RESOURCES_DIR}/images)
ENDIF()
@ -229,6 +235,12 @@ SET(PNGQUANT_CMD pngquant -f -o)
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
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
COMMAND ${PNGQUANT_CMD} android/xhdpi/npa_preview.png -- android/xhdpi/npa_preview.png
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)
ENDIF()

View File

@ -0,0 +1,22 @@
AusweisApp2 1.12.3
^^^^^^^^^^^^^^^^^^
**Releasedatum:** 15. September 2017
Anwender
""""""""
- Anzeige des Verwendungszwecks korrigiert.
- Anbieterliste beinhaltet nur noch die Anbieter
der aktuellen Plattform.
- Unterstützung von arm64-v8a.
Entwickler
""""""""""
- Finale API des eingebetteten SDKs.
- Anpassung der verschiedenen README-Dateien um
die AusweisApp2 selbst zu bauen.

View File

@ -4,6 +4,7 @@ Release Notes
.. toctree::
:maxdepth: 1
1.12.3
1.12.2
1.12.1
1.12.0

View File

@ -42,7 +42,7 @@ master_doc = 'index'
# General information about the project.
project = 'AusweisApp2'
copyright = '2016, Governikus GmbH & Co. KG'
copyright = '2016-2017, Governikus GmbH & Co. KG'
author = 'Governikus GmbH & Co. KG'
# The version info for the project you're documenting, acts as replacement for
@ -145,7 +145,7 @@ latex_elements = {
# (source start file, target name, title,
# author, documentclass [howto, manual, or own class]).
latex_documents = [
(master_doc, 'AusweisApp2_ReleaseNotes.tex', 'AusweisApp2 Release Notes',
(master_doc, 'AusweisApp2-@VERSION_DVCS@-ReleaseNotes.tex', 'AusweisApp2 Release Notes',
'Governikus GmbH \& Co. KG', 'howto'),
]

View File

@ -42,7 +42,7 @@ master_doc = 'appcast'
# General information about the project.
project = 'AusweisApp2'
copyright = '2016, Governikus GmbH & Co. KG'
copyright = '2016-2017, Governikus GmbH & Co. KG'
author = 'Governikus GmbH & Co. KG'
# The version info for the project you're documenting, acts as replacement for

View File

@ -8,6 +8,8 @@ der AusweisApp2 unterstützt.
Betriebssysteme
"""""""""""""""
- OS X 10.9
- OS X 10.10
- OS X 10.11
@ -20,10 +22,23 @@ Betriebssysteme
- Windows 10 (64bit)
- Android 4.3 und höher (x86, armeabi-v7a, arm64-v8a)
Karten
""""""
- Neuer Personalausweis
- Elektronischer Aufenthaltstitel
macOS / Windows
"""""""""""""""
Browser
"""""""
~~~~~~~
Das BSI hat die Online-Ausweisfunktion als einen Aufruf konzipiert,
der unabhängig vom verwendeten Browser ist. Durch die strikte
Einhaltung der Vorgaben aus den entsprechenden Technischen Richtlinie
@ -33,9 +48,9 @@ und sollte daher mit allen marktüblichen Browsern verwendet werden können.
Im Rahmen der Qualitätssicherung werden die folgenden Browserversionen
getestet.
- Firefox 54
- Firefox 55
- Chrome 59
- Chrome 61
- Internet Explorer 11
@ -43,14 +58,18 @@ getestet.
Kartenleser
"""""""""""
Alle Kartenlesegeräte, die die Onlineausweisfunktionalität unterstützen und nach
Kartenlesegeräte
~~~~~~~~~~~~~~~~
Alle Kartenlesegeräte, die die Onlineausweisfunktionalität unterstützen und nach
BSI TR-03119 zertifiziert sind. Details hierzu befinden sich auf der Homepage
des BSI unter "Nach Technischen Richtlinien zertifizierte Produkte".
Zusätzlich werden folgende nicht zertifizierte Kartenleser getestet.
- Cherry TC-1200
- Cherry TC-1300
- Identiv Cloud 4701 F
- Identiv SCL3711
@ -59,10 +78,6 @@ Zusätzlich werden folgende nicht zertifizierte Kartenleser getestet.
- Identiv CLOUD 4700 F
- ST-1200-CR3 / ST-1275
- SDI Cloud uTrust 4700 F
- ACR1252U
- OMNIKEY 5021 CL
@ -73,12 +88,38 @@ Zusätzlich werden folgende nicht zertifizierte Kartenleser getestet.
Aktuelle Informationen zu Kartenlesern finden Sie auf unserer Webseite:
https://www.ausweisapp.bund.de/informieren/voraussetzungen/
https://www.ausweisapp.bund.de/fragen-und-antworten/voraussetzungen/
Karten
""""""
- Neuer Personalausweis
Android
"""""""
- Elektronischer Aufenthaltstitel
Browser
~~~~~~~
Das BSI hat die Online-Ausweisfunktion als einen Aufruf konzipiert,
der unabhängig vom verwendeten Browser ist. Durch die strikte
Einhaltung der Vorgaben aus den entsprechenden Technischen Richtlinie
des BSI (BSI TR-03124) ist die AusweisApp2 generell browserunabhängig.
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
- Chrome 61
- Android System WebView 60
Kartenlesegeräte
~~~~~~~~~~~~~~~~
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/
Darüber hinaus ist die Verwendung eines Bluetooth-Kartenlesegeräts möglich.
Folgendes Bluetooth-Kartenlesegerät wird von der AusweiApp2 unterstützt:
- cyberJack wave

View File

@ -6,6 +6,7 @@ Versionszweig 1.12
.. toctree::
:maxdepth: 1
1.12.3
1.12.2
1.12.1
1.12.0

View File

@ -61,9 +61,9 @@ to send JSON commands to the SDK and to pass discovered NFC tags to the SDK.
The second AIDL interface is given to the SDK by the client application. It
enables the client to receive the intial session parameters as well as
JSON messages
from the SDK. Both interfaces are listed below and you need to import them into
your build environment.
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.
.. seealso::
@ -101,6 +101,7 @@ Callback
{
void sessionIdGenerated(String pSessionId, boolean pIsSecureSessionId);
void receive(String pJson);
void sdkDisconnected();
}
@ -124,7 +125,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
@ -187,15 +188,17 @@ 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
@ -223,13 +226,12 @@ by Android on service connection and disconnection.
Bind service to raw connection
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
In order to perform the actual binding a directed Intent, which identifies
the AusweisApp2 SDK, is created.
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
@ -355,11 +357,17 @@ connected clients. There is a maximum of one established session at a time.
In order to open a session with the SDK you need to pass an
instance of **IAusweisApp2SdkCallback** to the **connectSdk** function of your
previously acquired instance of **IAusweisApp2Sdk**. If your callback is accepted,
the function returns true. Otherwise there is another session connected.
the function returns true. Otherwise there is a problem with your supplied callback.
Sessions will be disconnected once the IBinder instance of the connected client is
invalidated or another communication error occurs. Please see
invalidated, another communication error occurs or another Client connects. Please see
:ref:`android_disconnect_sdk` for instructions to gracefully disconnect from the SDK.
As mentioned above: If there already is a connected client and a second client attempts
to connect, the first client is disconnected and the second client is granted exclusive
access to the SDK. The first client is informed via its callback by **sdkDisconnected**.
The second client is presented a fresh environment and it has no access to any data of
the first client.
If you have successfully established a session, the **sessionIdGenerated** function
of your callback is invoked. With this invocation you receive two arguments.
**pIsSecureSessionId** is true if the SDK was able to gather enough entropy in
@ -464,15 +472,14 @@ 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**. 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.
instance of **IBinder**. You can unbind from the SDK Android service to undo
your binding, like shown in the code listing below.
.. code-block:: java
@ -663,7 +670,10 @@ are shown in code listing below.
}
}
// [...]
This class must now be added to the activity:
.. code-block:: java
ForegroundDispatcher mDispatcher = new ForegroundDispatcher(this);

View File

@ -117,7 +117,7 @@ RUN_AUTH
^^^^^^^^
Starts an authentication.
The AusweisApp2 will send a :ref:`auth` message when the authentication is started.
The AusweisApp2 will send an :ref:`auth` message when the authentication is started.
- **tcTokenURL**:
@ -166,14 +166,14 @@ SET_ACCESS_RIGHTS
^^^^^^^^^^^^^^^^^
Set effective access rights.
By default the **"effective"** access rights are **"optional"** + **"required"**.
If you want to enable or disable some **"optional"** access rights you can
By default the **effective** access rights are **optional** + **required**.
If you want to enable or disable some **optional** access rights you can
send this command to modify the **effective** access rights.
The AusweisApp2 will send an :ref:`access_rights` message as an answer.
- **raw**:
- **chat**:
List of enabled **optional** access rights. If you send an empty **[]**
all **optional** access rights are disabled.
@ -181,7 +181,14 @@ The AusweisApp2 will send an :ref:`access_rights` message as an answer.
{
"cmd": "SET_ACCESS_RIGHTS",
"raw": []
"chat": []
}
.. code-block:: json
{
"cmd": "SET_ACCESS_RIGHTS",
"chat": ["FamilyName"]
}
.. note::
@ -189,6 +196,8 @@ The AusweisApp2 will send an :ref:`access_rights` message as an answer.
:ref:`access_rights` message. Otherwise you will get a :ref:`bad_state`
message as an answer.
.. seealso::
List of possible access rights are listed in :ref:`access_rights`.
@ -272,7 +281,7 @@ SET_PIN
Set PIN of inserted card.
If the AusweisApp2 sends message :ref:`enter_pin` you need
to send this command to unlock the card with the PIN.
to send this command to unblock the card with the PIN.
The AusweisApp2 will send an :ref:`enter_pin` message on error
or message :ref:`enter_can` if the retryCounter of the card
@ -282,10 +291,11 @@ For detailed information see message :ref:`enter_pin`.
If the PIN was correct, the workflow will continue.
If the last attempt to enter the PIN failed, AusweisApp2
will send the message :ref:`enter_puk`.
will send the message :ref:`enter_puk` as the retryCounter
is decreased to **0**.
- **value**: The personal identification number of the card.
- **value**: The personal identification number (PIN) of the card.
This must be 6 digits.
.. code-block:: json
@ -310,13 +320,13 @@ SET_CAN
Set CAN of inserted card.
If the AusweisApp2 sends message :ref:`enter_can` you need
to send this command to unlock the last retry of :ref:`set_pin`.
to send this command to unblock the last retry of :ref:`set_pin`.
The AusweisApp2 will send an :ref:`enter_can` message on error.
Otherwise the workflow will continue with :ref:`enter_pin`.
- **value**: The card access number of the card.
- **value**: The card access number (CAN) of the card.
This must be 6 digits.
.. code-block:: json
@ -331,3 +341,34 @@ Otherwise the workflow will continue with :ref:`enter_pin`.
:ref:`enter_can` message. Otherwise you will get a :ref:`bad_state`
message as an answer.
.. _set_puk:
SET_PUK
^^^^^^^
Set PUK of inserted card.
If the AusweisApp2 sends message :ref:`enter_puk` you need
to send this command to unblock :ref:`set_pin`.
The AusweisApp2 will send an :ref:`enter_puk` message on error
or if the PUK is operative.
Otherwise the workflow will continue with :ref:`enter_pin`.
For detailed information see message :ref:`enter_puk`.
- **value**: The personal unblocking key (PUK) of the card.
This must be 10 digits.
.. code-block:: json
{
"cmd": "SET_PUK",
"value": "1234567890"
}
.. note::
This command is allowed only if the AusweisApp2 sends an initial
:ref:`enter_puk` message. Otherwise you will get a :ref:`bad_state`
message as an answer.

View File

@ -42,7 +42,7 @@ master_doc = 'index'
# General information about the project.
project = 'AusweisApp2 SDK'
copyright = '2016, Governikus GmbH & Co. KG'
copyright = '2016-2017, Governikus GmbH & Co. KG'
author = 'Governikus GmbH & Co. KG'
# The version info for the project you're documenting, acts as replacement for
@ -143,7 +143,7 @@ latex_elements = {
# (source start file, target name, title,
# author, documentclass [howto, manual, or own class]).
latex_documents = [
(master_doc, 'AusweisApp2_SDK.tex', 'AusweisApp2 SDK',
(master_doc, 'AusweisApp2-@VERSION_DVCS@-SDK.tex', 'AusweisApp2 SDK',
'Governikus GmbH \& Co. KG', 'howto'),
]

View File

@ -20,6 +20,35 @@ Also this documentation provides some example workflows to
show a possible communication.
.. important::
The AusweisApp2 does **not** provide any personal data to
your client application directly as AusweisApp2 does not
have access to this data for security reasons.
AusweisApp2 facilitates a secure connection between the
eID server and the ID card, enabling the eID server to get
those data from the card.
This way your backend receives high level trust data.
Since your client application runs in a user's environment,
you could not be sure about the integrity of the data
if your client application were to receive high sensitive
data from the AusweisApp2 directly as your backend does
not have any possibility to verify the source of the data.
Also this approach, recommended for compliance reasons by the
Federal Office for Information Security, spares your client
application the necessity of encypting these high sensitive
data.
In case your client application requires data input from the
ID card, you need to get this from the backend system
(e.g. the eID server) after a succesfull authentication.
.. seealso::
`TR-03124`_, part 1: Specifications
.. _TR-03124: https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Publikationen/TechnischeRichtlinien/TR03124/TR-03124-1.pdf
Recommended

View File

@ -30,7 +30,18 @@ the whole workflow.
- **error**: This optional parameter indicates an error of a :ref:`set_access_rights` call
if the command contained invalid data.
- **raw**: Access rights of the service provider.
- **aux**: Optional auxiliary data of the service provider.
- **ageVerificationDate**: Optional required date of birth for AgeVerification as ISO 8601.
- **requiredAge**: Optional required age for AgeVerification. It is calculated
by AusweisApp2 on the basis of ageVerificationDate and current date.
- **validityDate**: Optional validity date as ISO 8601.
- **communityId**: Optional id of community.
- **chat**: Access rights of the service provider.
- **effective**: Indicates the enabled access rights of **optional** and **required**.
@ -38,26 +49,73 @@ the whole workflow.
- **required**: These rights are mandatory and cannot be disabled.
- **transactionInfo**: Optional transaction information.
.. code-block:: json
{
"msg": "ACCESS_RIGHTS",
"error": "some optional error message",
"raw":
"aux":
{
"ageVerificationDate": "1999-07-20",
"requiredAge": "18",
"validityDate": "2017-07-20",
"communityId": "02760400110000"
},
"chat":
{
"effective": [24,20,16,15,14,12,11,10,9,8,2,0],
"optional": [15],
"required": [24,20,16,14,12,11,10,9,8,2,0]
"effective": ["Address", "FamilyName", "GivenNames", "AgeVerification"],
"optional": ["GivenNames", "AgeVerification"],
"required": ["Address", "FamilyName"]
},
"transactionInfo": "this is an example"
}
.. code-block:: json
{
"msg": "ACCESS_RIGHTS",
"chat":
{
"effective": ["Address", "FamilyName", "GivenNames", "AgeVerification"],
"optional": ["GivenNames", "AgeVerification"],
"required": ["Address", "FamilyName"]
}
}
The following access rights are possible:
- Address
- BirthName
- FamilyName
- GivenNames
- PlaceOfBirth
- DateOfBirth
- DoctoralDegree
- ArtisticName
- Pseudonym
- ValidUntil
- Nationality
- IssuingCountry
- DocumentType
- ResidencePermitI
- ResidencePermitII
- CommunityID
- AddressVerification
- AgeVerification
.. seealso::
`TR-03110`_, part 4, chapter 2.2.3
.. _TR-03110: https://www.bsi.bund.de/EN/Publications/TechnicalGuidelines/TR03110/BSITR03110.html
`TR-03127`_, chapter 3.2.2
.. _TR-03110: https://www.bsi.bund.de/EN/Publications/TechnicalGuidelines/TR03110/BSITR03110.html
.. _TR-03127: https://www.bsi.bund.de/DE/Publikationen/TechnischeRichtlinien/tr03127/tr-03127.html
@ -230,6 +288,8 @@ Provides information about the used certificate.
- **termsOfUsage**: Raw certificate information about
the terms of usage.
- **purpose**: Parsed purpose of the terms of usage.
- **validity**: Validity dates of the certificate in UTC.
- **effectiveDate**: Certificate is valid since this date.
@ -246,7 +306,8 @@ Provides information about the used certificate.
"issuerUrl": "http://www.governikus.de",
"subjectName": "Governikus GmbH & Co. KG",
"subjectUrl": "https://test.governikus-eid.de",
"termsOfUsage": "Anschrift:\t\r\nGovernikus GmbH & Co. KG\r\nAm Fallturm 9\r\n28359 Bremen\t\r\n\r\nE-Mail-Adresse:\thb@bos-bremen.de\t\r\n\r\nZweck des Auslesevorgangs:\tDemonstration des eID-Service\t\r\n\r\nZuständige Datenschutzaufsicht:\t\r\nDie Landesbeauftragte für Datenschutz und Informationsfreiheit der Freien Hansestadt Bremen\r\nArndtstraße 1\r\n27570 Bremerhaven"
"termsOfUsage": "Anschrift:\t\r\nGovernikus GmbH & Co. KG\r\nAm Fallturm 9\r\n28359 Bremen\t\r\n\r\nE-Mail-Adresse:\thb@bos-bremen.de\t\r\n\r\nZweck des Auslesevorgangs:\tDemonstration des eID-Service\t\r\n\r\nZuständige Datenschutzaufsicht:\t\r\nDie Landesbeauftragte für Datenschutz und Informationsfreiheit der Freien Hansestadt Bremen\r\nArndtstraße 1\r\n27570 Bremerhaven",
"purpose": "Demonstration des eID-Service"
},
"validity":
{
@ -264,11 +325,11 @@ ENTER_CAN
^^^^^^^^^
Indicates that a CAN is required to continue workflow.
If the AusweisApp2 will send this message you need to
provide the CAN of inserted card with :ref:`set_can`.
If the AusweisApp2 sends this message, you will have to
provide the CAN of the inserted card with :ref:`set_can`.
The workflow will automatically continue if the CAN
was correct and the AuweisApp2 will send a :ref:`enter_pin` message.
The workflow will automatically continue if the CAN was correct
and the AusweisApp2 will send an :ref:`enter_pin` message.
If the correct CAN is entered the retryCounter will still be **1**.
If your application provides an invalid :ref:`set_can` command
@ -297,12 +358,16 @@ again but without an error parameter.
"attached": true,
"card":
{
"inoperative": false,
"deactivated": false,
"retryCounter": 1
}
}
}
.. note::
There is no retry limit for an incorrect CAN.
@ -313,16 +378,15 @@ ENTER_PIN
Indicates that a PIN is required to continue the workflow.
If the AusweisApp2 sends this message, you will have to
provide the PIN of inserted card with :ref:`set_pin`.
provide the PIN of the inserted card with :ref:`set_pin`.
The workflow will automatically continue if the PIN
was correct. Otherwise you will receive another message :ref:`enter_pin`.
The workflow will automatically continue if the PIN was correct.
Otherwise you will receive another message :ref:`enter_pin`.
If the correct PIN is entered the retryCounter will be set to **3**.
If your application provides an invalid :ref:`set_pin` command
the AusweisApp2 will send an :ref:`enter_pin` message with an error
parameter and the retryCounter of the card is **not**
decreased.
parameter and the retryCounter of the card is **not** decreased.
If your application provides a valid :ref:`set_pin` command
and the PIN was incorrect the AusweisApp2 will send :ref:`enter_pin`
@ -332,6 +396,10 @@ If the value of retryCounter is **1** the AusweisApp2 will initially send an
:ref:`enter_can` message. Once your application provides a correct CAN the
AusweisApp2 will send an :ref:`enter_pin` again with a retryCounter of **1**.
If the value of retryCounter is **0** the AusweisApp2 will initially send an
:ref:`enter_puk` message. Once your application provides a correct PUK the
AusweisApp2 will send an :ref:`enter_pin` again with a retryCounter of **3**.
- **error**: Optional error message if your command :ref:`set_pin`
was invalid.
@ -350,6 +418,7 @@ AusweisApp2 will send an :ref:`enter_pin` again with a retryCounter of **1**.
"attached": true,
"card":
{
"inoperative": false,
"deactivated": false,
"retryCounter": 3
}
@ -365,12 +434,33 @@ ENTER_PUK
^^^^^^^^^
Indicates that a PUK is required to continue the workflow.
If AusweisApp2 sends this message, you will have to
show a message to the user that the card is blocked
and needs to be unblocked by AusweisApp2.
If the AusweisApp2 sends this message, you will have to
provide the PUK of the inserted card with :ref:`set_puk`.
You need to send a :ref:`cancel` to abort the workflow.
The workflow will automatically continue if the PUK was correct
and the AusweisApp2 will send an :ref:`enter_pin` message.
Otherwise you will receive another message :ref:`enter_puk`.
If the correct PUK is entered the retryCounter will be set to **3**.
If your application provides an invalid :ref:`set_puk` command
the AusweisApp2 will send an :ref:`enter_puk` message with an error
parameter.
If your application provides a valid :ref:`set_puk` command
and the PUK was incorrect the AusweisApp2 will send :ref:`enter_puk`
again but without an error parameter.
If AusweisApp2 sends :ref:`enter_puk` with field "inoperative" of embedded
:ref:`reader` message set true it is not possible to unblock the PIN.
You will have to show a message to the user that the card is inoperative
and the user should contact the authority responsible for issueing the
identification document to unblock the PIN.
You need to send a :ref:`cancel` to abort the workflow if card is operative.
Please see the note for more information.
- **error**: Optional error message if your command :ref:`set_puk`
was invalid.
- **reader**: Information about the used card and card reader.
Please see message :ref:`reader` for details.
@ -379,18 +469,32 @@ You need to send a :ref:`cancel` to abort the workflow.
{
"msg": "ENTER_PUK",
"error": "You must provide 10 digits",
"reader":
{
"name": "NFC",
"attached": true,
"card":
{
"inoperative": false,
"deactivated": false,
"retryCounter": 0
}
}
}
.. note::
There is no retry limit for an incorrect PUK. But
be aware that the PUK can only be used 10 times to
unblock the PIN. There is no readable counter for this.
The AusweisApp2 is not able to provide any counter information
of PUK usage.
If the PUK is used 10 times it is not possible to unblock
the PIN anymore and the card will remain in PUK state.
Also it is not possible to indicate this state before the
user enters the correct PUK once. This information will be
provided as field "inoperative" of :ref:`reader` message.
@ -537,6 +641,11 @@ until a card with enabled eID functionality is inserted.
- **card**: Provides information about inserted card, otherwise null.
- **inoperative**: True if PUK is inoperative and cannot unblock PIN,
otherwise false. This can be recognized if user enters a correct
PUK only. It is not possbible to read this data before a user tries
to unblock the PIN.
- **deactivated**: True if eID functionality is deactivated, otherwise false.
- **retryCounter**: Count of possible retries for the PIN. If you enter a PIN
@ -550,6 +659,7 @@ until a card with enabled eID functionality is inserted.
"attached": true,
"card":
{
"inoperative": false,
"deactivated": false,
"retryCounter": 3
}
@ -585,6 +695,7 @@ Provides information about all connected card readers.
"attached": true,
"card":
{
"inoperative": false,
"deactivated": false,
"retryCounter": 3
}
@ -612,7 +723,7 @@ Be aware of case sensitive names in :doc:`commands`.
.. code-block:: json
{
"msg": "UNKNOWN_COMMAND"
"error": "get_INFo",
"msg": "UNKNOWN_COMMAND",
"error": "get_INFo"
}

View File

@ -28,13 +28,13 @@ into the connected card reader.
{"msg": "AUTH"}
{"msg": "ACCESS_RIGHTS", "raw": {"effective":[24,15,0],"optional":[15],"required":[24,0]}}
{"msg": "ACCESS_RIGHTS", "chat": {"effective":["FamilyName","GivenNames","DocumentType"],"optional":["GivenNames"],"required":["FamilyName","DocumentType"]}}
{"cmd": "ACCEPT"}
{"msg": "ENTER_PIN", "reader": {"attached":true,"card":{"deactivated":false,"inserted":true,"retryCounter":3},"name":"NFC"}}
{"msg": "ENTER_PIN", "reader": {"attached":true,"card":{"inoperative":false,"deactivated":false,"inserted":true,"retryCounter":3},"name":"NFC"}}
{"cmd": "SET_PIN", "pin": "123456"}
{"cmd": "SET_PIN", "value": "123456"}
{"msg": "AUTH","result": {"major":"http://www.bsi.bund.de/ecard/api/1.1/resultmajor#ok"},"url":"https://test.governikus-eid.de/DEMO/?refID=123456"}
@ -46,7 +46,7 @@ The following messages and commands show possible
iterations if the user enters an incorrect PIN and CAN twice
before entering the correct CAN and PIN.
We assume that the user didn't insert a card
We assume that the user did not insert a card
into the connected card reader.
@ -56,31 +56,31 @@ into the connected card reader.
{"msg": "AUTH"}
{"msg": "ACCESS_RIGHTS", "raw": {"effective":[0],"optional":[],"required":[0]}}
{"msg": "ACCESS_RIGHTS", "chat": {"effective":["DocumentType"],"optional":[],"required":["DocumentType"]}}
{"cmd": "ACCEPT"}
{"msg": "INSERT_CARD"}
{"msg": "ENTER_PIN", "reader": {"attached":true,"card":{"deactivated":false,"inserted":true,"retryCounter":3},"name":"NFC"}}
{"msg": "ENTER_PIN", "reader": {"attached":true,"card":{"inoperative":false,"deactivated":false,"inserted":true,"retryCounter":3},"name":"NFC"}}
{"cmd": "SET_PIN", "pin": "000000"}
{"cmd": "SET_PIN", "value": "000000"}
{"msg": "ENTER_PIN", "reader": {"attached":true,"card":{"deactivated":false,"inserted":true,"retryCounter":2},"name":"NFC"}}
{"msg": "ENTER_PIN", "reader": {"attached":true,"card":{"inoperative":false,"deactivated":false,"inserted":true,"retryCounter":2},"name":"NFC"}}
{"cmd": "SET_PIN", "pin": "000001"}
{"cmd": "SET_PIN", "value": "000001"}
{"msg": "ENTER_CAN", "reader": {"attached":true,"card":{"deactivated":false,"inserted":true,"retryCounter":1},"name":"NFC"}}
{"msg": "ENTER_CAN", "reader": {"attached":true,"card":{"inoperative":false,"deactivated":false,"inserted":true,"retryCounter":1},"name":"NFC"}}
{"cmd": "SET_CAN", "can": "000000"}
{"cmd": "SET_CAN", "value": "000000"}
{"msg": "ENTER_CAN", "reader": {"attached":true,"card":{"deactivated":false,"inserted":true,"retryCounter":1},"name":"NFC"}}
{"msg": "ENTER_CAN", "reader": {"attached":true,"card":{"inoperative":false,"deactivated":false,"inserted":true,"retryCounter":1},"name":"NFC"}}
{"cmd": "SET_CAN", "can": "654321"}
{"cmd": "SET_CAN", "value": "654321"}
{"msg": "ENTER_PIN", "reader": {"attached":true,"card":{"deactivated":false,"inserted":true,"retryCounter":1},"name":"NFC"}}
{"msg": "ENTER_PIN", "reader": {"attached":true,"card":{"inoperative":false,"deactivated":false,"inserted":true,"retryCounter":1},"name":"NFC"}}
{"cmd": "SET_PIN", "pin": "123456"}
{"cmd": "SET_PIN", "value": "123456"}
{"msg": "AUTH","result": {"major":"http://www.bsi.bund.de/ecard/api/1.1/resultmajor#ok"},"url":"https://test.governikus-eid.de/DEMO/?refID=123456"}
@ -91,7 +91,7 @@ Cancelled authentication
The following messages and commands show possible
iterations if the user cancels the authentication.
We assume that the user didn't connect the card reader.
We assume that the user did not connect the card reader.
.. code-block:: json
@ -100,10 +100,39 @@ We assume that the user didn't connect the card reader.
{"msg": "AUTH"}
{"msg": "ACCESS_RIGHTS", "raw": {"effective":[0],"optional":[],"required":[0]}}
{"msg": "ACCESS_RIGHTS", "chat": {"effective":["DocumentType"],"optional":[],"required":["DocumentType"]}}
{"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"}
Set some access rights
^^^^^^^^^^^^^^^^^^^^^^
The following messages and commands show possible
iterations if the user disables and enables an access right.
We assume that the user did not connect the card reader.
.. code-block:: json
{"cmd": "RUN_AUTH", "tcTokenURL": "https://test.governikus-eid.de/DEMO"}
{"msg": "AUTH"}
{"msg": "ACCESS_RIGHTS", "chat": {"effective":["FamilyName","GivenNames","DocumentType"],"optional":["GivenNames"],"required":["FamilyName","DocumentType"]}}
{"cmd": "SET_ACCESS_RIGHTS", "chat": []}
{"msg": "ACCESS_RIGHTS", "chat": {"effective":["FamilyName","DocumentType"],"optional":["GivenNames"],"required":["FamilyName","DocumentType"]}}
{"cmd": "SET_ACCESS_RIGHTS", "chat": ["GivenNames"]}
{"msg": "ACCESS_RIGHTS", "chat": {"effective":["FamilyName","GivenNames","DocumentType"],"optional":["GivenNames"],"required":["FamilyName","DocumentType"]}}
{"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"}

View File

@ -1,4 +1,4 @@
CMAKE_MINIMUM_REQUIRED(VERSION 3.1.0)
CMAKE_MINIMUM_REQUIRED(VERSION 3.3.0)
IF(POLICY CMP0010)
CMAKE_POLICY(SET CMP0010 NEW)
@ -403,14 +403,8 @@ IF(WIN32)
ENDIF()
ENDIF()
IF(CMAKE_VERSION VERSION_LESS 3.2)
SET(COMPRESSION cfj)
SET(COMPRESSION_FILENDING tar.bz2)
ELSE()
SET(COMPRESSION cfJ)
SET(COMPRESSION_FILENDING tar.xz)
ENDIF()
SET(COMPRESSION cfJ)
SET(COMPRESSION_FILENDING tar.xz)
ADD_CUSTOM_TARGET(compress.pre ${compressed_filename}
COMMAND ${CLEANUP_FILES}
COMMAND ${CMAKE_COMMAND} -E remove_directory "${DESTINATION_DIR}/doc"

View File

@ -8,7 +8,7 @@ Unterstützte Compiler:
- MinGW 32 / 64 >= 4.9
- GCC >= 4.7
- GCC >= 4.9
- Clang >= 3.4
@ -17,7 +17,7 @@ Unterstützte Compiler:
Notwendige Bibliotheken:
- Qt >= 5.7
- Qt >= 5.8
- http://www.qt.io/download/
@ -36,7 +36,7 @@ Notwendige Bibliotheken:
Notwendige Tools:
- CMake >= 3.1.0 (>= 3.7.0 für Android)
- CMake >= 3.3.0 (>= 3.7.1 für Android)
- http://www.cmake.org
@ -46,10 +46,8 @@ Build
-----
Die Abhängigkeiten lassen sich mittels der CMakeLists.txt in diesem Ordner
automatisch aufbauen.
Das Skript kann die abhängigen Bibliotheken als Quellcode selbständig herunterladen,
entpacken und bauen. Dabei ist allerdings zu beachten, dass CMake erst ab v3.1.0
die notwendigen Kompressionen beherrscht [1].
entpacken und bauen.
Lokale Pakete können mittels -DPACKAGES_DIR=C:/packages verwendet werden.
Wichtig: Bei PACKAGES_DIR muss ein absoluter Pfad angegeben werden!
@ -67,8 +65,6 @@ Zusätzlich kann mit dem make Target "compress" der Inhalt der dist-Ordner berei
ein Tarball aus den gebauten Bibliotheken erzeugt werden.
[1] http://www.cmake.org/Bug/view.php?id=13515
Proxy
^^^^^
Sofern beim Download der Pakete ein Proxy notwendig ist, müssen vorm Aufruf von "make"
@ -85,7 +81,7 @@ notwendig.)
macOS
^^^^^
Unter MacOS ist die Einrichtung relativ einfach und bedarf nur der oben gennanten Voreinstellungen.
Unter MacOS ist die Einrichtung relativ einfach und bedarf nur der oben genannten Voreinstellungen.
Es wird der von Apple ausgelieferte clang compiler verwendet.
Beispiel: Innerhalb von /Users/governikus/AusweisApp2 befindet sich der Quellcode.
@ -211,18 +207,22 @@ Komponenten vorhanden sein:
- https://developer.android.com/tools/sdk/ndk/index.html
- Getestet: r13b (x86_64)
- Getestet: r10e (https://wiki.qt.io/Qt_for_Android_known_issues)
- Android SDK mit gesetztem ANDROID_HOME
- https://developer.android.com/sdk/index.html#Other
- https://developer.android.com/studio/releases/sdk-tools.html
- Getestet: 25.2.2
- Getestet: 25.2.5
- Qt ist derzeit nicht mit aktuelleren kompatibel: https://bugreports.qt.io/browse/QTBUG-61988
- Unter bestimmten Umständen kann es vorkommen, dass die Build-Tools-Version nicht erkannt
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
- Um Qt erfolgreich zu bauen, sind verschiedene API Level von Android notwendig.
Diese sollten mindestens Level 18 und 21 sein. Nähere Informationen dazu
sind im Wiki von Qt enthalten: http://wiki.qt.io/Android
@ -244,5 +244,5 @@ Beispiel: Innerhalb von /home/governikus/AusweisApp2 befindet sich der Quellcode
$ make
Standardmäßig wird die Architektur "armeabi-v7a" gewählt. Um zum Beispiel die Toolchain für x86-Architektur
zu bauen , ist beim Aufruf von CMake der Parameter "-DCMAKE_ANDROID_ARCH_ABI=x86" mitzugeben.
zu bauen, ist beim Aufruf von CMake der Parameter "-DCMAKE_ANDROID_ARCH_ABI=x86" mitzugeben.

View File

@ -18,7 +18,7 @@
"URL": "https://appl.governikus-asp.de/ausweisapp2/driver/pcsc-cyberjack_3.99.5final.SP07-universal-signed.pkg"
},
{
"Platforms": ["MV_10_11"],
"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"
},
{
@ -44,7 +44,7 @@
"URL": "https://appl.governikus-asp.de/ausweisapp2/driver/pcsc-cyberjack_3.99.5final.SP07-universal-signed.pkg"
},
{
"Platforms": ["MV_10_11"],
"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"
},
{
@ -66,7 +66,7 @@
"URL": "https://appl.governikus-asp.de/ausweisapp2/driver/01_cJRFIDbasisIFD.exe"
},
{
"Platforms": ["MV_10_9", "MV_10_10", "MV_10_11"],
"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"
},
{
@ -88,7 +88,7 @@
"URL": "https://appl.governikus-asp.de/ausweisapp2/driver/SDI011_win_installer_V1.01.zip"
},
{
"Platforms": ["MV_10_9", "MV_10_10", "MV_10_11"],
"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"
},
{
@ -110,7 +110,7 @@
"URL": "https://appl.governikus-asp.de/ausweisapp2/driver/SCL011_win_installer_V1.01.zip"
},
{
"Platforms": ["MV_10_9", "MV_10_10", "MV_10_11"],
"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"
},
{

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

View File

@ -11,13 +11,6 @@
<stop style="stop-color:#5489c2;stop-opacity:1" offset="1"/>
</linearGradient>
<linearGradient x1="0" y1="0" x2="1" y2="0" id="linearGradient2683" xlink:href="#linearGradient2583" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0,26.61169,26.61169,0,19.60739,5.06376)" spreadMethod="pad"/>
<g id="balken">
<path fill-rule="evenodd" clip-rule="evenodd" fill="#B50202"
d="M930.1914063,224.3017578 c0.4013672-0.0766602,0.7988281-0.1586914,1.1816406-0.2539063 C930.9677734,224.0883789,930.5751953,224.1787109,930.1914063,224.3017578z" />
@ -98,9 +91,7 @@
-0.82422,3.29736 0.0693,-1.30517 -0.39649,-3.14404 0.82422,-3.29736 z m -32.96973,14.83643 c -5.87598,-1.50293 -5.95215,-5.31787 -0.82324,-0.82422 2.66699,1.01855
0.6289,-2.66699 3.2959,-1.64844 0.21582,-2.41308 -1.86329,-2.53223 -1.64844,-4.94531 -2.52051,-0.59815 -2.42383,1.42139 -4.94531,0.82422 0.0908,-2.10596
2.75976,-1.63623 4.94531,-1.64844 2.78711,2.30371 3.21679,7.03271 -0.82422,8.24219 z"
inkscape:connector-curvature="0" style="clip-rule:evenodd;fill:#b50202;fill-rule:evenodd"
sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccscccsccccccccccccccccccccccccccccccc" />
style="clip-rule:evenodd;fill:#b50202;fill-rule:evenodd" />
<path fill-rule="evenodd" clip-rule="evenodd" fill="#B50202"
d="M978,223.2241211c0-1.9238281,0-3.8466797,0-5.7700195 c-3-0.4731445-10.0166016,0.3754883-8.2431641,2.4726563C971.2460938,220.8037109,974,222.7402344,978,223.2241211z" />
<path fill-rule="evenodd" clip-rule="evenodd" fill="#B50202"

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 26 KiB

View File

@ -0,0 +1,135 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="768" height="768" viewBox="0 0 37 37" id="svg2696">
<defs id="defs2698">
<linearGradient x1="0" y1="0" x2="1" y2="0" id="linearGradient2559">
<stop style="stop-color:#58ab27;stop-opacity:1" offset="0"/>
<stop style="stop-color:#93c36c;stop-opacity:1" offset="0.78019702"/>
</linearGradient>
<linearGradient x1="0" y1="0" x2="1" y2="0" id="linearGradient2688" xlink:href="#linearGradient2559" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0,-26.61169,26.61169,0,5.06287,31.67544)" spreadMethod="pad"/>
<linearGradient x1="0" y1="0" x2="1" y2="0" id="linearGradient2583">
<stop style="stop-color:#88bce2;stop-opacity:1" offset="0"/>
<stop style="stop-color:#5489c2;stop-opacity:1" offset="1"/>
</linearGradient>
<linearGradient x1="0" y1="0" x2="1" y2="0" id="linearGradient2683" xlink:href="#linearGradient2583" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0,26.61169,26.61169,0,19.60739,5.06376)" spreadMethod="pad"/>
<g id="balken">
<path fill-rule="evenodd" clip-rule="evenodd" fill="#B50202"
d="M930.1914063,224.3017578 c0.4013672-0.0766602,0.7988281-0.1586914,1.1816406-0.2539063 C930.9677734,224.0883789,930.5751953,224.1787109,930.1914063,224.3017578z" />
<path fill-rule="evenodd" clip-rule="evenodd" fill="#B50202"
d="M930.1914063,224.3017578 c-4.2128906,0.8032227-9.2978516,0.734375-12.0058594,3.0429688 C920.2412109,238.8300781,923.7841797,226.3496094,930.1914063,224.3017578z" />
<path fill-rule="evenodd" clip-rule="evenodd" fill="#B50202"
d="M852.2470703,243.8295898 c1.2910156-4.2543945-4.7246094-3.9301758-2.4726563-6.5942383c-2.6367188,0.1118164-6.3085938-0.8125-5.7685547,2.4731445
C848.421875,239.4121094,849.0009766,242.953125,852.2470703,243.8295898z" />
<path fill-rule="evenodd" clip-rule="evenodd" fill="#B50202"
d="M835.7929688,243.0053711 c0.1738281-0.9243164,0.8994141-1.2832031,1.6328125-1.6484375c0.0361328,1.1342773-0.3964844,1.8095703-0.8320313,2.4726563
c2.2167969,0.5678711,1.6210938-1.7041016,2.5-2.4726563C838.1376953,240.6650391,837,240.2695313,835,240.5327148
c0,0.5498047,0,1.0991211,0,1.6484375C835,242.6835938,835.0917969,243.1567383,835.7929688,243.0053711z" />
<path fill-rule="evenodd" clip-rule="evenodd" fill="#B50202"
d="M862.9619141,240.5327148 c-0.9277344,1.5458984-3.1943359,1.7509766-4.1210938,3.296875 C861.1806641,244.1816406,865.2539063,242.0878906,862.9619141,240.5327148z" />
<path fill-rule="evenodd" clip-rule="evenodd" fill="#B50202"
d="M856.3681641,243.8295898 c0.6494141-3.1738281-3.9462891-3.1738281-3.296875,0C855.3203125,243.7543945,854.7294922,245.2026367,856.3681641,243.8295898z" />
<path fill-rule="evenodd" clip-rule="evenodd" fill="#B50202"
d="M975.8828125,274.3261719 c2.1298828,0.7412109,4.0429688-4.6557617,0.8242188-4.1210938 C977.3876953,272.534668,975.5458984,272.340332,975.8828125,274.3261719z" />
<path fill-rule="evenodd" clip-rule="evenodd" fill="#B50202"
d="M984.125,280.0957031 c0.2431641-2.1669922-3.1972656-0.6484375-2.4726563-3.296875c0.5048828,0.2412109,3.1738281,2.050293,3.296875,0
c-1.4580078-0.7407227-2.4072266-1.9897461-4.1210938-2.4726563c-1.0625,4.9863281-3.6552734,8.6484375,0,12.3637695
c-1.9208984-4.8847656,3.7138672-4.940918,5.7695313-3.296875c-2.2216797-2.5029297,2.9404297-3.2421875,0-5.7700195
C985.7929688,278.4663086,984.96875,279.2905273,984.125,280.0957031z" />
<path fill-rule="evenodd" clip-rule="evenodd" fill="#B50202"
d="M50.2641602,483.6835938 c-1.1333008,1.0556641-1.4350586,4.9277344,0.8242188,4.9433594 C52.2216797,487.5712891,52.5229492,483.6992188,50.2641602,483.6835938z" />
<path d="m 1003.9062,383.94971 c -1.499,-11.13916 -3.4453,-21.83008 -4.94526,-32.96924 -3.65625,1.83838 -10.21875,0.66211 -15.66016,2.47265 -1.31836,-4.57958 -4.23242,-11.17919
-7.41797,-9.0664 1.44239,-4.55957 0.97461,-2.87549 -0.82422,-6.59424 1.5586,-1.63525 3.89356,-0.3999 5.76953,0 5.41895,-5.2959 6.16602,-15.26367 13.1875,-18.95752 -2.68652,-11.05176
-2.75488,-24.72119 -6.59375,-34.61767 -0.54199,2.46826 -1.76171,-0.78809 -3.29687,0 -0.64844,2.02246 -1.66309,3.67822 -2.79102,5.22167 -1.29882,-2.9165 -3.04589,-5.62109
-5.20507,-7.89013 -0.51172,-3.74561 -1.71973,-7.32813 -3.45704,-10.66553 0.62989,0.375 1.61329,0.48242 3.21094,0.146 -2.73828,-0.71143 -6.03906,-7.25049 -2.47363,-9.06641
3.78125,4.96826 8.2334,7.89453 13.18848,13.1875 -1.1836,-16.95068 -5.47364,-30.79297 -6.59375,-47.80566 -2.81153,-0.84961 -7.08985,3.12207 -12.36426,2.47265 -1.50488,-2.0664
-1.71387,-5.42822 -4.1211,-6.59326 -1.99218,1.02979 -1.88769,4.15576 -4.94531,4.12061 -0.92676,-2.37061 -1.73144,-4.86231 -3.29687,-6.59375 -5.07129,-0.10645 -11.27539,1.10986
-10.71485,4.12109 -1.72461,-0.44336 -3.09765,-1.44482 -4.12109,0.82471 3.47559,-0.14014 -0.0146,1.26562 0,2.47168 4.17773,1.05713 0.4375,-3.94385 4.12109,-1.64795
-5.9375,4.32422 -2.55566,9.71875 -5.76953,14.83642 1.08301,-0.10888 5.96289,-0.125 3.29688,0.82422 -0.59864,2.39356 3.63281,-3.09228 5.76953,-3.29687 2.38965,2.71777
0.6748,7.90332 1.26855,12.2417 -5.6748,-1.93506 -11.73242,-2.63575 -17.66308,-1.75733 0.12109,-0.96728 0.35644,-1.98681 0.7334,-3.0664 -1.80762,-0.93946 -3.36719,-2.12745
-6.59375,-1.64844 -4.00977,-4.38818 -3.64063,-16.0874 -12.36329,-13.18799 -1.69336,-0.7793 -0.69824,-4.24658 -3.29687,-4.12109 -2.38086,1.46582 -7.85449,-0.16211
-9.06641,2.47265 3.48145,1.03272 0.28125,4.45801 0.82422,7.41797 -5.31543,1.43311 -10.18359,0.50733 -9.0664,-6.59424 -10.00586,0.16065 -17.19532,3.13721 -27.2002,3.29737
1.55664,5.53662 1.95215,6.21191 1.64844,10.71533 -2.26758,-3.99805 -1.76758,1.90088 -4.1211,2.47266 -9.45898,2.22607 -17.45996,-10.37647 -24.72754,-7.41797 3.49219,-0.19483
4.88184,1.71142 5.77149,4.12109 -0.79883,2.22461 -2.06836,3.97754 -4.94727,4.12109 -3.34863,-0.58056 -3.83789,-5.2915 -8.24218,-2.47265 -1.85645,-1.16504 -1.6211,-4.42383
-4.1211,-4.94531 -3.2959,-0.27393 -4.57519,1.46923 -8.24219,0.82421 -1.5664,2.03516 2.33204,4.37842 -0.82421,6.59375 -1.05372,0.0454 -1.14161,1.05664 -2.47266,0.82422
-2.06738,-1.22949 -2.89258,-3.70019 -4.12109,-5.76953 -2.85938,-0.66113 -3.16797,1.22803 -5.76954,0.82422 l -32.96972,4.94531 c -2.90918,0.93701 -6.78418,0.75537
-9.89063,1.49414 l -7.41894,0.93994 c -41.2461,7.6587 -85.13281,12.69727 -126.10742,20.62598 l -14.0127,3.31543 c -4.34668,-0.88867 -9.26855,-0.0762 -14.83594,0.82422
-72.28711,11.6958 -156.9209,24.67285 -229.9624,34.61816 -24.53069,3.49019 -24.05221,7.85228 -25.55127,16.48487 1.6875,2.15869 2.58399,5.1084 2.47315,9.0664 -1.81592,2.18116
-3.54004,1.31934 -6.59424,0.82422 -1.19922,3.19678 -3.94141,4.85108 -7.41797,5.76953 -2.66748,-0.93554 -4.76563,-2.43994 -8.21924,-2.58935 -1.96826,-1.61426 -3.98437,-3.1875
-6.06299,-4.76367 -5.98144,-4.53516 -12.80469,-6.77588 -19.65576,-6.99219 -0.90771,-1.81348 -1.96533,-3.37549 -3.15283,-4.61231 -24.08057,2.29541 -45.39795,7.35352
-69.23584,9.89112 -17.30908,2.47265 -13.80132,2.66723 -17.30908,2.47265 l -32.14551,5.77002 c -8.06348,1.27735 -16.83447,1.84717 -23.90332,4.1211 -0.0982,2.37402
0.45068,5.3955 -0.82373,6.59375 -6.45117,1.26367 -9.55371,0.57617 -10.71485,-4.94532 -9.54834,0.34278 -16.82714,2.95411 -26.37548,3.29688 -5.23584,16.72266
-20.759281,-0.67774 -34.618656,5.76953 0.02734,10.74219 -8.334473,13.0957 -14.011719,18.1333 1.749023,2.9209 6.891601,2.4502 6.594238,7.41797 -5.730957,8.55518
-11.773926,16.80029 -26.375977,16.48584 -5.817871,-8.52441 -6.666503,-30.54346 8.242676,-31.32227 -0.682129,-2.958 1.858399,-3.98681 0,-5.76953 -6.708984,-0.29297
-18.658691,1.05127 -24.727051,4.1211 8.725586,9.1167 -1.884765,25.41992 -9.891113,30.49804 1.819336,21.8086 6.217774,41.03809 9.066895,61.81641 6.033691,-0.81348
9.365234,1.07617 11.539062,4.12109 6.973633,-2.96289 19.833008,-1.1582 23.902832,0.82422 -0.428223,4.79297 -8.676758,1.76367 -7.417969,8.24317 3.940918,1.42968
5.873047,4.86914 9.916016,6.19629 0.694824,5.01562 2.527344,9.98925 5.056641,13.32226 0.777832,1.02539 1.524414,1.96192 2.260253,2.8418 0.122559,1.63769 0.405274,3.26172
0.856446,4.84863 -1.133301,-1.21777 -2.624512,-2.00781 -4.901367,-1.6582 -0.451172,3.12207 -2.682129,4.46191 -2.473145,8.24219 0.428223,2.04589 2.009766,2.93652
3.297363,4.12109 -0.492187,3.35254 -2.481933,4.37695 -2.473144,7.41894 0.02393,8.31836 7.888183,10.95704 13.187988,14.83594 3.721192,2.72363 5.084473,6.5293
8.242188,7.41797 2.74414,0.77246 6.482422,-0.60547 9.891113,0 6.48682,1.15332 8.09814,1.91699 14.83643,0.82422 28.66211,-4.64746 66.95361,-9.82813 90.66601,-14.01172
l 32.96924,-4.94531 c 2.90967,-0.9375 6.7832,-0.91016 9.89111,-1.64844 l 7.41797,-0.82422 c 24.0918,-4.22558 49.51953,-8.6123 72.53272,-11.53906 1.82715,-1.74609
1.7373,-5.40723 5.77002,-4.94629 3.11621,0.5127 -0.89112,3.44336 3.29687,3.29688 14.06641,-2.14356 28.33936,-4.08008 42.03613,-6.59375 l 280.24024,-43.68457
c 40.92969,-5.50098 83.10058,-14.15918 122.81152,-18.13282 l 9.06641,-2.47265 c 2.87793,0.62402 6.22363,-2.49512 8.24316,0 l 33.79297,-6.59375 c 15.21289,-1.82227
29.29785,-4.77149 44.50977,-6.59473 4.45117,-7.63672 14.49902,-9.67676 25.55078,-10.71484 3.02344,-1.12305 5.98242,-2.02247 8.89355,-2.792 6.04492,2.67969
13.10254,4.58008 19.46973,4.29493 C 939.91797,411.49609 946.02051,409 952.4873,406 l 0.003,0 c -4.4414,2 -0.96289,0.16406 1.01465,-0.30664 1.3584,-0.17383
2.7168,-0.4502 4.0791,-0.67578 8.74512,-1.44824 15.28907,-7.40918 18.85254,-14.88867 9.21387,-2.26954 18.5625,-4.13184 27.46971,-6.1792 z M 982.47656,259.49023
c -8.74316,3.625 -1.10351,-9.87158 0,0 z m -5.76953,-9.89111 c 3.08692,-0.32617 4.25098,3.74902 2.47266,5.76953 -3.28516,0.5376 -2.36133,-3.13379 -2.47266,-5.76953
z M 32.131348,417.74316 c -2.375,-0.0976 -5.396485,0.45118 -6.594727,-0.82421 0.156738,-0.93555 0.82666,-0.45704 0.824219,0 3.558594,-1.54395 5.482422,0.40039
5.770508,-4.1211 2.320312,0.83301 -0.228028,3.50195 0,4.94531 z m 3.296386,-21.42871 c -0.02246,0.80078 -1.008789,0.6377 -1.648437,0.82325 0.02246,0.80175
1.009277,0.63964 1.648437,0.82421 -1.230468,2.47559 -3.694336,-0.60644 -3.296386,-2.47265 0.732422,-0.64063 1.860351,-0.88672 3.296386,-0.82422 -0.506836,0.7334
-0.995117,1.47461 0,1.64941 z M 82.40918,515.00391 c 1.590332,2.10058 3.798339,1.7539 5.211914,0.23925 0.268066,0.23438 0.540527,0.46192 0.812988,0.68946
-2.038574,1.88281 -5.668457,2.66015 -6.024902,-0.92871 z M 355.23193,342.73779 c -1.78222,0.69092 -2.81201,2.13428 -5.76953,1.64893 -8.6206,-7.1792 9.58643,-13.83936
5.76953,-1.64893 z m 18.13282,-7.41797 c -4.00586,-2.90478 -5.90479,-11.23974 -4.94532,-16.48486 3.80567,3.61279 6.58448,8.25195 8.24268,14.01221 -2.1582,-3.3374
-4.02539,-6.96387 -6.59424,-9.89112 -2.5293,4.1001 5.34375,8.68653 3.29688,12.36377 z m 446.73681,-79.12695 c -2.64648,0.72266 -1.70898,-2.13721 -3.29687,-2.47266
0.25488,-1.11865 2.06347,-0.6831 3.29687,-0.82421 -0.0742,2.24902 1.37305,1.65966 0,3.29687 z m 12.36328,-1.64844 c -1.05761,-1.083 -1.05761,-3.03808 0,-4.12109
2.09766,0.10059 3.19629,1.19971 3.29688,3.29687 -0.7334,0.64063 -1.86035,0.88624 -3.29688,0.82422 z m 4.1211,4.1211 c -0.80957,-4.20362 3.08203,-7.56739
6.59375,-9.89063 2.88086,0.6919 5.84668,1.29737 5.77051,4.94531 2.48046,-1.15478 5.98437,-1.20312 6.59375,1.64844 -4.13575,5.43604 -17.11915,12.84473 -18.95801,3.29688 z
m 18.95801,9.06689 c -0.66797,-0.15674 -0.82129,-0.82666 -1.64844,-0.82373 0.15136,-0.70166 -0.32129,-0.77832 -0.82422,-0.82471 0.60742,-0.86767 3.1416,0.56641
3.29687,-2.47265 0.1045,-1.47901 -1.00976,-1.73877 -0.82421,-3.29688 -1.87891,-0.23095 -3.09864,0.19873 -3.29688,1.64844 -1.79199,-2.97021 5.64844,-2.97021 6.59375,0
0.22656,3.24854 -3.52441,2.52051 -3.29687,5.76953 z m 126.93261,51.10254 c -0.65234,-1.78516 -1.65625,-2.55176 -2.85156,-2.82715 0.43555,-0.65722 0.84473,-1.34228
1.22656,-2.05615 0.49512,1.67383 2.01465,2.32422 1.625,4.8833 z m -19.78222,-62.64209 c 2.16015,1.1377 2.83691,3.75684 5.76953,4.12158 1.06933,-1.67871 0.53027,-4.96484
3.29687,-4.9458 1.20703,0.7168 2.61328,1.23389 2.47364,3.29688 -0.31446,3.53222 -4.22168,3.47168 -5.77051,5.77051 2.75488,0.4663 2.71777,2.65771 3.07226,4.42822
-3.03222,-5.0083 -7.28906,-9.36914 -12.27539,-12.71582 1.08887,-0.0947 2.22949,-0.0899 3.4336,0.0444 z m -50.27832,-18.95752 c 5.68164,-4.28174 4.78515,8.15186
-0.82422,3.29736 0.0693,-1.30517 -0.39649,-3.14404 0.82422,-3.29736 z m -32.96973,14.83643 c -5.87598,-1.50293 -5.95215,-5.31787 -0.82324,-0.82422 2.66699,1.01855
0.6289,-2.66699 3.2959,-1.64844 0.21582,-2.41308 -1.86329,-2.53223 -1.64844,-4.94531 -2.52051,-0.59815 -2.42383,1.42139 -4.94531,0.82422 0.0908,-2.10596
2.75976,-1.63623 4.94531,-1.64844 2.78711,2.30371 3.21679,7.03271 -0.82422,8.24219 z"
style="clip-rule:evenodd;fill:#b50202;fill-rule:evenodd" />
<path fill-rule="evenodd" clip-rule="evenodd" fill="#B50202"
d="M978,223.2241211c0-1.9238281,0-3.8466797,0-5.7700195 c-3-0.4731445-10.0166016,0.3754883-8.2431641,2.4726563C971.2460938,220.8037109,974,222.7402344,978,223.2241211z" />
<path fill-rule="evenodd" clip-rule="evenodd" fill="#B50202"
d="M937.9677734,230.6411133 c2.5419922,0.0585938,1.0898438-3.0454102,1.6484375-6.5932617c-1.1357422,0.0351563-1.8095703-0.3886719-2.4726563-0.8237305
C938.2304688,227.1489258,939.0458984,227.1333008,937.9677734,230.6411133z" />
<path fill-rule="evenodd" clip-rule="evenodd" fill="#B50202"
d="M925.6035156,231.4658203 c0.1972656-1.5458984,1.3574219,0.4677734,1.6484375-0.824707c-0.5029297-0.0458984-0.9755859-0.1225586-0.8242188-0.8237305
c2.0351563-0.7128906,5.7060547,0.2109375,5.7695313-2.4726563 C929.1445313,227.3496094,923.7236328,229.2631836,925.6035156,231.4658203z" />
<path fill-rule="evenodd" clip-rule="evenodd" fill="#B50202"
d="M930.5488281,231.4658203 c3.1601563-0.1494141,0.2988281,0.6748047,0.8242188,2.4726563c2.5097656,0.0366211,3.2060547-1.7402344,4.9462891-2.4726563
c-0.0029297,0.8271484,0.6669922,0.980957,0.8242188,1.6479492c-2.0371094-2.0493164-2.4394531,1.7451172-4.1210938,2.4731445
c2.3408203,2.3540039,1.1855469-2.996582,4.9453125-1.6484375c0.7158203-3.1889648-2.0136719-2.9321289-2.4726563-4.9453125
C933.6611328,229.6333008,931.0253906,229.46875,930.5488281,231.4658203z" />
<path fill-rule="evenodd" clip-rule="evenodd" fill="#B50202"
d="M926.4277344,243.0053711 c3.1328125-1.8076172,3.1279297,1.6533203,6.5947266,1.6484375c0.2880859-3.1713867,3.0205078-3.8974609,4.1210938-4.1210938
c-2.1669922,0.2436523-0.6494141-3.1982422-3.296875-2.4731445c-2.0175781,0.730957-0.8935547,4.6025391-4.1220703,4.121582
c-0.0019531-0.8266602,0.6679688-0.980957,0.8242188-1.6484375 C928.4433594,240.6245117,927.6640625,242.0439453,926.4277344,243.0053711z" />
<path fill-rule="evenodd" clip-rule="evenodd" fill="#B50202"
d="M59.3305664,486.15625 c-0.0102539,1.6367188-2.2485352,1.0478516-1.6484375,3.2958984c1.878418-1.1318359,3.0986328,2.125,3.296875,0
C58.7407227,490.0419922,61.5688477,485.5654297,59.3305664,486.15625z" />
<path fill-rule="evenodd" clip-rule="evenodd" fill="#B50202"
d="M58.5063477,510.8828125 c-1.534668-0.7880859-2.7548828,2.4677734-3.296875,0c0.5595703-2.2763672,0.1489258-1.8818359,2.4726563-3.2978516
c-2.1835938-2.3632813-0.4360352-8.8613281-7.4179688-8.2421875c-1.5712891,7.2363281-6.8120117,16.4111328-10.7158203,23.9033203
c1.5380859,8.9023438,3.2910156,17.5908203,4.121582,27.1992188c6.940918,1.7294922,23.5087891-5.4667969,25.5512695-3.296875
c0.4970703-5.2724609,11.3886719-0.1513672,13.1879883-4.1210938 C81.8623047,527.4199219,57.2509766,530.8154297,58.5063477,510.8828125z" />
<path fill-rule="evenodd" clip-rule="evenodd" fill="#B50202"
d="M844.828125,250.4233398 c-1.2333984,0.1411133-3.0410156-0.2944336-3.296875,0.8242188c2.2978516,2.6484375,3.7373047,6.1542969,6.5947266,8.2426758
c0.1816406-0.6425781,0.6894531-0.9584961,1.6484375-0.824707 C850.5302734,252.5976563,844.0488281,252.1230469,844.828125,250.4233398z" />
</g>
<g id="schrift">
<text style="font-weight:bold;font-size:160px;font-family:sans-serif;fill:#FFFFFF;" x="35" y="520" transform="rotate(-9)">PREVIEW</text>
</g>
</defs>
<rect x="0" y="0" width="37" height="37" rx="5" ry="5" style="fill:#5489c2" />
<rect x="1.1" y="1.1" width="34.8" height="34.8" rx="3.9" ry="3.9" style="fill:#ffffff" />
<path d="M 18.5 5 L 18.5 9.8 A 8.7 8.7 0 0 0 18.5 27.2 L 18.5 32 A 13.5 13.5 0 0 1 18.5 5" style="fill:url(#linearGradient2688);stroke:none"/>
<path d="M 18.5 5 L 18.5 9.8 A 8.7 8.7 0 0 1 18.5 27.2 L 18.5 32 A 13.5 13.5 0 0 0 18.5 5" style="fill:url(#linearGradient2683);stroke:none"/>
<rect x="17.25" y="4" width="2.5" height="30" style="fill:#ffffff" />
<use xlink:href="#balken" transform="translate(0.5,5) scale(0.035,0.035)" />
<use xlink:href="#schrift" transform="translate(0.5,5) scale(0.035,0.035)" />
</svg>

After

Width:  |  Height:  |  Size: 18 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 135 KiB

View File

@ -3,4 +3,5 @@ package com.governikus.ausweisapp2;
interface IAusweisApp2SdkCallback {
void sessionIdGenerated(String pSessionId, boolean pIsSecureSessionId);
void receive(String pJson);
void sdkDisconnected();
}

View File

@ -47,7 +47,7 @@ SectionPage {
Qt.openUrlExternally("market://details?id=com.governikus.ausweisapp2")
}
else if (Qt.platform.os === "ios") {
Qt.openUrlExternally("itms://itunes.apple.com/de/app/wikipedia-mobile/id324715238?mt=8")
Qt.openUrlExternally("https://www.ausweisapp.bund.de/en/questions-and-answers/evaluate-us/")
}
}
}
@ -55,7 +55,7 @@ SectionPage {
MoreViewMenuItem {
text: qsTr("Share");
imageSource: "qrc:///images/iOS/more/icon_mehr_upload.svg";
onClicked: qmlExtension.shareText(qsTr("I'm using Ausweisapp2, download it here for Android: https://play.google.com/store/apps/details?id=com.governikus.ausweisapp2&hl=de or here for iOS: https://itunes.apple.com/de/app/wikipedia-mobile/id324715238?mt=8"), qsTr("Share with"))
onClicked: qmlExtension.shareText(qsTr("I'm using Ausweisapp2, download it here for Android: https://play.google.com/store/apps/details?id=com.governikus.ausweisapp2"), qsTr("Share with"))
}
MoreViewMenuItem {

View File

@ -1062,7 +1062,7 @@
<message>
<location filename="../qml/more/Information.qml" line="110"/>
<source>Read the software license text on the application homepage.</source>
<translation>Lesen Sie die Softwarelizenz auf der Internetseite der Anwedung.</translation>
<translation>Lesen Sie die Softwarelizenz auf der Internetseite der Anwendung.</translation>
</message>
<message>
<location filename="../qml/more/Information.qml" line="111"/>
@ -1155,8 +1155,8 @@
</message>
<message>
<location filename="../qml/more/MoreView.qml" line="58"/>
<source>I&apos;m using Ausweisapp2, download it here for Android: https://play.google.com/store/apps/details?id=com.governikus.ausweisapp2&amp;hl=de or here for iOS: https://itunes.apple.com/de/app/wikipedia-mobile/id324715238?mt=8</source>
<translation>Ich verwende die AusweisApp2 , laden Sie die AusweisApp2 für Android: https://play.google.com/store/apps/details?id=com.governikus.ausweisapp2&amp;hl=de oder für iOS: https: //itunes.apple . com / de / app / wikipedia -mobile / id324715238 ? mt = 8</translation>
<source>I&apos;m using Ausweisapp2, download it here for Android: https://play.google.com/store/apps/details?id=com.governikus.ausweisapp2</source>
<translation>Ich verwende die AusweisApp2, laden Sie die AusweisApp2 für Android: https://play.google.com/store/apps/details?id=com.governikus.ausweisapp2&amp;hl=de</translation>
</message>
<message>
<location filename="../qml/more/MoreView.qml" line="58"/>
@ -3968,7 +3968,7 @@ Bitte beachten Sie, dass Sie mit Ihrer PUK lediglich Ihren Online-Ausweis entspe
<message>
<location filename="../../src/gui/SetupAssistantWizard.cpp" line="377"/>
<source>&lt;div align=&quot;right&quot;&gt;Step %1 of %2&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;Almost done!&lt;/div&gt;</source>
<translation>&lt;div align=&quot;right&quot;&gt;Step %1 of %2&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;Fast fertig!&lt;/div&gt;</translation>
<translation>&lt;div align=&quot;right&quot;&gt;Schritt %1 von %2&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;Fast fertig!&lt;/div&gt;</translation>
</message>
<message>
<location filename="../../src/gui/SetupAssistantWizard.cpp" line="142"/>

View File

@ -166,11 +166,6 @@ IF(IOS)
SET_TARGET_PROPERTIES(AusweisApp PROPERTIES XCODE_ATTRIBUTE_TARGETED_DEVICE_FAMILY "1,2")
SET_TARGET_PROPERTIES(AusweisApp PROPERTIES XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET "8.0")
SET_TARGET_PROPERTIES(AusweisApp PROPERTIES XCODE_ATTRIBUTE_ENABLE_BITCODE "NO")
IF(${CMAKE_BUILD_TYPE} STREQUAL "DEBUG")
SET_TARGET_PROPERTIES(AusweisApp PROPERTIES XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "iPhone Developer: Marco von der Puetten")
ELSE()
SET_TARGET_PROPERTIES(AusweisApp PROPERTIES XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "iPhone Distribution: Governikus GmbH & Co. KG")
ENDIF()
# prevent xcode to convert multiple png files to tiff
SET_TARGET_PROPERTIES(AusweisApp PROPERTIES XCODE_ATTRIBUTE_COMBINE_HIDPI_IMAGES "NO")
@ -186,7 +181,7 @@ IF(ANDROID)
TARGET_LINK_LIBRARIES(AusweisApp AusweisAppCardNfc AusweisAppActivationIntent)
ENDIF()
IF(LINUX OR ANDROID OR IOS)
IF(ANDROID OR IOS OR (LINUX AND CMAKE_BUILD_TYPE STREQUAL "DEBUG"))
TARGET_LINK_LIBRARIES(AusweisApp AusweisAppCardBluetooth)
ENDIF()
@ -196,7 +191,7 @@ ENDIF()
IF(IOS OR ANDROID OR WINDOWS_STORE OR ${CMAKE_BUILD_TYPE} STREQUAL "DEBUG")
TARGET_LINK_LIBRARIES(AusweisApp AusweisAppQml)
TARGET_LINK_LIBRARIES(AusweisApp AusweisAppJsonApi AusweisAppAidl)
TARGET_LINK_LIBRARIES(AusweisApp AusweisAppAidl)
ENDIF()
IF(DESKTOP)
TARGET_LINK_LIBRARIES(AusweisApp AusweisAppCardPcsc AusweisAppCardDrivers AusweisAppActivationWebservice)
@ -204,7 +199,7 @@ IF(DESKTOP)
ENDIF()
IF(${CMAKE_BUILD_TYPE} STREQUAL "DEBUG")
TARGET_LINK_LIBRARIES(AusweisApp AusweisAppJsonApi AusweisAppWebSocket)
TARGET_LINK_LIBRARIES(AusweisApp AusweisAppWebSocket)
ENDIF()

View File

@ -35,7 +35,7 @@ class IntentActivationHandler
Q_INTERFACES(governikus::ActivationHandler)
#ifdef Q_OS_ANDROID
friend void::Java_com_governikus_ausweisapp2_MainActivity_triggerActivation(JNIEnv*, jobject, jstring);
friend void ::Java_com_governikus_ausweisapp2_MainActivity_triggerActivation(JNIEnv*, jobject, jstring);
#endif
private:

View File

@ -8,8 +8,8 @@ import android.content.IntentFilter;
import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.nfc.NfcAdapter;
import android.nfc.Tag;
import android.nfc.tech.IsoDep;
import android.nfc.Tag;
import android.os.Bundle;
import android.util.Log;
import org.qtproject.qt5.android.bindings.QtActivity;

View File

@ -26,7 +26,7 @@ class WebserviceActivationHandler
Q_INTERFACES(governikus::ActivationHandler)
private:
friend class::test_WebserviceActivationHandler;
friend class ::test_WebserviceActivationHandler;
QSharedPointer<HttpServer> mServer;
static void addStatusLine(QString& pContent, StatusFormat pStatusFormat, const QString& pKey, const QString& pValue);

View File

@ -3,9 +3,9 @@ package com.governikus.ausweisapp2;
import android.nfc.Tag;
import android.os.DeadObjectException;
import android.os.IBinder;
import android.os.RemoteException;
import android.util.Log;
import java.lang.Throwable;
import java.util.HashMap;
import java.util.Map;
@ -38,9 +38,9 @@ class AidlBinder extends IAusweisApp2Sdk.Stub
}
private void handleRemoteException(RemoteException pException)
private void handleClientException(Throwable pException)
{
Log.w(LOG_TAG, "Android service: Connected client send an exception. Dropping client.", pException);
Log.w(LOG_TAG, "Android service: Connected client sent an exception. Dropping client.", pException);
mCallback = null;
}
@ -53,28 +53,47 @@ class AidlBinder extends IAusweisApp2Sdk.Stub
return false;
}
if (pCallback == mCallback)
{
Log.i(LOG_TAG, "Android service: Supplied callback is already in use.");
return true;
}
cleanUpDeadCallback();
if (mCallback != null)
{
Log.w(LOG_TAG, "Android service: A client is already connected. Ignoring newly supplied callback.");
return false;
Log.i(LOG_TAG, "Android service: A client is already connected. Dropping previous callback.");
try
{
mCallbackSessionId = null;
mCallback.sdkDisconnected();
}
catch (Throwable t)
{
handleClientException(t);
}
}
mCallbackSessionId = resetValidSessionID();
if (mCallbackSessionId.isEmpty())
{
return false;
}
mCallback = pCallback;
mCallbackSessionId = resetValidSessionID("");
final boolean secureSessionId = isSecureRandomPsk();
final boolean sessionIdIsSecure = isSecureRandomPsk();
Log.i(LOG_TAG, "Android service: Callback connected.");
try
{
mCallback.sessionIdGenerated(secureSessionId ? mCallbackSessionId : null, secureSessionId);
mCallback.sessionIdGenerated(sessionIdIsSecure ? mCallbackSessionId : null, sessionIdIsSecure);
}
catch (RemoteException e)
catch (Throwable t)
{
handleRemoteException(e);
handleClientException(t);
}
return true;
return sessionIdIsSecure;
}
@ -134,14 +153,14 @@ class AidlBinder extends IAusweisApp2Sdk.Stub
Log.w(LOG_TAG, "Android service: Connected client is already dead.");
mCallback = null;
}
catch (RemoteException e)
catch (Throwable t)
{
handleRemoteException(e);
handleClientException(t);
}
}
private native String resetValidSessionID(String pPsk);
private native String resetValidSessionID();
private native boolean isSecureRandomPsk();
private native void aidlSend(String pMessageFromClient);
}

View File

@ -18,13 +18,21 @@ using namespace governikus;
Q_GLOBAL_STATIC(PskManager, instance)
PskManager & PskManager::getInstance()
PskManager::PskManager()
: mPsk()
, mSecureRandomPsk(false)
, mPskMutex()
{
}
PskManager& PskManager::getInstance()
{
return *instance;
}
QByteArray PskManager::generatePsk(const QByteArray& pClientPartialPsk)
QByteArray PskManager::generatePsk()
{
const static int TIMESTAMP_BYTE_COUNT = 64 / 8;
const static int RANDOM_BYTE_COUNT = 256;
@ -60,16 +68,8 @@ QByteArray PskManager::generatePsk(const QByteArray& pClientPartialPsk)
mServerInputBytes += timeStampBytes;
mServerInputBytes += randomBytes;
auto clientPartialPsk = pClientPartialPsk.trimmed();
if (clientPartialPsk.startsWith("0x"))
{
clientPartialPsk = clientPartialPsk.mid(2, -1);
}
const auto& clientInputBytes = QByteArray::fromHex(clientPartialPsk);
QCryptographicHash hashFunction(QCryptographicHash::Sha256);
hashFunction.addData(mServerInputBytes);
hashFunction.addData(clientInputBytes);
mPsk = hashFunction.result().toHex();
return mPsk;
}

View File

@ -1,22 +1,17 @@
/*!
* PskManager.h
*
* \copyright Copyright (c) 2016 Governikus GmbH & Co. KG
*/
#pragma once
#include <QByteArray>
#include <QMutex>
namespace governikus
{
class PskManager
{
private:
QByteArray mPsk;
bool mSecureRandomPsk;
@ -24,7 +19,9 @@ class PskManager
public:
static PskManager& getInstance();
QByteArray generatePsk(const QByteArray& pClientPartialPsk = QByteArray());
PskManager();
QByteArray generatePsk();
QByteArray getPsk();
bool isSecureRandomPsk();
};

View File

@ -17,9 +17,9 @@
#include <QThread>
#ifdef Q_OS_ANDROID
#include <jni.h>
#include <QtAndroidExtras/QAndroidJniEnvironment>
#include <QtAndroidExtras/QtAndroid>
#include <jni.h>
#endif
@ -34,6 +34,7 @@ UIPlugInAidl::UIPlugInAidl()
: UIPlugIn()
, mJsonApi(nullptr)
, mContext()
, mWorkflowIsActive()
, mInitializationSuccessfull(false)
{
if (UILoader::getInstance().load(UIPlugInName::UIPlugInJsonApi))
@ -82,6 +83,7 @@ bool UIPlugInAidl::isSuccessfullInitialized()
void UIPlugInAidl::onWorkflowStarted(QSharedPointer<WorkflowContext> pContext)
{
mWorkflowIsActive.lock();
mContext = pContext;
}
@ -91,6 +93,8 @@ void UIPlugInAidl::onWorkflowFinished(QSharedPointer<WorkflowContext> pContext)
Q_UNUSED(pContext);
mContext.clear();
mJsonApi->blockSignals(false);
mWorkflowIsActive.unlock();
}
@ -100,11 +104,23 @@ void UIPlugInAidl::onReceived(const QByteArray& pMessage)
}
bool UIPlugInAidl::waitForWorkflowToFinish()
{
const int fiveSeconds = 5000;
bool success = mWorkflowIsActive.tryLock(fiveSeconds);
if (success)
{
mWorkflowIsActive.unlock();
}
return success;
}
void UIPlugInAidl::reset()
{
if (mContext)
{
const QSignalBlocker blocker(mJsonApi);
mJsonApi->blockSignals(true);
Q_EMIT mContext->fireCancelWorkflow();
}
}
@ -136,25 +152,24 @@ extern "C"
// These functions need to be explicitly exported so that the JVM can bind to them.
// At the moment only the Q_Plugins seem to be appropriate locations.
JNIEXPORT jstring JNICALL Java_com_governikus_ausweisapp2_AidlBinder_resetValidSessionID(JNIEnv* pEnv, jobject pObj, jstring pClientPartialPsk)
JNIEXPORT jstring JNICALL Java_com_governikus_ausweisapp2_AidlBinder_resetValidSessionID(JNIEnv* pEnv, jobject pObj)
{
Q_UNUSED(pObj);
const char* nativeString = pEnv->GetStringUTFChars(pClientPartialPsk, 0);
const auto& clientPartialPsk = QByteArray(nativeString);
pEnv->ReleaseStringUTFChars(pClientPartialPsk, nativeString);
UIPlugInAidl* plugin = UIPlugInAidl::getInstance();
if (!plugin->isSuccessfullInitialized())
{
qCritical(aidl) << "Cannot call AIDL plugin";
return pEnv->NewStringUTF(QString().toUtf8().constData());
qCCritical(aidl) << "Cannot call AIDL plugin";
return pEnv->NewStringUTF("");
}
QMetaObject::invokeMethod(plugin, "reset", Qt::QueuedConnection);
if (!plugin->waitForWorkflowToFinish())
{
qCCritical(aidl) << "Cannot acquire workflow mutex";
return pEnv->NewStringUTF("");
}
QMetaObject::invokeMethod(plugin, "reset", Qt::BlockingQueuedConnection);
const auto& finalPsk = PskManager::getInstance().generatePsk(clientPartialPsk);
const auto& finalPsk = PskManager::getInstance().generatePsk();
return pEnv->NewStringUTF(finalPsk.constData());
}

View File

@ -10,6 +10,7 @@
#include "view/UIPlugIn.h"
#include <QAtomicPointer>
#include <QMutex>
namespace governikus
{
@ -24,6 +25,7 @@ class UIPlugInAidl
private:
UIPlugInJsonApi* mJsonApi;
QSharedPointer<WorkflowContext> mContext;
QMutex mWorkflowIsActive;
static QAtomicPointer<UIPlugInAidl> instance;
bool mInitializationSuccessfull;
@ -35,6 +37,7 @@ class UIPlugInAidl
static UIPlugInAidl* getInstance(bool pBlock = true);
bool isSuccessfullInitialized();
Q_INVOKABLE void onReceived(const QByteArray& pMessage);
bool waitForWorkflowToFinish();
private Q_SLOTS:
void reset();

View File

@ -8,15 +8,15 @@
#pragma once
#include "asn1/Chat.h"
#include "asn1/CVCertificate.h"
#include "asn1/CVCertificateChain.h"
#include "command/BaseCardCommand.h"
#include "CardConnectionWorker.h"
#include "Commands.h"
#include "InputAPDUInfo.h"
#include "ReaderInfo.h"
#include "SmartCardDefinitions.h"
#include "asn1/CVCertificate.h"
#include "asn1/CVCertificateChain.h"
#include "asn1/Chat.h"
#include "command/BaseCardCommand.h"
#include "command/DestroyPaceChannelCommand.h"
#include "command/EstablishPaceChannelCommand.h"

View File

@ -46,6 +46,12 @@ ReaderInfo CardConnectionWorker::getReaderInfo() const
}
void CardConnectionWorker::setPukInoperative()
{
mReader->setPukInoperative();
}
bool CardConnectionWorker::hasCard() const
{
return !mReader.isNull() && mReader->getCard() != nullptr;

View File

@ -6,15 +6,15 @@
#pragma once
#include "asn1/SecurityInfos.h"
#include "Apdu.h"
#include "CardReturnCode.h"
#include "Commands.h"
#include "EstablishPACEChannel.h"
#include "FileRef.h"
#include "pace/SecureMessaging.h"
#include "Reader.h"
#include "SmartCardDefinitions.h"
#include "asn1/SecurityInfos.h"
#include "pace/SecureMessaging.h"
#include <QByteArray>
@ -64,6 +64,8 @@ class CardConnectionWorker
Q_INVOKABLE ReaderInfo getReaderInfo() const;
void setPukInoperative();
virtual CardReturnCode updateRetryCounter();
virtual CardReturnCode readFile(const FileRef& pFileRef, QByteArray& pFileContent);

View File

@ -6,10 +6,10 @@
* \copyright Copyright (c) 2014 Governikus GmbH & Co. KG
*/
#include "CardConnectionWorker.h"
#include "CardInfo.h"
#include "asn1/PACEInfo.h"
#include "asn1/SecurityInfos.h"
#include "CardConnectionWorker.h"
#include "CardInfo.h"
#include <QDebug>
#include <QLoggingCategory>
@ -21,11 +21,12 @@ Q_DECLARE_LOGGING_CATEGORY(card)
using namespace governikus;
CardInfo::CardInfo(CardType pCardType, QSharedPointer<const EFCardAccess> pEfCardAccess, int pRetryCounter, bool pPinDeactivated)
CardInfo::CardInfo(CardType pCardType, QSharedPointer<const EFCardAccess> pEfCardAccess, int pRetryCounter, bool pPinDeactivated, bool pPukInoperative)
: mCardType(pCardType)
, mEfCardAccess(pEfCardAccess)
, mRetryCounter(pRetryCounter)
, mPinDeactivated(pPinDeactivated)
, mPukInoperative(pPukInoperative)
{
}
@ -60,6 +61,12 @@ bool CardInfo::isPinDeactivated() const
}
bool CardInfo::isPukInoperative() const
{
return mPukInoperative;
}
bool CardInfoFactory::create(const QSharedPointer<CardConnectionWorker>& pCardConnectionWorker, ReaderInfo& pReaderInfo)
{
if (pCardConnectionWorker == nullptr)

View File

@ -8,8 +8,8 @@
#pragma once
#include "SmartCardDefinitions.h"
#include "asn1/SecurityInfos.h"
#include "SmartCardDefinitions.h"
#include <QSharedPointer>
@ -31,9 +31,11 @@ class CardInfo
QSharedPointer<const EFCardAccess> mEfCardAccess;
int mRetryCounter;
bool mPinDeactivated;
bool mPukInoperative;
public:
CardInfo(CardType pCardType, QSharedPointer<const EFCardAccess> = QSharedPointer<const EFCardAccess>(), int pRetryCounter = -1, bool pPinDeactivated = false);
CardInfo(CardType pCardType, QSharedPointer<const EFCardAccess> = QSharedPointer<const EFCardAccess>(),
int pRetryCounter = -1, bool pPinDeactivated = false, bool pPukInoperative = false);
CardType getCardType() const;
@ -48,6 +50,11 @@ class CardInfo
*/
bool isPinDeactivated() const;
/*!
* The PUK is inoperative. User is not able to unblock the PIN anymore.
*/
bool isPukInoperative() const;
friend class Reader;
};

View File

@ -6,9 +6,9 @@
#include "Commands.h"
#include "asn1/ASN1Util.h"
#include "FileRef.h"
#include "SecureMessagingResponse.h"
#include "asn1/ASN1Util.h"
#include <QLoggingCategory>

View File

@ -4,11 +4,11 @@
#pragma once
#include "asn1/Chat.h"
#include "Apdu.h"
#include "CardReturnCode.h"
#include "FileRef.h"
#include "SmartCardDefinitions.h"
#include "asn1/Chat.h"
#include <QtEndian>

View File

@ -2,9 +2,9 @@
* \copyright Copyright (c) 2015 Governikus GmbH & Co. KG
*/
#include "asn1/ASN1Util.h"
#include "EstablishPACEChannel.h"
#include "PersoSimWorkaround.h"
#include "asn1/ASN1Util.h"
#include <QDataStream>
#include <QLoggingCategory>

View File

@ -6,12 +6,12 @@
#pragma once
#include "Apdu.h"
#include "CardReturnCode.h"
#include "SmartCardDefinitions.h"
#include "asn1/ASN1TemplateUtil.h"
#include "asn1/CertificateDescription.h"
#include "asn1/SecurityInfos.h"
#include "Apdu.h"
#include "CardReturnCode.h"
#include "SmartCardDefinitions.h"
#include <QByteArray>

View File

@ -4,8 +4,8 @@
* \copyright Copyright (c) 2015 Governikus GmbH & Co. KG
*/
#include "GeneralAuthenticateResponse.h"
#include "asn1/ASN1Util.h"
#include "GeneralAuthenticateResponse.h"
#include <QLoggingCategory>

View File

@ -8,8 +8,8 @@
#pragma once
#include "Apdu.h"
#include "asn1/ASN1TemplateUtil.h"
#include "Apdu.h"
namespace governikus

View File

@ -3,10 +3,10 @@
*/
#include "asn1/PACEInfo.h"
#include "CardConnectionWorker.h"
#include "PersoSimWorkaround.h"
#include "Reader.h"
#include "asn1/PACEInfo.h"
#include <QLoggingCategory>
@ -32,6 +32,12 @@ Reader::~Reader()
}
void Reader::setPukInoperative()
{
mReaderInfo.mCardInfo.mPukInoperative = true;
}
QSharedPointer<CardConnectionWorker> Reader::createCardConnectionWorker()
{
Card* currentCard = getCard();

View File

@ -73,6 +73,7 @@ class Reader
virtual Card* getCard() const = 0;
void setPukInoperative();
/*!
* \brief Creates a new CardConnectionWorker if and only if there is a card in the reader which is not already exclusively connected.

View File

@ -33,7 +33,10 @@ class ReaderInfo
ExtendedLengthApduSupportCode mExtendedLengthApduSupportCode;
public:
ReaderInfo(ReaderManagerPlugInType pPlugInType = ReaderManagerPlugInType::UNKNOWN, const QString& pName = QString(), ReaderType pReaderType = ReaderType::UNKNOWN, const CardInfo& pCardInfo = CardInfo(CardType::NONE));
ReaderInfo(ReaderManagerPlugInType pPlugInType = ReaderManagerPlugInType::UNKNOWN,
const QString& pName = QString(),
ReaderType pReaderType = ReaderType::UNKNOWN,
const CardInfo& pCardInfo = CardInfo(CardType::NONE));
bool isValid() const
{
@ -71,6 +74,12 @@ class ReaderInfo
}
bool isPukInoperative() const
{
return mCardInfo.isPukInoperative();
}
void setCardInfo(const CardInfo& pCardInfo)
{
mCardInfo = pCardInfo;

View File

@ -4,10 +4,10 @@
#pragma once
#include "command/CreateCardConnectionCommand.h"
#include "DeviceError.h"
#include "Reader.h"
#include "ReaderManagerWorker.h"
#include "command/CreateCardConnectionCommand.h"
#include <QPointer>
#include <QThread>

View File

@ -2,8 +2,8 @@
* \copyright Copyright (c) 2015 Governikus GmbH & Co. KG
*/
#include "SecureMessagingResponse.h"
#include "asn1/ASN1Util.h"
#include "SecureMessagingResponse.h"
#include <QLoggingCategory>

View File

@ -6,8 +6,8 @@
#pragma once
#include "Commands.h"
#include "asn1/ASN1TemplateUtil.h"
#include "Commands.h"
namespace governikus

View File

@ -138,7 +138,7 @@ static const int CB_ERROR = 0;
}\
\
template<>\
name * decodeAsn1Object<name>(name** pObject, const unsigned char** pData, long pDataLen)\
name * decodeAsn1Object<name>(name * *pObject, const unsigned char** pData, long pDataLen)\
{\
return d2i_##name(pObject, pData, pDataLen);\
}\
@ -152,7 +152,7 @@ static const int CB_ERROR = 0;
#define DECLARE_ASN1_OBJECT(name)\
template<> name * newAsn1Object<name>();\
template<> int encodeAsn1Object<name>(name * pObject, unsigned char** encoded);\
template<> name * decodeAsn1Object<name>(name** pObject, const unsigned char** pData, long pDataLen);\
template<> name * decodeAsn1Object<name>(name * *pObject, const unsigned char** pData, long pDataLen);\
template<> void freeAsn1Object<name>(name * pObject);

View File

@ -2,9 +2,9 @@
#include "SecureMessagingResponse.h"
#include <openssl/x509v3.h>
#include <QDate>
#include <QDebug>
#include <openssl/x509v3.h>
using namespace governikus;

View File

@ -6,6 +6,7 @@
#include "AccessRoleAndRight.h"
#include <QDebug>
using namespace governikus;
@ -209,3 +210,29 @@ QString AccessRoleAndRightsUtil::toDisplayText(AccessRight pRight)
return tr("Unknown");
}
}
QLatin1String AccessRoleAndRightsUtil::toTechnicalName(AccessRight pRight)
{
const auto name = getEnumName(static_cast<AccessRightNames>(pRight));
if (!name.size())
{
qCritical() << "Requested AccessRight without mapping:" << pRight;
}
return name;
}
bool AccessRoleAndRightsUtil::fromTechnicalName(const char* pStr, const std::function<void(AccessRight)>& pFunc)
{
const AccessRightNames undefined = static_cast<AccessRightNames>(UINT_MAX);
auto entry = Enum<AccessRightNames>::fromString(pStr, undefined);
if (entry != undefined)
{
Q_ASSERT(Enum<AccessRight>::isValue(static_cast<int>(entry)));
pFunc(static_cast<AccessRight>(entry));
return true;
}
return false;
}

View File

@ -15,6 +15,7 @@
#include "EnumHelper.h"
#include <functional>
#include <QList>
#include <QString>
@ -65,6 +66,29 @@ defineTypedEnumType(AccessRight, uint,
AGE_VERIFICATION = 0
)
// do NOT change any key/value as this is used as an unique identifier!
#define TYPE(x) static_cast<std::underlying_type<AccessRight>::type>(x)
defineTypedEnumType(AccessRightNames, std::underlying_type<AccessRight>::type,
ResidencePermitII = TYPE(AccessRight::READ_DG20),
ResidencePermitI = TYPE(AccessRight::READ_DG19),
CommunityID = TYPE(AccessRight::READ_DG18),
Address = TYPE(AccessRight::READ_DG17),
BirthName = TYPE(AccessRight::READ_DG13),
Nationality = TYPE(AccessRight::READ_DG10),
PlaceOfBirth = TYPE(AccessRight::READ_DG09),
DateOfBirth = TYPE(AccessRight::READ_DG08),
DoctoralDegree = TYPE(AccessRight::READ_DG07),
ArtisticName = TYPE(AccessRight::READ_DG06),
FamilyName = TYPE(AccessRight::READ_DG05),
GivenNames = TYPE(AccessRight::READ_DG04),
ValidUntil = TYPE(AccessRight::READ_DG03),
IssuingCountry = TYPE(AccessRight::READ_DG02),
DocumentType = TYPE(AccessRight::READ_DG01),
Pseudonym = TYPE(AccessRight::RESTRICTED_IDENTIFICATION),
AddressVerification = TYPE(AccessRight::COMMUNITY_ID_VERIFICATION),
AgeVerification = TYPE(AccessRight::AGE_VERIFICATION)
)
#undef TYPE
inline uint qHash(governikus::AccessRight pAccessRight)
{
@ -91,6 +115,8 @@ class AccessRoleAndRightsUtil
static const QList<AccessRight>& allDisplayedOrderedRights();
static const QList<AccessRight>& allRights();
static QString toDisplayText(AccessRight pRight);
static QLatin1String toTechnicalName(AccessRight pRight);
static bool fromTechnicalName(const char* pStr, const std::function<void(AccessRight)>& pFunc);
};
}

View File

@ -21,6 +21,17 @@ Q_DECLARE_LOGGING_CATEGORY(card)
namespace governikus
{
using CommunityID = ASN1_OCTET_STRING;
DECLARE_ASN1_FUNCTIONS(CommunityID)
using ValidityDate = ASN1_OCTET_STRING;
DECLARE_ASN1_FUNCTIONS(ValidityDate)
using AgeVerificationDate = ASN1_STRING;
DECLARE_ASN1_FUNCTIONS(AgeVerificationDate)
DECLARE_ASN1_OBJECT(ValidityDate)
/*!
* This defines the AuxDataTemplate object as SEQUENCE without the special tag.
*/

View File

@ -41,18 +41,6 @@ namespace governikus
*/
typedef ASN1_OCTET_STRING CommunityID;
DECLARE_ASN1_FUNCTIONS(CommunityID)
typedef ASN1_OCTET_STRING ValidityDate;
DECLARE_ASN1_FUNCTIONS(ValidityDate)
typedef ASN1_STRING AgeVerificationDate;
DECLARE_ASN1_FUNCTIONS(AgeVerificationDate)
typedef struct auxdatatemplate_st
{
ASN1_OBJECT* mAuxId;
@ -90,6 +78,4 @@ struct AuthenticatedAuxiliaryData
DECLARE_ASN1_FUNCTIONS(AuthenticatedAuxiliaryData)
DECLARE_ASN1_OBJECT(AuthenticatedAuxiliaryData)
DECLARE_ASN1_OBJECT(ValidityDate)
} /* namespace governikus */

View File

@ -10,8 +10,8 @@
#pragma once
#include "CVCertificate.h"
#include "Commands.h"
#include "CVCertificate.h"
#include <QVector>

View File

@ -6,9 +6,9 @@
#pragma once
#include "ChainBuilder.h"
#include "CVCertificate.h"
#include "CVCertificateChain.h"
#include "ChainBuilder.h"
#include "EstablishPACEChannel.h"

View File

@ -38,14 +38,14 @@ QStringList takeWhileNonEmpty(const QStringList& lines)
QString getField(const QString& pData, const QStringList& pSearchItems)
{
static const QString NEW_LINE("\r\n");
const QLatin1Char NEW_LINE('\n');
for (const auto& item : pSearchItems)
{
const int pos = pData.indexOf(item);
if (pos != -1)
{
const QString rest = pData.mid(pos + item.length());
const QString rest = pData.mid(pos + item.length()).trimmed();
const QStringList lines = takeWhileNonEmpty(rest.split(NEW_LINE));
if (lines.isEmpty())
{
@ -243,7 +243,7 @@ QSet<QString> CertificateDescription::getCommCertificates() const
QString CertificateDescription::getServiceProviderAddress() const
{
static const QStringList SEARCH_ITEMS({
QStringLiteral("Name, Anschrift und E-Mail-Adresse des Diensteanbieters:\r\n")
QStringLiteral("Name, Anschrift und E-Mail-Adresse des Diensteanbieters:")
});
return getField(getTermsOfUsage(), SEARCH_ITEMS);
@ -253,10 +253,10 @@ QString CertificateDescription::getServiceProviderAddress() const
QString CertificateDescription::getPurpose() const
{
static const QStringList SEARCH_ITEMS({
QStringLiteral("Gesch\u00E4ftszweck:\r\n"),
QStringLiteral("Zweck des Auslesevorgangs:\r\n"),
QStringLiteral("Verwendung der Daten:\r\n"),
QStringLiteral("Zweck der Daten\u00FCbermittlung:\r\n")
QStringLiteral("Gesch\u00E4ftszweck:"),
QStringLiteral("Zweck des Auslesevorgangs:"),
QStringLiteral("Verwendung der Daten:"),
QStringLiteral("Zweck der Daten\u00FCbermittlung:")
});
return getField(getTermsOfUsage(), SEARCH_ITEMS);
@ -267,7 +267,7 @@ QString CertificateDescription::getDataSecurityOfficer() const
{
static const QStringList SEARCH_ITEMS({QStringLiteral(
"Hinweis auf die f\u00FCr den Diensteanbieter zust\u00E4ndigen Stellen, "
"die die Einhaltung der Vorschriften zum Datenschutz kontrollieren:\r\n")});
"die die Einhaltung der Vorschriften zum Datenschutz kontrollieren:")});
return getField(getTermsOfUsage(), SEARCH_ITEMS);
}

View File

@ -40,9 +40,7 @@ namespace governikus
* redirectURL [0x06] PrintableString OPTIONAL,
* commCertificates [0x07] SET OF OCTET STRING OPTIONAL
* }
* \brief The CertificateDescription class
*/
struct CertificateDescription
{
Q_DECLARE_TR_FUNCTIONS(CertificateDescription)

View File

@ -13,9 +13,9 @@
#pragma once
#include <QVector>
#include <algorithm>
#include <functional>
#include <QVector>
namespace governikus

View File

@ -8,8 +8,8 @@
#pragma once
#include "ASN1TemplateUtil.h"
#include "AccessRoleAndRight.h"
#include "ASN1TemplateUtil.h"
#include <openssl/asn1t.h>

View File

@ -7,8 +7,8 @@
#include "EcdsaPublicKey.h"
#include "pace/ec/EcUtil.h"
#include <QLoggingCategory>
#include <openssl/evp.h>
#include <QLoggingCategory>
using namespace governikus;

View File

@ -10,8 +10,8 @@
#include "ASN1TemplateUtil.h"
#include <QSharedPointer>
#include <openssl/asn1.h>
#include <QSharedPointer>
namespace governikus

View File

@ -5,9 +5,9 @@
#include "asn1/SignatureChecker.h"
#include "pace/ec/EcUtil.h"
#include <QLoggingCategory>
#include <openssl/ecdsa.h>
#include <openssl/err.h>
#include <QLoggingCategory>
using namespace governikus;

View File

@ -2,9 +2,9 @@
* \copyright Copyright (c) 2015 Governikus GmbH & Co. KG
*/
#include "asn1/SecurityInfos.h"
#include "BaseCardCommand.h"
#include "CardConnection.h"
#include "asn1/SecurityInfos.h"
#include <QLoggingCategory>
#include <QSharedPointer>

View File

@ -23,7 +23,7 @@ class BaseCardCommand
: public QObject
{
Q_OBJECT
friend class::test_BaseCardCommand;
friend class ::test_BaseCardCommand;
private:
Q_INVOKABLE void execute(); // will be invoked by CardConnection

View File

@ -8,9 +8,9 @@
#pragma once
#include "asn1/Chat.h"
#include "BaseCardCommand.h"
#include "Commands.h"
#include "asn1/Chat.h"
namespace governikus
{

View File

@ -4,11 +4,11 @@
* \copyright Copyright (c) 2014 Governikus GmbH & Co. KG
*/
#include "asn1/ChipAuthenticationInfo.h"
#include "asn1/EFCardSecurity.h"
#include "CardConnection.h"
#include "DidAuthenticateEAC2Command.h"
#include "GeneralAuthenticateResponse.h"
#include "asn1/ChipAuthenticationInfo.h"
#include "asn1/EFCardSecurity.h"
#include <QLoggingCategory>

View File

@ -8,8 +8,8 @@
#pragma once
#include "BaseCardCommand.h"
#include "asn1/CVCertificateChain.h"
#include "BaseCardCommand.h"
namespace governikus
{

View File

@ -50,6 +50,7 @@ void UnblockPinCommand::internalExecute()
mReturnCode = mCardConnectionWorker->transmit(ResetRetryCounterBuilder().build(), response);
if (mReturnCode == CardReturnCode::OK && response.getSW1() == Enum<SW1>::getValue(SW1::ERROR_COMMAND_NOT_ALLOWED))
{
mCardConnectionWorker->setPukInoperative();
mReturnCode = CardReturnCode::PUK_INOPERATIVE;
}
}

View File

@ -5,8 +5,8 @@
#include "asn1/KnownOIDs.h"
#include "pace/CipherMac.h"
#include <QLoggingCategory>
#include <openssl/evp.h>
#include <QLoggingCategory>
using namespace governikus;

View File

@ -8,8 +8,8 @@
#pragma once
#include <QByteArray>
#include <openssl/cmac.h>
#include <QByteArray>
namespace governikus
{

View File

@ -2,14 +2,14 @@
* \copyright Copyright (c) 2014 Governikus GmbH & Co. KG
*/
#include "Commands.h"
#include "PersoSimWorkaround.h"
#include "asn1/PACEInfo.h"
#include "Commands.h"
#include "pace/CipherMac.h"
#include "pace/ec/EcdhKeyAgreement.h"
#include "pace/KeyAgreement.h"
#include "pace/KeyDerivationFunction.h"
#include "pace/SymmetricCipher.h"
#include "pace/ec/EcdhKeyAgreement.h"
#include "PersoSimWorkaround.h"
#include <QLoggingCategory>

View File

@ -8,9 +8,9 @@
#pragma once
#include "asn1/SecurityInfo.h"
#include "CardConnectionWorker.h"
#include "GeneralAuthenticateResponse.h"
#include "asn1/SecurityInfo.h"
#include "pace/KeyDerivationFunction.h"
#include <QSharedPointer>

View File

@ -5,8 +5,8 @@
#include "asn1/KnownOIDs.h"
#include "pace/KeyDerivationFunction.h"
#include <QLoggingCategory>
#include <openssl/sha.h>
#include <QLoggingCategory>
using namespace governikus;

View File

@ -4,16 +4,16 @@
#include "pace/PaceHandler.h"
#include "Commands.h"
#include "FileRef.h"
#include "PersoSimWorkaround.h"
#include "asn1/KnownOIDs.h"
#include "asn1/PACEInfo.h"
#include "pace/KeyAgreement.h"
#include "Commands.h"
#include "FileRef.h"
#include "pace/ec/EllipticCurveFactory.h"
#include "pace/KeyAgreement.h"
#include "PersoSimWorkaround.h"
#include <QLoggingCategory>
#include <exception>
#include <QLoggingCategory>
using namespace governikus;

View File

@ -8,10 +8,10 @@
#pragma once
#include "CardConnectionWorker.h"
#include "EnumHelper.h"
#include "asn1/PACEInfo.h"
#include "asn1/SecurityInfos.h"
#include "CardConnectionWorker.h"
#include "EnumHelper.h"
#include "pace/KeyAgreement.h"
#include "pace/KeyDerivationFunction.h"
@ -25,7 +25,7 @@ namespace governikus
{
class PaceHandler
{
friend class::test_PaceHandler;
friend class ::test_PaceHandler;
private:
const QSharedPointer<CardConnectionWorker> mCardConnectionWorker;

View File

@ -3,9 +3,9 @@
*
* \copyright Copyright (c) 2015 Governikus GmbH & Co. KG
*/
#include "SecureMessagingResponse.h"
#include "asn1/ASN1Util.h"
#include "pace/SecureMessaging.h"
#include "SecureMessagingResponse.h"
#include <QLoggingCategory>

View File

@ -8,8 +8,8 @@
#pragma once
#include "Apdu.h"
#include "asn1/ASN1TemplateUtil.h"
#include "Apdu.h"
#include "pace/CipherMac.h"
#include "pace/SymmetricCipher.h"

View File

@ -5,8 +5,8 @@
#include "asn1/KnownOIDs.h"
#include "pace/SymmetricCipher.h"
#include <QLoggingCategory>
#include <openssl/evp.h>
#include <QLoggingCategory>
using namespace governikus;

View File

@ -8,8 +8,8 @@
#pragma once
#include <QByteArray>
#include <openssl/evp.h>
#include <QByteArray>
namespace governikus
{

View File

@ -4,8 +4,8 @@
#include <openssl/ec.h>
#include "pace/ec/EcUtil.h"
#include "pace/ec/EcdhGenericMapping.h"
#include "pace/ec/EcUtil.h"
#include <QLoggingCategory>

View File

@ -6,9 +6,9 @@
#include "pace/DomainParameterMapping.h"
#include <openssl/ec.h>
#include <QByteArray>
#include <QSharedPointer>
#include <openssl/ec.h>
namespace governikus
{

View File

@ -2,13 +2,13 @@
* \copyright Copyright (c) 2014 Governikus GmbH & Co. KG
*/
#include "Commands.h"
#include "asn1/KnownOIDs.h"
#include "asn1/PACEInfo.h"
#include "Commands.h"
#include "pace/CipherMac.h"
#include "pace/ec/EcUtil.h"
#include "pace/ec/EcdhGenericMapping.h"
#include "pace/ec/EcdhKeyAgreement.h"
#include "pace/ec/EcUtil.h"
#include "pace/ec/EllipticCurveFactory.h"
#include <QLoggingCategory>

View File

@ -4,13 +4,13 @@
#pragma once
#include "CardConnectionWorker.h"
#include "asn1/SecurityInfo.h"
#include "CardConnectionWorker.h"
#include "pace/DomainParameterMapping.h"
#include "pace/KeyAgreement.h"
#include <QSharedPointer>
#include <openssl/ec.h>
#include <QSharedPointer>
class test_EcdhKeyAgreement;
@ -21,7 +21,7 @@ class EcdhKeyAgreement
: public KeyAgreement
{
private:
friend class::test_EcdhKeyAgreement;
friend class ::test_EcdhKeyAgreement;
QSharedPointer<DomainParameterMapping<EC_GROUP> > mMapping;
QSharedPointer<EC_GROUP> mEphemeralCurve;

Some files were not shown because too many files have changed in this diff Show More