a.sign RK EXE Developer Manual -...

23

Transcript of a.sign RK EXE Developer Manual -...

A-Trust Gesellschaft für Sicherheitssystemeim elektronischen Datenverkehr GmbH

Landstraÿer Hauptstraÿe 5A-1030 Wien

https://www.a-trust.atE-Mail: o�[email protected]

a.sign RK EXE

Developer Manual

Version: 0.8

Datum: 9. Dezember 2016

Ges. für Sicherheitssystemeim elektr. Datenverkehr GmbH

Copyright

c⃝ 2016 - Alle Rechte vorbehaltenA-TrustGesellschaft für Sicherheitssysteme im elektronischen Datenverkehr GmbHA-1030 Wien

Die in dieser Dokumentation enthaltenen Informationen, Kenntnisse und Darstellungensind geistiges Eigentum der A-Trust und dürfen ohne die vorherige schriftliche Zustim-mung von A-Trust weder vollständig noch auszugsweise, direkt oder indirekt Drittenzugänglich gemacht, verö�entlicht oder anderweitig verbreitet werden.Die Geltendmachung aller diesbezüglicher Rechte, bleiben der Firma A-Trust vorbehal-ten. Die Übergabe der Dokumentation begründet keinerlei Anspruch auf eine Lizenz oderBenutzung.

a.sign RK exe Version: 0.8 Seite 2 von 23

Ges. für Sicherheitssystemeim elektr. Datenverkehr GmbH

Leistungsbeschreibung

A-Trust stellt ein Executable zur Verfügung welches die Funktionen zum Zugri� aufdie a.sign RK CHIP vereinfacht. Weiters werden Funktionen für den AES-Schlüssel,Base64 Kodierung und Sha256 Hash bereitgestellt, welche für die Implementierung derRegistrierkassensicherheitsverordnung [Bun15] benötigt werden.

Bereitgestellte Funktionen und Programme:

• Schnittstelle zum Zugri� auf die Chipkarte.

• Funktion für JWS-Signatur der aufbereiteten Datenstruktur des Belegs

• Funktion zur Base64 und Base64-URL Kodierung von String-Werten

• Funktionen zum Generieren und Verwenden des AES-Schlüssel zur Verschlüsselungdes Umsatzzählers.

• Sha256 Hash Funktion

• Funktionen zum Generieren eines QR-Codes

• Developer Handbuch mit Funktionsbeschreibung und Beispielaufrufen.

a.sign RK exe Version: 0.8 Seite 3 von 23

Ges. für Sicherheitssystemeim elektr. Datenverkehr GmbH Inhaltsverzeichnis

Inhaltsverzeichnis

1 Überblick 71.1 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71.2 Voraussetzungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

2 Verwendung der a.sign RK EXE 82.1 Schnittstelle Registrierkassen Karte - Methoden und Eigenschaften . . . . 82.1.1 Hilfe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82.1.2 Software prüfen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.1.3 Karte prüfen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.1.4 Karteninformationen lesen . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.1.5 ZDA-ID auslesen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.1.6 Zerti�katsseriennummer lesen . . . . . . . . . . . . . . . . . . . . . . . . . 102.1.7 Zerti�katsseriennummer lesen (hexadezimal) . . . . . . . . . . . . . . . . . 112.1.8 Zerti�kat lesen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.1.9 Ausstellerzerti�kat lesen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.1.10 Gültigkeit lesen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.1.11 SignJWS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.1.12 Sign . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.2 Schnittstelle AES ICM - Methoden und Eigenschaften . . . . . . . . . . . 132.2.1 GenerateKey . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.2.2 Verschlüsseln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.2.3 Entschlüsseln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142.3 Schnittstelle Base64 - Methoden und Eigenschaften . . . . . . . . . . . . . 142.3.1 Encode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142.3.2 EncodeUrl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.3.3 Reencode Base64-URL to Base64 . . . . . . . . . . . . . . . . . . . . . . . 152.3.4 Reencode Base64 to Base64-URL . . . . . . . . . . . . . . . . . . . . . . . 162.3.5 Reencode Bease64 to Base32 . . . . . . . . . . . . . . . . . . . . . . . . . . 162.3.6 Reencode Bease64-URL to Base32 . . . . . . . . . . . . . . . . . . . . . . . 162.4 Schnittstelle Sha256 - Methoden und Eigenschaften . . . . . . . . . . . . . 172.4.1 HashString . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.4.2 HashSigVorigerBeleg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.5 QR-Code - Methoden und Eigenschaften . . . . . . . . . . . . . . . . . . . 172.5.1 QR-Code erstellen aus Belegzeile . . . . . . . . . . . . . . . . . . . . . . . 172.5.2 QR-Code erstellen aus JWS Zeile . . . . . . . . . . . . . . . . . . . . . . . 192.5.3 Beschreibung der Parameter scalefactor, margin, dpi . . . . . . . . . . . . 192.6 OCR-Code - Methoden und Eigenschaften . . . . . . . . . . . . . . . . . . 202.6.1 OCR-Code erstellen aus Belegzeile . . . . . . . . . . . . . . . . . . . . . . 202.6.2 OCR-Code erstellen aus JWS Zeile . . . . . . . . . . . . . . . . . . . . . . 212.7 Logging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

a.sign RK exe Version: 0.8 Seite 4 von 23

Ges. für Sicherheitssystemeim elektr. Datenverkehr GmbH Inhaltsverzeichnis

A Ausgabe der Hilfe 22

Literatur 23

a.sign RK exe Version: 0.8 Seite 5 von 23

Ges. für Sicherheitssystemeim elektr. Datenverkehr GmbH Inhaltsverzeichnis

Datum Rev Autor Änderungen06.12.2016 0.9 Patrick Hagelkruys Fehlerkorrekturlevel für QR-Code29.09.2016 0.8 Patrick Hagelkruys Base64 zu Base32 Kodierung

Beschreibung scalefactor, margin, dpi13.06.2016 0.7 Patrick Hagelkruys OCR Funktionen hinzugefügt12.05.2016 0.6 Patrick Hagelkruys Umbenennung der Produkte13.04.2016 0.5 Patrick Hagelkruys Base64 url Padding Parameter11.04.2016 0.4 Patrick Hagelkruys Dokumentation erweitern30.03.2016 0.3 Patrick Hagelkruys QR-Code Funktionen09.03.2016 0.2 Ramin Sabet Internal Review

Patrick Hagelkruys09.03.2016 0.1 Patrick Hagelkruys Erste Version

Tabelle 1: Dokumentenhistorie

a.sign RK exe Version: 0.8 Seite 6 von 23

Ges. für Sicherheitssystemeim elektr. Datenverkehr GmbH 1 Überblick

1 Überblick

1.1 Zusammenfassung

Ziel dieses Dokumentes ist die Beschreibung der Schnittstelle der a.sign RK EXE.

Die a.sign RK EXE kapselt die Aufrufe zur Erstellung von digitalen Signaturen, wiediese in der österreichischen Registrierkassen Sicherheitsverordnung [Bun15] benötigtenwerden.

Diese Dokumentation entspricht der Version 1.9.0.0 der a.sign RK EXE.

1.2 Voraussetzungen

Für die Verwendung der a.sign RK EXE sind folgende Voraussetzungen zu erfüllen:

• Windows basiertes Betriebssystem (Windows Vista oder neuer)

• a.sign Client in der Version 1.3.2.29c oder neuer

• Kartenleser

• aktivierte a.sign RK CHIP

a.sign RK exe Version: 0.8 Seite 7 von 23

Ges. für Sicherheitssystemeim elektr. Datenverkehr GmbH 2 Verwendung der a.sign RK EXE

2 Verwendung der a.sign RK EXE

Das Executeable wird über Kommandozeilenparameter gesteuert und retourniert die Er-gebnisse der Verarbeitung wahlweise über die Standard Konsolen Ausgabe oder in eineDatei. Zur Ausgabe der Ergebnisse in eine Datei ist der Parameter �outfile zu verwen-den.

asignRKEXE . exe −−ca rd i n f o

Ausgabe: Standard Konsole

asignRKEXE . exe −−ca rd i n f o −−o u t f i l e c : \temp\ t e s t . txt

Ausgabe: Datei

Eine erfolgreiche Abarbeitung des Programms kann durch den Exit-Code des Programmsüberprüft werden. Ein Exit-Code von 0 bedeutet erfolgreiche Abarbeitung, alle anderenWert kennzeichnen Fehler.

asignRKEXE . exe −−ca rd i n f o −−o u t f i l e c : \temp\ t e s t . txtecho %e r r o r l e v e l%

Überprüfung Exit-Code des Programms

2.1 Schnittstelle Registrierkassen Karte - Methoden und

Eigenschaften

2.1.1 Hilfe

Wird das Executeable ohne Parameter aufgerufen so werden die möglichen Parameterangezeigt:

asignRKEXE . exe

Programm ohne Parameter

Verfuegbare Parameter:−−help H i l f e t e x t ausgeben−−check_software S o f twa r e i n s t a l l a t i o n ueberprue fen−−check_card Karte ueberprue fen−−s i gn arg S ignatur mit Karte , Eingabe Format . . .

. . .

Ausgabe der Parameterübersicht

Die komplette Ausgabe dieses Befehls ist in Anhang A abgebildet.

a.sign RK exe Version: 0.8 Seite 8 von 23

Ges. für Sicherheitssystemeim elektr. Datenverkehr GmbH 2.1 Schnittstelle Registrierkassen Karte - Methoden und Eigenschaften

2.1.2 Software prüfen

Dieser Befehl prüft ob die notwendige a.sign Client Software in der richtigen Versioninstalliert ist.

asignRKEXE . exe −−check_software

Software überprüfen

Programm Exit-Code:

0 OK

2 Registry Einträge des a.sign Client fehlen. Fehlerhafte Installation?

3 a.sign Client Version nicht ausreichend, bitte aktualisieren

4 a.sign Client kann nicht geladen werden. Fehlerhafte Installation?

5 Allgemeiner Fehler

2.1.3 Karte prüfen

Dieser Befehl prüft ob eine Karte im Kartenleser ist.

asignRKEXE . exe −−check_card

Karte überprüfen

Programm Exit-Code:

0 OK

1 Keine aktivierte Karte gefunden

2 Keine Karte gefunden.

2.1.4 Karteninformationen lesen

Laden der Zerti�katsdaten von der Karte.

asignRKEXE . exe −−ca rd i n f o

Karteninformationen lesen

Die Ausgabe besteht aus einer mit Strichpunkt getrennten Liste welche folgende Datenenthält:

• ZDA-ID

• Zerti�katsseriennummer (dezimal)

• Zerti�kat

a.sign RK exe Version: 0.8 Seite 9 von 23

Ges. für Sicherheitssystemeim elektr. Datenverkehr GmbH 2.1 Schnittstelle Registrierkassen Karte - Methoden und Eigenschaften

• Ausstellerzerti�kat

AT1;1634338 ;MII . . . pQ==;MIIF . . . JCw==

Ausgabe: der Karteninformationen

Programm Exit-Code:

0 OK

1 a.sign Client nicht initialisiert

2 Fehler in a.sign Client

2.1.5 ZDA-ID auslesen

Laden der ZDA-ID von der Karte.

asignRKEXE . exe −−zdaid

ZDA-ID lesen

AT1

Ausgabe: ZDA-ID lesen

Programm Exit-Code:

0 OK

1 a.sign Client nicht initialisiert

2 Fehler in a.sign Client

2.1.6 Zerti�katsseriennummer lesen

Laden der Zerti�katsseriennummer von der Karte.

asignRKEXE . exe −−c e r t s e r i a l

Zerti�katsseriennummer lesen

1634338

Ausgabe: Zerti�katsseriennummer lesen

Programm Exit-Code:

0 OK

1 a.sign Client nicht initialisiert

2 Fehler in a.sign Client

a.sign RK exe Version: 0.8 Seite 10 von 23

Ges. für Sicherheitssystemeim elektr. Datenverkehr GmbH 2.1 Schnittstelle Registrierkassen Karte - Methoden und Eigenschaften

2.1.7 Zerti�katsseriennummer lesen (hexadezimal)

Laden der Zerti�katsseriennummer im hexadezimal Format von der Karte.

asignRKEXE . exe −−c e r t s e r i a l h e x

Zerti�katsseriennummer lesen

7684 d8f2

Ausgabe: Zerti�katsseriennummer lesen

Programm Exit-Code:

0 OK

1 a.sign Client nicht initialisiert

2 Fehler in a.sign Client

2.1.8 Zerti�kat lesen

Laden des Zerti�kats von der Karte.

asignRKEXE . exe −−c e r t i f i c a t e

Zerti�kat lesen

MIIE1zCCA7 . . . OIvPU2pQ==

Ausgabe: Zerti�kat lesen

Programm Exit-Code:

0 OK

1 a.sign Client nicht initialisiert

2 Fehler in a.sign Client

2.1.9 Ausstellerzerti�kat lesen

Laden der Ausstellerzerti�kat von der Karte.

asignRKEXE . exe −− i s s u e r

Ausstellerzerti�kat lesen

MIIF9TCCA . . . XtdkupJCw==

Ausgabe: Ausstellerzerti�kat lesen

Programm Exit-Code:

a.sign RK exe Version: 0.8 Seite 11 von 23

Ges. für Sicherheitssystemeim elektr. Datenverkehr GmbH 2.1 Schnittstelle Registrierkassen Karte - Methoden und Eigenschaften

0 OK

1 a.sign Client nicht initialisiert

2 Fehler in a.sign Client

2.1.10 Gültigkeit lesen

Auslesen der Gültigkeit des Zerti�kates, der Rückgabewert ist ist als UTC-Zeit zu inter-pretieren.asignRKEXE . exe −−g u e l t i g k e i t

Gültigkeit lesen

2020−12−30T22:00:00

Ausgabe: Gültigkeit lesen

Programm Exit-Code:

0 OK

1 a.sign Client nicht initialisiert

2 Fehler in a.sign Client

2.1.11 SignJWS

Durchführen einer Signatur auf der Karte. Die Funktion bereitet die eingegebenen Da-ten nach dem JWS Standard auf, d.h. es wird der entsprechende JWS-Header mit demAlgorithmus erzeugt und sowohl Daten als auch Header Base64-URL kodiert. Der zurück-gegebene Wert entspricht der JWS Signatur bestehend aus Protected Header, Payloadund Signatur jeweils Base64-URL kodiert und durch Punkt getrennt.Die Eingabedaten müssen entsprechende der österreichischen Registrierkassensicherheits-verordnung [Bun15, Detailspezi�kation Kapitel 5] formatiert werden. Beispiele, Testda-tensätze und Prüftools sind unter [A-S16a] verfügbar.asignRKEXE . exe −−s i gn jws _R1−AT1_1_1_2016−0 . . .XdnO+I=

Signatur JWS durchführen

eyJhbGciOiJFUzI1NiJ9 .X1IxLUFUMV8x . . . F9xZFhvb1hkbk8rST0=.gON2gQR . . . cpQZnyF0Kw==

Ausgabe: Signatur JWS durchführen

Programm Exit-Code:

0 OK

1 a.sign Client nicht initialisiert

2 Fehler beim Signieren

a.sign RK exe Version: 0.8 Seite 12 von 23

Ges. für Sicherheitssystemeim elektr. Datenverkehr GmbH 2.2 Schnittstelle AES ICM - Methoden und Eigenschaften

2.1.12 Sign

Es wird empfohlen die Funktion SignJWS aus Kapitel 2.1.11 zu verwenden. Für dieVerwendung der hier angeführten Funktion müssen die zu signierenden Daten selbst auf-bereitet werden.Durchführen einer Signatur auf der Karte, der zurückgegebenen Wert ist bereits Base64-URL kodiert. Die Eingabedaten müssen bereits die Form [protected header].[payload]

entsprechend dem JWS-Standard [Jon15] haben.asignRKEXE . exe −−s i gn eyJhbGciOiJFUzI1NiJ9 . X1IxLU . . . rST0

Signatur durchführen

vxQbHXIuMX . . . lLreEQ==

Ausgabe: Signatur durchführen

Programm Exit-Code:

0 OK

1 a.sign Client nicht initialisiert

2 Fehler beim Signieren

2.2 Schnittstelle AES ICM - Methoden und Eigenschaften

2.2.1 GenerateKey

Generieren eines AES Schlüssel. Dieser Befehl muss nur einmal pro Kasse durchgeführtwerden und das Ergebnis durch den Aufrufenden gespeichert werden.asignRKEXE . exe −−aes_generate

AES Schlüssel generieren

qyDC9hlN5MAvum2K/MUu+eVSxB6OzfIShT4o3vTcWtg=

Ausgabe: AES Schlüssel generieren

Programm Exit-Code:

0 OK

1 Fehler

2.2.2 Verschlüsseln

Verschlüsselung des Umsatzzählers. Der Umsatz muss in Euro-Cent Beträgen angegebenwerden, weitere Informationen dazu unter [A-S16b, Brutto vs. Netto].

a.sign RK exe Version: 0.8 Seite 13 von 23

Ges. für Sicherheitssystemeim elektr. Datenverkehr GmbH 2.3 Schnittstelle Base64 - Methoden und Eigenschaften

asignRKEXE . exe −−aes_encrypt−−aes_key qyDC9hlN5MAvum2K/MUu+eVSxB6OzfIShT4o3vTcWtg=−−umsatz 123412−−kas sen id cash−reg−1−−belegnummer ads f51

AES verschlüsseln

FIKrRXdGO6f76zg6zneiQg==

Ausgabe: AES verschlüsseln

Programm Exit-Code:

0 OK

1 Fehler

2.2.3 Entschlüsseln

Entschlüsselung des Umsatzzählers. Diese Funktion wird im Regelfall nicht benötigt.

asignRKEXE . exe −−aes_decrypt−−aes_key qyDC9hlN5MAvum2K/MUu+eVSxB6OzfIShT4o3vTcWtg=−−encrypted_data FIKrRXdGO6f76zg6zneiQg==−−kas sen id cash−reg−1−−belegnummer ads f51

AES entschlüsseln

123412

Ausgabe: AES entschlüsseln

Programm Exit-Code:

0 OK

1 Fehler

2.3 Schnittstelle Base64 - Methoden und Eigenschaften

2.3.1 Encode

Base64 Encoding eines String, mit dem optionalen Parameter �padding kann das Pad-ding eingestellt werden.

asignRKEXE . exe −−padding 1 −−base64_encode t e s t

Base64 kodieren eines Strings

a.sign RK exe Version: 0.8 Seite 14 von 23

Ges. für Sicherheitssystemeim elektr. Datenverkehr GmbH 2.3 Schnittstelle Base64 - Methoden und Eigenschaften

dGVzdA==

Ausgabe: Base64 kodieren eines Strings

Programm Exit-Code:

0 OK

1 Fehler

2.3.2 EncodeUrl

Base64-URL Encoding eines String, mit dem optionalen Parameter �padding kann dasPadding eingestellt werden.

asignRKEXE . exe −−padding 0 −−base64url_encode t e s t

Base64Url kodieren eines Strings

dGVzdA

Ausgabe: Base64Url kodieren eines Strings

Programm Exit-Code:

0 OK

1 Fehler

2.3.3 Reencode Base64-URL to Base64

Decodiert einen Base64-URL kodierten String und kodiert diesen neu als Base64 (Nor-mal). Mit dem optionalen Parameter �padding kann das Padding eingestellt werden.

asignRKEXE . exe −−padding 1 −−base64_url_to_normal_reencode dGVzdA==

Base64url kodieren zu Base64

dGVzdA==

Ausgabe: Base64url kodieren zu Base64

Programm Exit-Code:

0 OK

1 Fehler

a.sign RK exe Version: 0.8 Seite 15 von 23

Ges. für Sicherheitssystemeim elektr. Datenverkehr GmbH 2.3 Schnittstelle Base64 - Methoden und Eigenschaften

2.3.4 Reencode Base64 to Base64-URL

Decodiert einen Base64 (Normal) kodierten String und kodiert diesen neu als Base64-URL. Mit dem optionalen Parameter �padding kann das Padding eingestellt werden.asignRKEXE . exe −−padding 0 −−base64_normal_to_url_reencode dGVzdA==

Base64 kodieren zu Base64url

dGVzdA

Ausgabe: Base64 kodieren zu Base64url

Programm Exit-Code:

0 OK

1 Fehler

2.3.5 Reencode Bease64 to Base32

Decodiert einen Base64 (Normal) kodierten String und kodiert diesen neu als Base32.asignRKEXE . exe −−base64_normal_to_base32_reencode dGVzdA==

Base64 kodieren zu Base32

ORSXG5A=

Ausgabe: Base64 kodieren zu Base32

Programm Exit-Code:

0 OK

1 Fehler

2.3.6 Reencode Bease64-URL to Base32

Decodiert einen Base64 (URL) kodierten String und kodiert diesen neu als Base32.asignRKEXE . exe −−base64_url_to_base32_reencode dGVzdA==

Base64-URL kodieren zu Base32

ORSXG5A=

Ausgabe: Base64-URL kodieren zu Base32

Programm Exit-Code:

0 OK

1 Fehler

a.sign RK exe Version: 0.8 Seite 16 von 23

Ges. für Sicherheitssystemeim elektr. Datenverkehr GmbH 2.4 Schnittstelle Sha256 - Methoden und Eigenschaften

2.4 Schnittstelle Sha256 - Methoden und Eigenschaften

2.4.1 HashString

Sha256 eines String, Ausgabe ist bereits Base64 kodiertasignRKEXE . exe −−hash_str ing t e s t

Sha256 Hash eines Strings

n4bQgYhMfWWaL+qgxVrQFaO/TxsrC4Is0V1sFbDwCgg=

Ausgabe: Sha256 Hash eines Strings

Programm Exit-Code:

0 OK

1 Fehler

2.4.2 HashSigVorigerBeleg

Sha256 des vorigen Belegs wie in [Bun15, Z4, Sig-Voriger-Beleg] verlangtasignRKEXE . exe −−hash_sig_voriger_beleg t e s t

Hash Signatur voriger Beleg

Zusätzlich kann die Anzahl der zu extrahierenden angegeben werdenasignRKEXE . exe −−hash_sig_voriger_beleg t e s t −−byte s_ext rah i e r t 8

Hash Signatur voriger Beleg mit Angabe der zu extrahierenden Bytes

n4bQgYhMfWU=

Ausgabe: Hash Signatur voriger Beleg

Programm Exit-Code:

0 OK

1 Fehler

2.5 QR-Code - Methoden und Eigenschaften

2.5.1 QR-Code erstellen aus Belegzeile

asignRKEXE . exe −−qrcode −−qrdata "R1 -AT1_DEMO -CA...Q2===" −−s c a l e f a c t o r 2 −−margin 3−−dpi 24 −−e r r o r c o r r e c t i o n H −−o u t f i l e qr1 .bmp

QR-Code erstellen aus Buchungszeile

a.sign RK exe Version: 0.8 Seite 17 von 23

Ges. für Sicherheitssystemeim elektr. Datenverkehr GmbH 2.5 QR-Code - Methoden und Eigenschaften

Abbildung 1: QR-Code Ausgabe (qr1.bmp)

Programm Exit-Code:

0 OK

1 Fehler

a.sign RK exe Version: 0.8 Seite 18 von 23

Ges. für Sicherheitssystemeim elektr. Datenverkehr GmbH 2.5 QR-Code - Methoden und Eigenschaften

2.5.2 QR-Code erstellen aus JWS Zeile

asignRKEXE . exe −−qrcode −−qrdata_jws "eyJhbGciOi ...CXH" −−s c a l e f a c t o r 3 −−margin 10−−dpi 24 −−e r r o r c o r r e c t i o n M −−o u t f i l e qr2 .bmp

QR-Code erstellen aus JWS Zeile

Programm Exit-Code:

0 OK

1 Fehler

Abbildung 2: QR-Code Ausgabe (qr2.bmp)

2.5.3 Beschreibung der Parameter scalefactor, margin, dpi

Bei den Befehlsaufrufen zur QR-Code Erstellung kann mittels der Paramter scalefactor,margin und dpi die erstellte Bilddatei beein�usst werden.

scalefactor: Skalierungsfaktor für QR-Code. Der QR-Code wird bei einem Skalierungs-faktor von 1 als 77x77 Pixel ausgegeben und entsprechend des Faktors vergröÿert.

maring: Rand für QR-Code. Entsprechend dem übergebenen Wert werden weiÿe Pixelan allen Seiten eingefügt.

dpi: Farbtiefe für den QR-Code in bit. Mögliche Werte sind 1,4,8,16,24,32.

errorcorrection: Fehlerkorrekturlevel für den QR-Code. Mögliche Werte sind L,M,Q,H.

Level L (Low): ca. 7% der Daten können wiederhergestellt werden

Level M (Medium): ca. 15% der Daten können wiederhergestellt werden

Level Q (Quartile): ca. 25% der Daten können wiederhergestellt werden

Level H (High): ca. 30% der Daten können wiederhergestellt werden

a.sign RK exe Version: 0.8 Seite 19 von 23

Ges. für Sicherheitssystemeim elektr. Datenverkehr GmbH 2.6 OCR-Code - Methoden und Eigenschaften

2.6 OCR-Code - Methoden und Eigenschaften

Für den OCR-Code ist in der RKSV [Bun15, Detailspezi�kation Kapitel 14] beschreiben,dass die Base64 Werte im Base32 Format kodiert werden müssen.

2.6.1 OCR-Code erstellen aus Belegzeile

asignRKEXE . exe −−ocrcode −−ocrdata "_R1 -AT1_DEMO -CA...Q2==="

OCR-Code erstellen aus Buchungszeile

_R1−AT1_DEMO−CASHBOX_r1_2016−03−11T04:24:43_0 ,00_0,00_0,00_0,00_0,00_4K6WEIOWIZ4AI===_. . .

Ausgabe: OCR-Code

Programm Exit-Code:

0 OK

1 Fehler

a.sign RK exe Version: 0.8 Seite 20 von 23

Ges. für Sicherheitssystemeim elektr. Datenverkehr GmbH 2.7 Logging

2.6.2 OCR-Code erstellen aus JWS Zeile

asignRKEXE . exe −−ocr rcode −−ocrdata_jws "eyJhbGciOi ...CXH"

OCR-Code erstellen aus JWS Zeile

_R1−AT1_DEMO−CASHBOX_r1_2016−03−11T04:24:43_0 ,00_0,00_0,00_0,00_0,00_4K6WEIOWIZ4AI===_. . .

Ausgabe: OCR-Code

Programm Exit-Code:

0 OK

1 Fehler

2.7 Logging

Zur Fehleranalyse kann das Logging des Executeables aktiviert werden, dazu müssen inder Registry die entsprechenden Werte eingetragen werden.

HKEY_LOCAL_MACHINE\SOFTWARE\A−Trust GmbH\ATrustRegistr ierkasseCom

Registry Pfad für 32-bit Systeme

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\A−Trust GmbH\ATrustRegistr ierkasseCom

Registry Pfad für 64-bit Systeme

Nachfolgend die Werte für das Aktivieren des Logging.

Windows Reg i s t ry Editor Vers ion 5 .00

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\A−Trust GmbH\ATrustRegistr ierkasseCom ]"LogPath"="c:\\temp\\ asignrkexe.log""Log"=dword:00000001

Registry Werte

a.sign RK exe Version: 0.8 Seite 21 von 23

Ges. für Sicherheitssystemeim elektr. Datenverkehr GmbH A Ausgabe der Hilfe

A Ausgabe der Hilfe

Verfuegbare Parameter:−−help H i l f e t e x t ausgeben−−check_software S o f twa r e i n s t a l l a t i o n ueberprue fen−−check_card Karte ueberprue fen−−s i gn arg S ignatur mit Karte , Eingabe Format [JWS

protec ted Header ] . [ Payload ] , AusgabeFormat Base64

−−s i gn jws arg S ignatur JWS mit Karte , Eingabe FormatPayload , Ausgabe Format [JWS protec tedHeader ] . [ Payload ] . [ S ignatur ]

−−ca rd i n f o Karteninformationen aus l e sen ,Ausgabeformat ZdaId ; Seriennummer ; S ignaturz e r t i f i k a t ; A u s s t e l l e r z e r t i f i k a t

−−zdaid Karteninformationen aus l e sen ,Ausgabeformat ZdaId

−−c e r t s e r i a l Karteninformationen aus l e sen ,Ausgabeformat Seriennummer

−−c e r t s e r i a l h e x Karteninformationen aus l e sen ,Ausgabeformat Seriennummer (HEX)

−−c e r t i f i c a t e Karteninformationen aus l e sen ,Ausgabeformat S i g n a t u r z e r t i f i k a t

−− i s s u e r Karteninformationen aus l e sen ,Ausgabeformat A u s s t e l l e r z e r t i f i k a t

−−g u e l t i g k e i t Gue l t i g k e i t des Z e r t i f i k a t e s−−aes_generate AES Sch l u e s s e l gene r i e r en , Ausgabeformat

AES−S ch l u e s s e l in Base64−−aes_encrypt AES Versch lue s s e lung−−aes_decrypt AES Ent s ch lue s s e ln−−aes_key arg AES Sch l u e s s e l−−umsatz arg Umsatz−−kas sen id arg KassenId−−belegnummer arg Belegnummer−−encrypted_data arg Ve r s c h l u e s s e l t e r Umsatzzaehler−−base64_encode arg Base64 Encode−−base64url_encode arg Base64URL Encode−−padding arg padding fu e r base64−−base64_normal_to_url_reencode arg Base64 Normal zu URL umkodieren−−base64_url_to_normal_reencode arg Base64 URL zu Normal umkodieren−−hash_str ing arg Sha256 der Eingabedaten , Ausgabe in

Base64 Format−−hash_sig_voriger_beleg arg Sha256 der S ignatur des Vorigen Beleges ,

Ausgabe in Base64 Format−−byte s_ext rah i e r t arg Zu ext rah i e r ende Byteanzahl aus S ignatur

des Vorigen Be leges−−o u t f i l e arg Ausgabe in e ine Datei a n s t e l l e der

Konsole−−qrcode QR−Code e r s t e l l e n , o u t f i l e muss angegeben

werden−−qrdata arg QR−Daten−−qrdata_jws arg QR−Daten im JWS Format−−s c a l e f a c t o r arg Ska l i e r ung s f ak t o r f u e r QR−Code−−margin arg Margin fu e r QR−Code−−ocrcode OCR−Code vo rbe r i e t en−−ocrdata arg OCR−Daten−−ocrdata_jws arg OCR−Daten im JWS Format

Ausgabe der Parameterübersicht

a.sign RK exe Version: 0.8 Seite 22 von 23

Ges. für Sicherheitssystemeim elektr. Datenverkehr GmbH A Literatur

Literatur

[A-S16a] A-SIT Plus GmbH: a-sit-plus/at-registrierkassen-mustercode, 2016.https://github.com/a-sit-plus/at-registrierkassen-mustercode/,besucht: 2016-03-09.

[A-S16b] A-SIT Plus GmbH: Erläuterungen FAQ - a-sit-plus/at-registrierkassen-mustercode, 2016. https://github.com/a-sit-plus/

at-registrierkassen-mustercode/wiki/Erl%C3%A4uterungen-FAQ, be-sucht: 2016-04-11.

[Bun15] Bundesministers für Finanzen: Verordnung des Bundesministers für Finan-zen über die technischen Einzelheiten für Sicherheitseinrichtungen in den Re-gistrierkassen und andere, der Datensicherheit dienende Maÿnahmen (Regis-trierkassensicherheitsverordnung, RKSV), 2015. https://www.bmf.gv.at/

steuern/RKSV.pdf, besucht: 2015-11-16.

[Jon15] Jones, M.: JSON Web Algorithms (JWA). RFC 7518, May 2015. https:

//tools.ietf.org/html/rfc7518, besucht: 2015-11-25.

a.sign RK exe Version: 0.8 Seite 23 von 23