BMF-RKSV-Technik / at-registrierkassen-mustercode

111 stars 39 forks source link

RKSV Prüftool: (I) 2 oder mehr Serialnummern/Zertifikate; (II) Unerklärlicher Fehler bei kryptographischer Gültigkeit der Signatur #581

Open hjgwenex opened 7 years ago

hjgwenex commented 7 years ago

Werte Kollegen,

Beim Prüfen der ersten produktiven Belege zur Kassa FLIX01 mit dem RKSV Prüftool 1.0.0 bin ich über folgende Probleme gestolpert:

(I) 2 oder mehr Serialnummern/Zertifikate in cryptographicMaterialContainer.JSON Zur produktiven Kasse FLIX01 gibt es 2 Signatureinheiten (PCs mit a.sign Chipkarte in USB stick). Habe die Datei cryptographicMaterialContainer.JSON entsprechend Anhang aufgebaut (base64AESKey ersetzt durch ****, die 2 Zertifikate wurden unter https://certlogik.com/decoder/ geprüft und sind dort ok). Für alle Belege mit Serialnummer 78145892 liefert das Prüftool die Fehlermeldung ... Die Prüfung des Belegs konnte nicht vollständig durchgeführt werden. Vermutlich konnte das Zertifikat oder der Schlüssel mit der im Beleg angegeben Seriennummer bzw. dem angegebenen Ordnungsbegriff des Unternehmens und der Schlüssel-ID nicht in der cryptographicMaterialContainer.json Datei gefunden werden. Bitte überprüfen Sie diese Datei und die darin hinterlegten Informationen. Diese Fehlermeldung ist nur im Prüftool relevant und wird in dieser Form nicht bei der Echtprüfung über FinazOnline vorkommen. ... cryptographicMaterialContainer.JSON.TXT

Meine Fragen: a. Unterstützt des Test Tool überhaupt mehrere Signatureinheiten? b. Wenn "Ja" zu a.: Wie müssen die Daten zu weiteren Signatureinheiten in cryptographicMaterialContainer.JSON hinterlegt werden? (was habe ich falsch gemacht?)

(I) Unerklärlicher Fehler bei einem Beleg Bei einem Beleg 1264 zur Kassa FLIX01 steht in 0042_app.json ... "verificationState" : "FAIL", "verificationResultDetailedMessage" : "Der vorliegende Beleg weist Fehler auf, die über FinanzOnline abgerufen werden können. Bundesministerium für Finanzen.", ... sowie in 0042_cashbox_full.json ... "verificationName" : "Kryptographie: Überprüfung der kryptographischen Gültigkeit der Signatur", "verificationTextualDescription" : "In diesem Modul wird die kryptographische Gültigkeit der Signatur mit Hilfe des öffentlichen Schlüssels überprüft.", "verificationState" : "FAIL", ... Der Beleg 1263 davor wurde mit gleicher Signatureinheit (Serialnummer 51590207) wie 1264 signiert und hat keinen Fehler. Auch beim Aufbau des Strings für die Signatur 1264 konnte ich keinen Fehler finden. Auszug aus dem Log zur Belegerstellung ... RKSV_UNSIGNED.LAY Line 15: PREVIOUS_SIGNATURE: Get previous signature for cash register careid FLIX01 and no. cavono 1264 / Current result page 1, line 1, Current BO: D_SP_H, WBO_EOF() Previous signed cash document with cavono 1263 found => Hash input is previous document string in JWS format: eyJhbGciOiJFUzI1NiJ9.X1IxLUFUMV9GTElYMDFfMTI2M18yMDE3LTA0LTEyVDEwOjI4OjIyXy0xLDIwXzAsMDBfMCwwMF8wLDAwXzAsMDBfNEROQjJwS3pRa2s9XzUxNTkwMjA3X0ZQaDU0ODBheStzPQ.z8kBBx151INX3IclnRmysPhRgy8WaH-u58GXpoBRj3awTm4wrwV0qRGXrzRE6SEkA8V8_Y67Sokbsa_mBwShgw Digest × ³³“)u[Ü; ÑÃßµZB‘mÉ©>UŒkü\e"ÐE => First 8 bytes for previous signature × ³³“)u First 8 bytes of digest base64 encoded: 1xUFs7OTKXU= => length 12 ... Wäre es vielleicht möglich, im Log des Test Tools (XXXX_cashbox_full.json) etwas genauer auszuführen, woran die kryptographische Prüfung der Signatur scheitert?

0042_app.json.TXT 0042_cashbox_full.json.TXT

Besten Dank ...

ErichFreitag commented 7 years ago

Auf die Schnelle: ja, das Tool unterstützt mehrere Zertifikate. Tragen sie einfach den Block mit der Seriennummer mehrfach ein. In ihrer Datei ist "certificateOrPublicKeyMap" ein zweites Mal enthalten, das gehört entfernt, siehe auch A-SIT-Doku.

Was der Fehler bei der Signatur ist kann nicht ausgesagt werden - es kann nur die Gültigkeit auf ja oder nein überprüft werden.