|
@ -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()
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
52
LICENSE.txt
|
@ -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.
|
||||
|
||||
|
||||
|
||||
|
|
97
README.rst
|
@ -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!
|
||||
Fü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.
|
||||
|
||||
|
|
|
@ -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.
|
||||
|
|
@ -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}+)
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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()
|
||||
|
||||
|
|
|
@ -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.
|
|
@ -4,6 +4,7 @@ Release Notes
|
|||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
1.12.3
|
||||
1.12.2
|
||||
1.12.1
|
||||
1.12.0
|
||||
|
|
|
@ -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'),
|
||||
]
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -6,6 +6,7 @@ Versionszweig 1.12
|
|||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
1.12.3
|
||||
1.12.2
|
||||
1.12.1
|
||||
1.12.0
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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'),
|
||||
]
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
|
||||
|
|
|
@ -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"}
|
||||
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
|
|
@ -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"
|
||||
},
|
||||
{
|
||||
|
|
After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 2.0 KiB |
After Width: | Height: | Size: 3.6 KiB |
After Width: | Height: | Size: 5.1 KiB |
After Width: | Height: | Size: 6.8 KiB |
|
@ -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 |
|
@ -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 |
After Width: | Height: | Size: 135 KiB |
|
@ -3,4 +3,5 @@ package com.governikus.ausweisapp2;
|
|||
interface IAusweisApp2SdkCallback {
|
||||
void sessionIdGenerated(String pSessionId, boolean pIsSecureSessionId);
|
||||
void receive(String pJson);
|
||||
void sdkDisconnected();
|
||||
}
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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'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</source>
|
||||
<translation>Ich verwende die AusweisApp2 , laden Sie die AusweisApp2 für Android: https://play.google.com/store/apps/details?id=com.governikus.ausweisapp2&hl=de oder für iOS: https: //itunes.apple . com / de / app / wikipedia -mobile / id324715238 ? mt = 8</translation>
|
||||
<source>I'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&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><div align="right">Step %1 of %2</div><div align="left">Almost done!</div></source>
|
||||
<translation><div align="right">Step %1 of %2</div><div align="left">Fast fertig!</div></translation>
|
||||
<translation><div align="right">Schritt %1 von %2</div><div align="left">Fast fertig!</div></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/gui/SetupAssistantWizard.cpp" line="142"/>
|
||||
|
|
|
@ -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()
|
||||
|
||||
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
};
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -46,6 +46,12 @@ ReaderInfo CardConnectionWorker::getReaderInfo() const
|
|||
}
|
||||
|
||||
|
||||
void CardConnectionWorker::setPukInoperative()
|
||||
{
|
||||
mReader->setPukInoperative();
|
||||
}
|
||||
|
||||
|
||||
bool CardConnectionWorker::hasCard() const
|
||||
{
|
||||
return !mReader.isNull() && mReader->getCard() != nullptr;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
||||
|
|
|
@ -6,9 +6,9 @@
|
|||
|
||||
#include "Commands.h"
|
||||
|
||||
#include "asn1/ASN1Util.h"
|
||||
#include "FileRef.h"
|
||||
#include "SecureMessagingResponse.h"
|
||||
#include "asn1/ASN1Util.h"
|
||||
|
||||
#include <QLoggingCategory>
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
||||
|
|
|
@ -4,8 +4,8 @@
|
|||
* \copyright Copyright (c) 2015 Governikus GmbH & Co. KG
|
||||
*/
|
||||
|
||||
#include "GeneralAuthenticateResponse.h"
|
||||
#include "asn1/ASN1Util.h"
|
||||
#include "GeneralAuthenticateResponse.h"
|
||||
|
||||
#include <QLoggingCategory>
|
||||
|
||||
|
|
|
@ -8,8 +8,8 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include "Apdu.h"
|
||||
#include "asn1/ASN1TemplateUtil.h"
|
||||
#include "Apdu.h"
|
||||
|
||||
|
||||
namespace governikus
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -2,8 +2,8 @@
|
|||
* \copyright Copyright (c) 2015 Governikus GmbH & Co. KG
|
||||
*/
|
||||
|
||||
#include "SecureMessagingResponse.h"
|
||||
#include "asn1/ASN1Util.h"
|
||||
#include "SecureMessagingResponse.h"
|
||||
|
||||
#include <QLoggingCategory>
|
||||
|
||||
|
|
|
@ -6,8 +6,8 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include "Commands.h"
|
||||
#include "asn1/ASN1TemplateUtil.h"
|
||||
#include "Commands.h"
|
||||
|
||||
|
||||
namespace governikus
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
||||
|
|
|
@ -2,9 +2,9 @@
|
|||
|
||||
#include "SecureMessagingResponse.h"
|
||||
|
||||
#include <openssl/x509v3.h>
|
||||
#include <QDate>
|
||||
#include <QDebug>
|
||||
#include <openssl/x509v3.h>
|
||||
|
||||
using namespace governikus;
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -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.
|
||||
*/
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -10,8 +10,8 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include "CVCertificate.h"
|
||||
#include "Commands.h"
|
||||
#include "CVCertificate.h"
|
||||
|
||||
#include <QVector>
|
||||
|
||||
|
|
|
@ -6,9 +6,9 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include "ChainBuilder.h"
|
||||
#include "CVCertificate.h"
|
||||
#include "CVCertificateChain.h"
|
||||
#include "ChainBuilder.h"
|
||||
#include "EstablishPACEChannel.h"
|
||||
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -13,9 +13,9 @@
|
|||
#pragma once
|
||||
|
||||
|
||||
#include <QVector>
|
||||
#include <algorithm>
|
||||
#include <functional>
|
||||
#include <QVector>
|
||||
|
||||
|
||||
namespace governikus
|
||||
|
|
|
@ -8,8 +8,8 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include "ASN1TemplateUtil.h"
|
||||
#include "AccessRoleAndRight.h"
|
||||
#include "ASN1TemplateUtil.h"
|
||||
|
||||
#include <openssl/asn1t.h>
|
||||
|
||||
|
|
|
@ -7,8 +7,8 @@
|
|||
#include "EcdsaPublicKey.h"
|
||||
#include "pace/ec/EcUtil.h"
|
||||
|
||||
#include <QLoggingCategory>
|
||||
#include <openssl/evp.h>
|
||||
#include <QLoggingCategory>
|
||||
|
||||
|
||||
using namespace governikus;
|
||||
|
|
|
@ -10,8 +10,8 @@
|
|||
|
||||
#include "ASN1TemplateUtil.h"
|
||||
|
||||
#include <QSharedPointer>
|
||||
#include <openssl/asn1.h>
|
||||
#include <QSharedPointer>
|
||||
|
||||
|
||||
namespace governikus
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -8,9 +8,9 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include "asn1/Chat.h"
|
||||
#include "BaseCardCommand.h"
|
||||
#include "Commands.h"
|
||||
#include "asn1/Chat.h"
|
||||
|
||||
namespace governikus
|
||||
{
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -8,8 +8,8 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include "BaseCardCommand.h"
|
||||
#include "asn1/CVCertificateChain.h"
|
||||
#include "BaseCardCommand.h"
|
||||
|
||||
namespace governikus
|
||||
{
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,8 +5,8 @@
|
|||
#include "asn1/KnownOIDs.h"
|
||||
#include "pace/CipherMac.h"
|
||||
|
||||
#include <QLoggingCategory>
|
||||
#include <openssl/evp.h>
|
||||
#include <QLoggingCategory>
|
||||
|
||||
|
||||
using namespace governikus;
|
||||
|
|
|
@ -8,8 +8,8 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include <QByteArray>
|
||||
#include <openssl/cmac.h>
|
||||
#include <QByteArray>
|
||||
|
||||
namespace governikus
|
||||
{
|
||||
|
|
|
@ -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>
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -5,8 +5,8 @@
|
|||
#include "asn1/KnownOIDs.h"
|
||||
#include "pace/KeyDerivationFunction.h"
|
||||
|
||||
#include <QLoggingCategory>
|
||||
#include <openssl/sha.h>
|
||||
#include <QLoggingCategory>
|
||||
|
||||
|
||||
using namespace governikus;
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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>
|
||||
|
||||
|
|
|
@ -8,8 +8,8 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include "Apdu.h"
|
||||
#include "asn1/ASN1TemplateUtil.h"
|
||||
#include "Apdu.h"
|
||||
#include "pace/CipherMac.h"
|
||||
#include "pace/SymmetricCipher.h"
|
||||
|
||||
|
|
|
@ -5,8 +5,8 @@
|
|||
#include "asn1/KnownOIDs.h"
|
||||
#include "pace/SymmetricCipher.h"
|
||||
|
||||
#include <QLoggingCategory>
|
||||
#include <openssl/evp.h>
|
||||
#include <QLoggingCategory>
|
||||
|
||||
|
||||
using namespace governikus;
|
||||
|
|
|
@ -8,8 +8,8 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include <QByteArray>
|
||||
#include <openssl/evp.h>
|
||||
#include <QByteArray>
|
||||
|
||||
namespace governikus
|
||||
{
|
||||
|
|
|
@ -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>
|
||||
|
||||
|
|
|
@ -6,9 +6,9 @@
|
|||
|
||||
#include "pace/DomainParameterMapping.h"
|
||||
|
||||
#include <openssl/ec.h>
|
||||
#include <QByteArray>
|
||||
#include <QSharedPointer>
|
||||
#include <openssl/ec.h>
|
||||
|
||||
namespace governikus
|
||||
{
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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;
|
||||
|
|